Ich habe eine interne Tabelle die X-Felder enthält. Diese sollen nun in eine Datei geschrieben werden, getrennt mit dem | Zeichen. Da in der Tabelle ziemlich viele Felder enthalten sein können, habe ich keine Lust diese alle aufzulisten und per CONCATENATE zusammenzufügen? gibt es hier eine elegantere Lösung. Per Fieldcut und loop finde ich auch nicht so gelungen, da ich dann pro DS eine Schleife von bis zu 200 Durchgängen hätte?bei einer DS Anzahl von ~150.000 ist da nicht unbedingt schnell oder?
am einfachsten wahrschienlich mit einem Download als Tabelle.
Das das im Batch nicht immer geht und die Daten auch mal auf den Server abgelegt werden sollen wäre folgendes die einfachste Lösung:
Tabellendefinition anpassen in der Art:
data: begin of g_daten,
name(50) type c,
fil01 type c value '|',
str(30) type c,
fil02 type c value '|',
:
end of g_daten.
Nun entweder die Struktur immer auf die aktuelle Zeile kopieren und anschließend deine Felder mit move-corresponding füllen.
Ob du die Aufbreitung in einen eigenen LOOP für die Ausgabe machst oder die Tabelle prinzipiell so aufbaust ist nun dir überlassen.
Sofern du mit Transfer arbeitest, würde ich diese Aufbereitung zum Zeitpunkt der Ausgabe machen.
Da aber die Tabellen z.B. über 200 Felder besitzen ist der Aufwand ja nicht ohne. Zudem würde ich alle Felder gerne in eine Variable schieben um sie dann noch mit condense etwas zusammenzustauchen.
c0lt.seavers hat geschrieben: Per Fieldcut und loop finde ich auch nicht so gelungen, da ich dann pro DS eine Schleife von bis zu 200 Durchgängen hätte?bei einer DS Anzahl von ~150.000 ist da nicht unbedingt schnell oder?
Na und....
Egal wie du vorgehst ( oder via Download vorgehen lässt ) - im Endeffekt wird es immer darauf hinauslaufen alle Felder aller Zeilen zu betrachten und hintereinanderzuhängen.
Einfacher als mit einem Loop über den Feldkatalog wäre allerdings ein ASSIGN sy-index of ...
Probier das doch mal aus - m.E. sollte die Laufzeit da kein Problem sein - eher schon, dass du dir eine 2. Tabelle mit etwa Speicherbedarf in derselben Größenordnung aufbaust.