|
Hallo zusammen, zur Zeit erstelle ich eine Query, wo zeilenweise eine Liste aufgebaut wird. Dieser wird dann am Schluß in eine CSV-Tabelle exportiert und abgespeichert. Soweit so gut, aber diese Liste soll noch nach einem Feld sortiert werden. Und das klappt nicht.
SORT: itab BY betrag. READ TABLE itab INTO itab_zeile. TRANSFER itab_zeile TO lv_file. BREAK-POINT. TRANSFER zaehler TO lv_file. TRANSFER 'ENDE der Liste ' TO lv_file.
Und wichtig! Es ist mit einem Infoset aufgebaut mit ein paar ABAP-Schnipsel.
Danke im vorraus!
|
|
|
|
|
Hallo,
warum machst du die Sortierung nicht im Layout ?
Gruß Wolfgang
|
|
|
|
|
Hallo, war auch meine Idee, leider wird nur die ALV-Ausgabe und die interne Tabelle (kontrolliert über den Debugger) sortiert. Die Exceldatei (sprich der Export) leider nicht.
|
|
|
|
|
Hallo,
ich lasse mir die sortierte Tabelle im ALV anzeigen, dann starte ich den Excel Download , werden da die Daten nicht so übernommen wie im ALV angezeigt ?
Gruß Wolfgang
|
|
|
|
|
Doch, ich hätte noch erwähnen sollen, dass das Ganze hauptsächlich als Hintergrundjob laufen soll. Der manuelle Aufruf, also mit ALV nur ab und zu.
|
|
|
|
Beiträge: 163  Wohnort: Hessen
|
Vielleicht ein etwas naiver Ansatz.
Innerhalb der Grundliste (SQ01) kann ich über die Werkzeugleiste Sortieren einzelne Felder in die Werkzeugleiste Sortierfelder ziehen. Damit ist eine Sortierreihenfolge unabhängig vom Layout vorgegeben und sollte eigentlich auch im Ausgabeformat Datei entsprechend sortiert sein. Zumindest bei einen schnellen Test war dieses der Fall.
Die Werkzeugleiste ist per STRG + F7 in der Grundliste einsehbar und es können die Felder aus dem Beispieldatensatz direkt auf die Feldliste Sortierfelder gezogen werden.
|
|
|
|
|
Danke für den Tipp, leider nicht mit Erfolg gekrönt. Die ALV-Liste hat zwar die Sortierung aber die Exportliste hat danach nur noch einen Datensatz.
|
|
|
|
|
Hallo,
vielleicht hilft das weiter:
* Codingabschnitt - END-OF-SELECTION (nach Liste) *---------------------------------------------------------------------- " %G00 - Tabelle für finale Ausgabe
str = '%G00[]'. ASSIGN (str) TO <g00>.
LOOP AT <g00> INTO <s_g00>.
" hier jetzt den SORT einbauen
ENDLOOP. ENDIF.
Gruß Wolfgang
|
|
|
|
|
Hallo,
mein Coding oben steht in "End-of-Selection.
str? mein Lv_file?
Am Ende Deines Coding steht ein ENDIF. Muss nicht auch ein if irgendwo stehen?
|
|
|
|
|
Hallo,
ja das ENDIF kann raus, Im str wird die Tabelle einfach zugewiesen.
Hatte das einfach kopiert aus einer Query, ohne Check
Gruß Wolfgang
|
|
|
|
|
Habe es jetzt dort eingebaut. Jetzt sind aber noch ein paar Felder unbekannt (keine DATA-Anweisungen) Rückmeldung ohne DATA-Anweisungen: <G00> <s_g00> str Entschuldige, dass ich so nachbohre, aber ich bin leider nur Gelegenheitsprogrammierer
|
|
|
|
|
Hallo,
hier ein Beispiel mit Sort
FIELD-SYMBOLS <fs_dtab> TYPE STANDARD TABLE. DATA: sort_f1 TYPE fieldname, sort_f2 TYPE fieldname, sort_f3 TYPE fieldname.
In INITIALIZATION Event write the following code. sort_f1 = 'VBAK-VBELN'. sort_f2 = 'VBAK-ERDAT'. sort_f3 = 'VBAK-ERZET'.
In END-OF-SELECTION (after list) Event write the following code. ASSIGN ('%G00[]') TO <fs_dtab>. IF <fs_dtab> IS ASSIGNED. SORT <fs_dtab> BY (sort_f1) (sort_f2) (sort_f3) ASCENDING. ENDIF.
Bestimmt wird es jetzt klarer. Für Gelegenheitsprogrammierer ist die Sache auch anspruchsvoll
Gruß Wolfgang
|
|
|
|
|
Wir kommen der Sache näher. - Query läuft, kein Absturz - ALV Grid wird nach Feld (Betrag) sortiert, wunderbar!
Aber die Exportdatei hat nur eine Zeile, das eingebaute Feld "Zähler" sagt aber, dass es eigentlich 63 Zeilen haben sollte. Diese werden aber unterschlagen.
Das ist das jetztige Coding aus END of SELECTION
READ TABLE itab INTO itab_zeile. TRANSFER itab_zeile TO lv_file. *BREAK-POINT. TRANSFER zaehler TO lv_file. TRANSFER 'ENDE der Liste ' TO lv_file. * *In END-OF-SELECTION (after list) Event write the following code. ASSIGN ('%G00[]') TO <fs_dtab>. IF <fs_dtab> IS ASSIGNED. SORT <fs_dtab> BY (sort_f1) "(sort_f2) (sort_f3) ASCENDING. ENDIF.
|
|
|
|
|
Hallo,
verstehe es nicht. Die Query ermittelt Daten, für was ist der READ .... ? Und natürlich muss fs_dtab alle Spalten enthalten nicht nur sort_f1.....
Gruß Wolfgang
|
|
|
|
|
Read raus und sort2 und sort3 drin, aber es bleibt bei einer Zeile
|
|
|
|
|
Hallo,
also ich kann jetzt nicht mehr Helfen.
Alles was mir bekannt war, habe ich dazu beigetragen
Gruß Wolfgang
|
|
|
|
|
Kein Problem, trotzdem vielen Dank!
|
|
|
|
|
In Unwissenheit über die Gesamtheit der Programmierung und wie Wolfgang ja auch schon geschrieben hat, was soll der Read und wo ist der Loop?
Natürlich erhältst du mit dem hier geposteten Coding nur eine Zeile. Wie gesagt in Unwissenheit was da noch so programmeirt ist (davor, danach, sonst wo) |
Frag dich nach jedem Post, "was würden Dunning & Kruger dazu sagen?" |
|
|
|
|
Guten Morgen,
der Read ist nach dem letzten Post raus, aber ich habe noch keinen Loop. Habe zwar gestern mal mit einem gespielt, kam aber kein vernünftiges Ergebnis raus. Habe wahrscheinlich an der falschen Stelle in eingebaut. Wo käme er sinngemäß hin? Und wie ist das Coding?
TRANSFER itab_zeile TO lv_file. BREAK-POINT. *In END-OF-SELECTION (after list) Event write the following code. ASSIGN ('%G00[]') TO <fs_dtab>. IF <fs_dtab> IS ASSIGNED. SORT <fs_dtab> BY (sort_f1) (sort_f2) (sort_f3) ASCENDING. ENDIF. * TRANSFER zaehler TO lv_file. TRANSFER 'ENDE der Liste ' TO lv_file.
|
|
|
|
|
Hallo,
in der Tabelle %G00 müssen bereits alle Selektierten Daten vorhanden sein. Das kann ja an dem Break-Point mit dem Debugger geprüft werden.
vor dem Transfer ist ja bestimmt auch ein OPEN....
OPEN DATASET file FOR OUTPUT IN BINARY MODE. TRANSFER ...... TO file. ENDSELECT.
CLOSE DATASET file.
Gruß Wolfgang
|
|
|
|
Das Forum wechseln
Du kannst keine neue Themen in diesem Forum eröffnen.
Du kannst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge nicht löschen.
Du darfst deine Beiträge nicht editieren.
Du kannst keine Umfragen in diesem Forum erstellen.
Du kannst nicht an Umfragen teilnehmen.