Code: Alles auswählen.
TYPES: BEGIN OF ty_test,
festfeld1 TYPE bla,
festfeld2 TYPE blubb.
INCLUDE STRUCTURE (g_var_mit_strukturname, z.B. SFLIGHT). <-- Und genau das geht leider nicht
TYPES: END OF ty_test.
DATA: lt_tab TYPE TABLE OF ty_test.
Code: Alles auswählen.
REPORT.
CLASS lcl DEFINITION FINAL.
PUBLIC SECTION.
CLASS-METHODS: extend_structure IMPORTING is_structure TYPE any
RETURNING VALUE(rr_extended_structure) TYPE REF TO data.
ENDCLASS.
CLASS lcl IMPLEMENTATION.
METHOD extend_structure.
DATA: BEGIN OF ls_fixed_fields,
hugo1 TYPE syuname,
hugo2 TYPE sydatum,
hugo3 TYPE syuzeit,
END OF ls_fixed_fields.
DATA: lt_component_table TYPE abap_component_tab,
lo_descr_extended TYPE REF TO cl_abap_structdescr.
FIELD-SYMBOLS: <ls_component> LIKE LINE OF lt_component_table.
*--------------------------------------------------------------------*
* Fixe Struktur am Anfang
*--------------------------------------------------------------------*
APPEND INITIAL LINE TO lt_component_table ASSIGNING <ls_component>.
<ls_component>-name = ''. " nicht extra benannt, da als Include eingebunden
<ls_component>-type ?= cl_abap_structdescr=>describe_by_data( ls_fixed_fields ).
<ls_component>-as_include = 'X'.
<ls_component>-suffix = ''. " kein suffix
*--------------------------------------------------------------------*
* Variable Struktur hernach
*--------------------------------------------------------------------*
APPEND INITIAL LINE TO lt_component_table ASSIGNING <ls_component>.
<ls_component>-name = ''. " nicht extra benannt, da als Include eingebunden
<ls_component>-type ?= cl_abap_structdescr=>describe_by_data( is_structure ).
<ls_component>-as_include = 'X'.
<ls_component>-suffix = ''. " kein suffix
lo_descr_extended = cl_abap_structdescr=>create( lt_component_table ).
CREATE DATA rr_extended_structure TYPE HANDLE lo_descr_extended.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA: ls_data TYPE sflight,
lr_data TYPE REF TO data.
FIELD-SYMBOLS: <gs_data> TYPE any,
<gt_data> TYPE STANDARD TABLE.
lr_data = lcl=>extend_structure( ls_data ).
ASSIGN lr_data->* TO <gs_data>.
CREATE DATA lr_data LIKE STANDARD TABLE OF <gs_data>.
ASSIGN lr_data->* TO <gt_data>.
APPEND <gs_data> TO <gt_data>.
BREAK-POINT.