繁体   English   中英

如何动态调用字段符号

[英]How to dynamically call Field Symbols

假设我有一个分配给字段符号的标准结构。 有没有办法将变量传递给动态调用的字段符号?

例如:

  DATA: lt_mara            TYPE STANDARD TABLE OF mara WITH HEADER LINE,
        parameter_name(10) TYPE c.

  parameter_name = 'MATNR'.

  LOOP AT lt_mara ASSIGNING FIELD-SYMBOL(<fs_lt_mara>).
    WRITE: <fs_lt_mara>-(parameter_name).
  ENDLOOP.

其中parameter_name包含在mara结构中可用的列名。

可以使用 ASSIGN 指令。 下面是一个例子:

DATA:   lt_mara            TYPE STANDARD TABLE OF mara WITH HEADER LINE,
        parameter_name(10) TYPE c.

parameter_name = 'MATNR'.

FIELD-SYMBOLS: <fs_lt_mara> TYPE mara,
               <fs_value>   TYPE any.

SELECT * FROM mara UP TO 10 ROWS INTO TABLE lt_mara.

LOOP AT lt_mara ASSIGNING <fs_lt_mara>.

  ASSIGN COMPONENT parameter_name OF STRUCTURE <fs_lt_mara> TO <fs_value>.
  IF sy-subrc = 0.
    WRITE: / <fs_value>.
  ENDIF.

ENDLOOP.

我提供了另一个ASSIGN示例。 你做一次ASSIGN并做一个LOOP INTO

DATA: lt_mara  TYPE STANDARD TABLE OF mara,
      ls_mara  TYPE mara,
      lc_matnr TYPE char5 VALUE 'MATNR'.


FIELD-SYMBOLS: <ls_mara>  TYPE mara,
               <lv_value> TYPE any.

SELECT * FROM mara UP TO 10 ROWS INTO TABLE lt_mara.

ASSIGN COMPONENT lc_matnr OF STRUCTURE ls_mara TO <lv_value>.

CHECK <lv_value> IS ASSIGNED.

LOOP AT lt_mara INTO ls_mara.

    WRITE: / <lv_value>.

ENDLOOP.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM