如何动态调用Field符号

Isu*_*uru 6 sap abap

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

例如:

  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.
Run Code Online (Sandbox Code Playgroud)

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

st4*_*hoo 12

可以使用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.
Run Code Online (Sandbox Code Playgroud)

  • 官方文件:[ASSIGN COMPONENT ...](https://help.sap.com/http.svc/rc/abapdocu_752_index_htm/7.52/en-US/abapassign_mem_area_dynamic_dobj.htm#%21ABAP_ALTERNATIVE_4%404%40) (2认同)