Field-Symbols (ABAP)

Dieser Artikel beschreibt, wie Field-Symbols definiert werden können.

Weitere Artikel zur Definition von Field-Symbols:

Definition FIELD-SYMBOLS

Anlegen von FIELD-SYMBOL für eine interne Tabelle als Ersatz für eine Arbeitsstruktur:

  FIELD-SYMBOLS: <result_fields> LIKE LINE OF result_package.

FIELD-SYMBOLS mit statischem Tabellentyp

Strukturdefinition:

  TYPES:
    BEGIN OF ls_fzgnr,
      fzgnr TYPE /bic/oifzgnr,
    END OF ls_fzgnr.

Wenn Struktur nur ein Feld hat, dann ist dies Inline möglich:

  TYPES: l_tt_fzgnr TYPE   "STANDARD TABLE OF ls_fzgnr.
    STANDARD TABLE OF /bic/oifzgnr WITH NON-UNIQUE key TABLE_LINE.
  
  FIELD-SYMBOLS: <lt_fzgnr> TYPE STANDARD TABLE,
                 <ls_fzgnr> TYPE LINE OF l_tt_fzgnr.

Reservierung von Speicher für Rückgabewerte von Funktionsbausteinen vom Typ STANDARD TABLE

  " Create appropriate work area for info provider results
  DATA: lr_fzgnr TYPE REF TO data.
  CREATE DATA lr_fzgnr TYPE l_tt_fzgnr.
  ASSIGN lr_fzgnr->* TO <lt_fzgnr>.


Werte aus Referenzvariablen abrufen

  ASSIGN->* to <fieldref>

Sollte bei einzelnen Feldwerten klappen und auch bei Strukturen:

Abrufen aus einzelnen Variablen

REPORT z_reftodata_to_string.

field-symbols: <lv_low> type string.

DATA: lr_data  TYPE REF TO data,
      lv_low   TYPE sstring,
      lt_range TYPE rrrange.

START-OF-SELECTION.

  create data lr_data type string.

  assign lr_data->* to <lv_low>.

  lv_low = <lv_low>.

  write: 'Ergebnis ', lv_low.


Abrufen aus Feldern eine Tabelle

Der Wert lt_rangepsp-low soll gefüllt werden, aus der Tabelle it_change_log, die dynamisch typisiert ist und an die Methode übergeben wird. Ihr Typ ist also zum Zeitpunkt der Programmierung nicht bekannt.

    FIELD-SYMBOLS: <it_change_log>    TYPE fpmgb_s_changelog,
                   <lv_low>           TYPE /bic/oizpspe.

    DATA: lt_rangepsp  TYPE TABLE OF rrrange,
          lr_data      TYPE REF TO data,
          lv_string    TYPE sstring.

    LOOP AT it_change_log ASSIGNING <it_change_log> WHERE name = 'ZPSPE_K'.
      CREATE DATA lr_data TYPE /bic/oizpspe.

      lr_data = <it_change_log>-new_value.
      ASSIGN lr_data->* TO <lv_low>.

      lv_string = <lv_low>.
      APPEND VALUE rrrange( sign = 'I'
                            opt  = 'EQ'
                            low  = lv_string ) TO lt_rangepsp.

    ENDLOOP.