REPORT demo_data_reference.
TYPES: BEGIN OF t_struct,
col1 TYPE i,
col2 TYPE i,
END OF t_struct.
DATA: dref1 TYPE REF TO data,
dref2 TYPE REF TO data.
FIELD-SYMBOLS: <fs1> TYPE t_struct,
<fs2> TYPE i.
CREATE DATA dref1 TYPE t_struct.
ASSIGN dref1->* TO <fs1>.
<fs1>-col1 = 1.
<fs1>-col2 = 2.
dref2 = dref1.
ASSIGN dref2->* TO <fs2> CASTING.
WRITE / <fs2>.
GET REFERENCE OF <fs1>-col2 INTO dref2.
ASSIGN dref2->* TO <fs2>.
WRITE / <fs2>.
Die Listenausgabe ist:
1
2
In diesem Beispiel werden zwei Datenreferenzvariable dref1 und dref2 deklariert. Mit dref1 wird ein strukturiertes dynamisches Datenobjekt erzeugt. Diesem werden nach der Dereferenzierung mit dem Feldsymbol <fs1>Werte zugewiesen. Nach der Zuweisung von dref1 an dref2 zeigt auch dref2 auf das strukturierte Datenobjekt. Bei der Dereferenzierung von dref2 wird ein Cast auf den elementaren Typ i des Feldsymbols <fs2>durchgeführt. Dadurch wird seine erste Komponente dem Feldsymbol zugewiesen. Dann wird mit GET REFERENCE eine Referenz auf die zweite Komponente des strukturierten Datenobjekts in dref2 gestellt und ohne Casting dereferenziert.