Dynamische Programmierung (ABAP): Unterschied zwischen den Versionen

Aus MattWiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
== Zur Laufzeit festgelegte Struktur ==
== Feldsymbole und Datenrefs ==
 
=== Dynamisch festgelegte Struktur ===
<syntaxhighlight lang="abap">
<syntaxhighlight lang="abap">
REPORT zmattdynprogwa.
REPORT zmattdynprogwa.
Zeile 27: Zeile 27:
</syntaxhighlight>
</syntaxhighlight>


== Zur Laufzeit festgelegte interner Tabelle ==
=== Dynamisch festgelegte interne Tabelle ===


<syntaxhighlight lang="abap">
<syntaxhighlight lang="abap">
Zeile 58: Zeile 58:
lr_alv->display( ).
lr_alv->display( ).
</syntaxhighlight>
</syntaxhighlight>
== RTTS / RTTI / RTTC ==
'''RTTS''': Runtime Type Services &rarr; Bieten Services für RTTI und RTTC
'''RTTI''': Runtime Type Identification &rarr; Typen von Variablen zur Laufzeit beschreiben
'''RTTC''': Runtime Type Creation &rarr; Typen von Variablen zur Lautzeit erzeugen
'''''Beispiel''''':


[[Category:ABAP]]
[[Category:ABAP]]

Version vom 2. April 2018, 15:09 Uhr

Feldsymbole und Datenrefs

Dynamisch festgelegte 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>.

Dynamisch festgelegte interne 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( ).

RTTS / RTTI / RTTC

RTTS: Runtime Type Services → Bieten Services für RTTI und RTTC

RTTI: Runtime Type Identification → Typen von Variablen zur Laufzeit beschreiben

RTTC: Runtime Type Creation → Typen von Variablen zur Lautzeit erzeugen

Beispiel: