Variablen generisch typisieren mit Create Data
Siehe Dynamische/Generische Programmierung.
Siehe Kategorie: Dynamische/Generische Programmierung.
Es besteht manchmal die Notwendigkeit Variablen anzulegen, die erst während der Laufzeit des Programms typisiert werden. Eine Möglichkeit dafür ist der Befehl CREATE DATA. Die Anweisung CREATE DATA erzeugt ein anonymes Datenobjekt und weist die Referenz auf das Datenobjekt der Referenzvariablen dref zu.
Hier gibt es einen Parameter, in dem eine Tabelle eingetragen wird. Das Feldsymbol <FS_TABLE> wird in Abhängigkeit von diesem Parameter typisiert und kann dann entsprechende Tabelleninhalte aufnehmen
Parameters: p_tab type TABNAME16. Data: dref type ref to data. FIELD-SYMBOLS: <fs_table> type standard table, <fs_wa> type any, <fs_field> type any. * mit (p_tab) wird auf Inhalt der Variablen typisiert CREATE DATA dref TYPE STANDARD TABLE OF (p_tab). * Assign Feldsymbol durch Dereferenzierung des Zeigers DREF ASSIGN dref->* TO <fs_table>. * Selektion aller Daten der Datenbanktabelle in die interne Tabelle Select * from (p_tab) into <fs_table>.
Nun wird die interne Tabelle <FS_TABLE> Zeile für Zeile und Feld für Feld ausgelesen. Da die Felder der Tabelle nicht statisch bekannt sind, können sie auch nicht statisch angesprochen werden.
loop at <fs_table> assigning <fs_wa>. do. assign component sy-index of structure <fs_wa> to <fs_field>. if sy-subrc <> 0. exit. else. ... endif. enddo. endloop.