Code: Alles auswählen.
split I_BDATARAW at I_SEPARATOR into table LT.
Code: Alles auswählen.
read Table LT assigning <lt> index 1 (oder 2 oder 3 oder ... oder).
Code: Alles auswählen.
i = 1
BEGIN OF zeile_typ
DO anzahl_spalten
i TYPE string
i = i + 1
ENDDO
END OF zeile02_typ
Code: Alles auswählen.
DATA: dyn_line TYPE REF TO data.
FIELD-SYMBOLS: <ls_data> TYPE ANY.
* Arbeitsbereich generieren
CREATE DATA dyn_line LIKE LINE OF DEINE_TABELLE.
ASSIGN dyn_line->* TO <ls_data>.
Code: Alles auswählen.
* Feldkatalog aufbauen
DO anzahl_spalten TIMES.
la_fieldcatalog-fieldname = i.
la_fieldcatalog-inttype = 'c'.
la_fieldcatalog-intlen = '32000'.
APPEND la_fieldcatalog TO lt_fieldcatalog.
i = i + 1.
ENDDO.
* Erzeugen der dynamischen internen Tabelle
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_fieldcatalog
IMPORTING
ep_table = it_externtab.
ASSIGN it_externtab->* TO <externtab>.
Code: Alles auswählen.
perform (l_form) in program (l_name) using r_oo_class.
Wozu willst du denn die Struktur dynamisch erzeugen? Was machst du denn mit den Daten, wenn sie in der dyn. erzeugten Struktur sind?pohlmann-schwarza hat geschrieben:Momentan schreibe ich die Zeilen mittels GUI_UPLOAD in eine erste Tabelle. Im nächstem Schritt würde ich die Zeilen am Trennzeichen splitten un in eine passende Workarea schreiben.
Hier sind wir bei der Frage:
Wie kann ich eine dynamische Workarea aufbauen?
Die Komponentenanzahl der Workarea ergibt sich ja erst aus der Spaltenzahl der csv-Datei. Es muss also zur Laufzeit generiert werden.
Code: Alles auswählen.
* Feldkatalog aufbauen
DO anzahl_spalten TIMES.
itxt = i.
CONCATENATE 'e' itxt INTO name.
CONDENSE name NO-GAPS.
la_fieldcatalog-fieldname = name.
la_fieldcatalog-inttype = 'c'.
la_fieldcatalog-intlen = '32000'.
APPEND la_fieldcatalog TO lt_fieldcatalog.
i = i + 1.
ENDDO.
* Erzeugen der dynamischen internen Tabelle
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_fieldcatalog
IMPORTING
ep_table = it_externtab.
ASSIGN it_externtab->* TO <externtab>.