Field-Symbols (ABAP): Unterschied zwischen den Versionen
Aus MattWiki
Matt (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Umgang mit FIELD-SYMBOLS: Anlegen von FIELD-SYMBOL für eine interne Tabelle als Ersatz für eine Arbeitsstruktur: <syntaxhighlight lang="abap"> FIELD-SYMB…“) |
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
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: | Anlegen von FIELD-SYMBOL für eine interne Tabelle als Ersatz für eine Arbeitsstruktur: | ||
Zeile 6: | Zeile 13: | ||
FIELD-SYMBOLS: <result_fields> LIKE LINE OF result_package. | FIELD-SYMBOLS: <result_fields> LIKE LINE OF result_package. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== FIELD-SYMBOLS mit statischem Tabellentyp == | |||
Strukturdefinition: | |||
<syntaxhighlight lang="abap"> | |||
TYPES: | |||
BEGIN OF ls_fzgnr, | |||
fzgnr TYPE /bic/oifzgnr, | |||
END OF ls_fzgnr. | |||
</syntaxhighlight> | |||
Wenn Struktur nur ein Feld hat, dann ist dies Inline möglich: | |||
<syntaxhighlight lang="abap"> | |||
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. | |||
</syntaxhighlight> | |||
Reservierung von Speicher für Rückgabewerte von Funktionsbausteinen vom Typ STANDARD TABLE | |||
<syntaxhighlight lang="abap"> | |||
" 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>. | |||
</syntaxhighlight> | |||
== Werte aus Referenzvariablen abrufen == | |||
<syntaxhighlight lang="abap"> | |||
ASSIGN->* to <fieldref> | |||
</syntaxhighlight> | |||
Sollte bei einzelnen Feldwerten klappen und auch bei Strukturen: | |||
=== Abrufen aus einzelnen Variablen === | |||
<syntaxhighlight lang="abap"> | |||
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. | |||
</syntaxhighlight> | |||
=== 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. | |||
<syntaxhighlight lang="abap"> | |||
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. | |||
</syntaxhighlight> | |||
[[Category:ABAP]] | [[Category:ABAP]] |
Aktuelle Version vom 24. Juli 2019, 12:19 Uhr
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.