Dynamische Programmierung (ABAP): Unterschied zwischen den Versionen
Aus MattWiki
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
== Programm mit Struktur == | == Dynamisches Programm mit Struktur == | ||
<syntaxhighlight lang="abap"> | <syntaxhighlight lang="abap"> | ||
Zeile 25: | Zeile 25: | ||
WRITE <ls_table_line>. | WRITE <ls_table_line>. | ||
</syntaxhighlight> | |||
== Dynamisches Programm mit interner Tabelle == | |||
<syntaxhighlight lang="abap"> | |||
REPORT zmattdynprogitab. | |||
PARAMETERS: pa_tab TYPE string. | |||
" Untypisierte Datenreferenz | |||
DATA: lr_table TYPE REF TO data. | |||
< | " Generisches Feldsymbol für interne Tabelle | ||
FIELD-SYMBOLS: <lt_table> TYPE table. | |||
" Reservieren von Hauptspeicher für eine interne | |||
" Tabelle passend zum Typ der Datenreferenz. | |||
CREATE DATA lr_table TYPE table of (pa_tab). | |||
ASSIGN lr_table->* TO <lt_table>. | |||
SELECT * FROM (pa_tab) INTO TABLE <lt_table>. | |||
DATA: lr_alv TYPE REF TO cl_salv_table. | |||
cl_salv_table=>factory( | |||
IMPORTING | |||
r_salv_table = lr_alv | |||
CHANGING | |||
t_table = <lt_table> ). | |||
lr_alv->display( ). | |||
</syntaxhighlight> | |||
[[Category:ABAP]] | [[Category:ABAP]] |
Version vom 2. April 2018, 14:59 Uhr
Dynamisches Programm mit Struktur
REPORT zmattdynprogwa.
DATA: lv_table_name TYPE string VALUE 'SCARR'.
" Datenreferenz erstellen. Diese kann auf einen typisierten oder
" untypisierten Datenspeicher zeigen. Hier: untypisiert.
DATA: lr_table_line TYPE REF TO data.
" Generisches Feldsymbol ohne initiale Typisierung
FIELD-SYMBOLS: <ls_table_line> TYPE any.
" Reservieren von Hauptspeicher passend zum Typ der Datenreferenz.
CREATE DATA lr_table_line TYPE (lv_table_name).
" Da das Feldsymbol vom Type Any ist, muss im Assign der Zusatz
" Casting Type eingefügt werden, der das Feldsymbol typisiert.
ASSIGN lr_table_line->* TO <ls_table_line> CASTING TYPE (lv_table_name).
" SELECT SINGLE gibt genau eine Zeile für eine Struktur zurück
SELECT SINGLE * FROM (lv_table_name) INTO <ls_table_line>
WHERE mandt = '001' AND carrid = 'BA'.
WRITE <ls_table_line>.
Dynamisches Programm mit interner Tabelle
REPORT zmattdynprogitab.
PARAMETERS: pa_tab TYPE string.
" Untypisierte Datenreferenz
DATA: lr_table TYPE REF TO data.
" Generisches Feldsymbol für interne Tabelle
FIELD-SYMBOLS: <lt_table> TYPE table.
" Reservieren von Hauptspeicher für eine interne
" Tabelle passend zum Typ der Datenreferenz.
CREATE DATA lr_table TYPE table of (pa_tab).
ASSIGN lr_table->* TO <lt_table>.
SELECT * FROM (pa_tab) INTO TABLE <lt_table>.
DATA: lr_alv TYPE REF TO cl_salv_table.
cl_salv_table=>factory(
IMPORTING
r_salv_table = lr_alv
CHANGING
t_table = <lt_table> ).
lr_alv->display( ).