Field-Symbols (ABAP)
Aus MattWiki
(Weitergeleitet von Feldsymbole (ABAP))
Dieser Artikel beschreibt, wie Field-Symbols definiert werden können.
Weitere Artikel zur Definition von Field-Symbols:
- Statisch oder dynamisch: InfoProvider lesen (ABAP)
- Dynamisch: Dynamische Programmierung (ABAP)
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.