Skip to content

Instantly share code, notes, and snippets.

@Gong-Bao-Chicken
Created February 6, 2020 15:53
Show Gist options
  • Save Gong-Bao-Chicken/0a7285ebf8be3f2f8f4b53af1642a28a to your computer and use it in GitHub Desktop.
Save Gong-Bao-Chicken/0a7285ebf8be3f2f8f4b53af1642a28a to your computer and use it in GitHub Desktop.
Dynamischen neuen Typen aus Tabellen Referenz oder / und Struktur erzeugen
FIELD-SYMBOLS: <fs_data> type any table,
<fs_result> type any.
DATA : ref_table_des TYPE REF TO cl_abap_tabledescr,
lt_component_descriptions TYPE cl_abap_structdescr=>component_table.
* Describe Input Table
DATA: lo_input_tabdescr TYPE REF TO cl_abap_tabledescr,
lo_input_strdescr type ref to cl_abap_structdescr.
lo_input_tabdescr ?= cl_abap_typedescr=>describe_by_data_ref( ir_data ). "ir_data is type ref to data from method input.
ASSIGN ir_data->* TO <fs_data>.
* Describe Input as Structure
lo_input_strdescr ?= lo_input_tabdescr->get_table_line_type( ).
data(lt_lo_input_table_components) = lo_input_strdescr->get_components( ).
* Describe Structure 'Treev_item'
DATA: lo_strucdescr TYPE REF TO cl_abap_structdescr.
lo_strucdescr ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( 'StructureName' ).
data(lt_sap_tree_item_components) = lo_strucdescr->get_components( ).
* Create new Datatype
DATA: lt_merged_components_list type CL_ABAP_STRUCTDESCR=>COMPONENT_TABLE.
Append lines of lt_sap_tree_item_components to lt_merged_components_list.
Append lines of lt_lo_input_table_components to lt_merged_components_list.
DATA:
TYPE_NEW_STR TYPE REF TO CL_ABAP_STRUCTDESCR,
TYPE_NEW_TAB TYPE REF TO CL_ABAP_TABLEDESCR,
DREF TYPE REF TO DATA.
TYPE_NEW_STR = CL_ABAP_STRUCTDESCR=>CREATE( lt_merged_components_list ).
TYPE_NEW_TAB = CL_ABAP_TABLEDESCR=>CREATE(
P_LINE_TYPE = TYPE_NEW_STR
P_TABLE_KIND = CL_ABAP_TABLEDESCR=>TABLEKIND_STD
P_UNIQUE = ABAP_FALSE
).
FIELD-SYMBOLS: <itab> type any.
CREATE DATA DREF TYPE HANDLE TYPE_NEW_TAB.
ASSIGN DREF->* TO <ITAB>.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment