代码之家  ›  专栏  ›  技术社区  ›  Isuru

如何动态调用字段符号

  •  6
  • Isuru  · 技术社区  · 7 年前

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

    如:

      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.
    

    何处 参数名 包含在 玛拉 结构。

    2 回复  |  直到 7 年前
        1
  •  12
  •   st4hoo    7 年前

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

    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.
    
        2
  •  1
  •   Haojie    7 年前

    我提供了另一个例子 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.
    
    推荐文章