Variablen zur Laufzeit erstellen (Feldsymbolen, Referenzen, Schleife)

Aus SAP Wiki ツ

Es kommt vor, dass Variablen erst zur Laufzeit erstellt werden sollen, die einem Feldsymbol zugeordnet werden und nach Vearbeitung zu einer Referenz gewandelt wird, die Methoden mitgegeben werden können.

So ist möglich dynamisch mit Variablen, Strukturen oder Tabellen zuarbeiten.

Struktur zur Laufzeit und Verarbeiting in LOOP

  DATA: str_name     TYPE string,
        line         TYPE REF TO data,
        error_occurs TYPE abap_boolean,
        r_structure TYPE REF TO data.
  FIELD-SYMBOLS:  <structure> TYPE any.
 
  str_name = get_structure( ).
  CREATE DATA line TYPE (str_name).
  ASSIGN line->* TO <structure>.
 
 LOOP AT it_splitted_data_colums ASSIGNING FIELD-SYMBOL(<splitted_data>).
    ASSIGN COMPONENT sy-tabix OF STRUCTURE <structure> TO FIELD-SYMBOL(<field>).
    IF sy-subrc = 0.
      <field> = <splitted_data>.
    ENDIF.
  ENDLOOP.
 
  GET REFERENCE OF <structure> INTO r_structure.
  rs_converted_data_col = r_structure.

Der Rückgabe- oder Exportparameter in der Methode könnte wie folgt aussehen: Parameter: value( RS_CONVERTED_DATA_COL ) TYPE REF TO DATA

Der Parameter, wo die Methode aufgerufen wird, wiefolgt: RECEIVING rs_converted_data_col = DATA(build_struc)

Die Referenz wird einem Feldsymbol assignt, wo die Methode aufgerufen wird und z.B. einem Feldsymbol mit TYPE STANDARD TABLE übergeben:

 FIELD-SYMBOLS:  <struc_tab> TYPE STANDARD TABLE.
 FIELD-SYMBOLS:  <structure> TYPE any.
 DATA:lv_line         TYPE REF TO data.

 DATA(lv_str_name) = 'ZZPO_HEADER'.
 CREATE DATA lv_line TYPE TABLE OF (lv_str_name).
 ASSIGN lv_line->* TO <struc_tab>.

 ASSIGN build_struc->* TO <structure>.
 APPEND <structure> TO <struc_tab>.