praktikanten machen sich dafür immer gutralf.wenzel hat geschrieben: Natürlich weiß ich, wie man sowas anlegt - ich weiß auch, wie man mit Excel so ellenlange data-Blöcke beschleunigt bauen könnte. Kennt jemand vielleicht Strukturen, die das schon liefern? 1:1-"Kopien" dieser Tabellenstrukturen, aber halt mit Char-Feldern?
Mir ist immer noch nicht ganz klar was genau du suchst: Sollen die Strukturen im DDIC angelegt werden oder brauchst du einen "Quelltextgenerator" für die TYPES/DATA-Anweisung, oder ...? Welche Ausgabelänge sollen die C-Felder haben interne/externe?ralf.wenzel hat geschrieben:Sieht halt nicht elegant aus....
Code: Alles auswählen.
REPORT ztest.
DATA: gt_data TYPE TABLE OF dd03m.
FIELD-SYMBOLS: <gs_data> TYPE dd03m.
PARAMETERS: p_tab TYPE dd03m-tabname.
PARAMETERS: rb_int RADIOBUTTON GROUP rb1,
rb_ext RADIOBUTTON GROUP rb1.
START-OF-SELECTION.
SELECT *
FROM dd03m
INTO TABLE gt_data
WHERE tabname = p_tab
AND ddlanguage = sy-langu
ORDER BY position.
LOOP AT gt_data ASSIGNING <gs_data>.
AT FIRST.
WRITE: / 'TYPES: BEGIN OF TYS_' NO-GAP, p_tab NO-GAP, ','.
ENDAT.
CASE 'X'.
WHEN rb_ext.
WRITE: / ' ', <gs_data>-fieldname, 'TYPE c LENGTH', <gs_data>-outputlen NO-GAP NO-ZERO, ','.
WHEN rb_int.
WRITE: / ' ', <gs_data>-fieldname, 'TYPE c LENGTH', <gs_data>-leng NO-GAP NO-ZERO, ','.
ENDCASE.
AT LAST.
WRITE: / 'TYPES: END OF TYS_', p_tab NO-GAP, '.'.
ENDAT.
ENDLOOP.
Code: Alles auswählen.
REPORT ztest.
DATA: gt_data TYPE TABLE OF dd03m.
FIELD-SYMBOLS: <gs_data> TYPE dd03m.
DATA:
gr_table_handle TYPE REF TO data,
go_tabledescr TYPE REF TO cl_abap_tabledescr,
gr_struct_handle TYPE REF TO data,
go_strucdescr TYPE REF TO cl_abap_structdescr,
gs_component TYPE abap_componentdescr,
gt_component TYPE abap_component_tab,
gv_length TYPE i.
FIELD-SYMBOLS:
<dyn_struct> TYPE ANY,
<dyn_tab> TYPE ANY TABLE.
PARAMETERS: p_tab TYPE dd03m-tabname.
PARAMETERS: rb_int RADIOBUTTON GROUP rb1,
rb_ext RADIOBUTTON GROUP rb1.
START-OF-SELECTION.
SELECT *
FROM dd03m
INTO TABLE gt_data
WHERE tabname = p_tab
AND ddlanguage = sy-langu
ORDER BY position.
* Struckturbeschreibung aufbauen
LOOP AT gt_data ASSIGNING <gs_data>.
gs_component-name = <gs_data>-fieldname.
CASE 'X'.
WHEN rb_int.
gv_length = <gs_data>-leng.
WHEN rb_ext.
gv_length = <gs_data>-outputlen.
ENDCASE.
gs_component-type = cl_abap_elemdescr=>get_c( p_length = gv_length ).
APPEND gs_component TO gt_component.
ENDLOOP.
* Structur Handle für Create Data
go_strucdescr = cl_abap_structdescr=>create( gt_component ).
* Tabellen Handle für Create Data
go_tabledescr ?= cl_abap_tabledescr=>create( p_line_type = go_strucdescr ).
* Structur erzeugen und dereferenzieren
CREATE DATA gr_struct_handle TYPE HANDLE go_strucdescr.
ASSIGN gr_struct_handle->* TO <dyn_struct>.
* Tabelle erzeugen und dereferenzieren
CREATE DATA gr_table_handle TYPE HANDLE go_tabledescr.
ASSIGN gr_table_handle->* TO <dyn_tab>.
* <dyn_tab> und <dyn_struct> stehen dann für die weitere Bearebitung zur Verfügung....