SAP Jobsuche bei DV-Treff
Yeti67
  • Yeti67
  • SAP Forum - Profi Thema begonnen von
vor 2 Jahre
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!

wreichelt
vor 2 Jahre
Hallo,

warum machst du die Sortierung nicht im Layout ?

Gruß Wolfgang

Yeti67
  • Yeti67
  • SAP Forum - Profi Thema Starter
vor 2 Jahre
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.

wreichelt
vor 2 Jahre
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

Yeti67
  • Yeti67
  • SAP Forum - Profi Thema Starter
vor 2 Jahre
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.
unkelbach
vor 2 Jahre
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.

Yeti67
  • Yeti67
  • SAP Forum - Profi Thema Starter
vor 2 Jahre
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.
wreichelt
vor 2 Jahre
Hallo,

vielleicht hilft das weiter:

* Codingabschnitt - END-OF-SELECTION (nach Liste)

*----------------------------------------------------------------------

" %G00 - Tabelle für finale Ausgabe

str = '%G00[]'.

ASSIGN (str) TO .

LOOP AT INTO .

" hier jetzt den SORT einbauen

ENDLOOP.

ENDIF.

Gruß Wolfgang

Yeti67
  • Yeti67
  • SAP Forum - Profi Thema Starter
vor 2 Jahre
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?

wreichelt
vor 2 Jahre
Hallo,

ja das ENDIF kann raus,

Im str wird die Tabelle einfach zugewiesen.

Hatte das einfach kopiert aus einer Query, ohne Check

Gruß Wolfgang

Yeti67
  • Yeti67
  • SAP Forum - Profi Thema Starter
vor 2 Jahre
Habe es jetzt dort eingebaut. Jetzt sind aber noch ein paar Felder unbekannt (keine DATA-Anweisungen)

Rückmeldung ohne DATA-Anweisungen:

str

Entschuldige, dass ich so nachbohre, aber ich bin leider nur Gelegenheitsprogrammierer 😁

wreichelt
vor 2 Jahre
Hallo,

hier ein Beispiel mit Sort

FIELD-SYMBOLS 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 .

IF IS ASSIGNED.

SORT BY (sort_f1) (sort_f2) (sort_f3)

ASCENDING.

ENDIF.

Bestimmt wird es jetzt klarer. Für Gelegenheitsprogrammierer ist die Sache auch anspruchsvoll

Gruß Wolfgang

Yeti67
  • Yeti67
  • SAP Forum - Profi Thema Starter
vor 2 Jahre
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 .

IF IS ASSIGNED.

SORT BY (sort_f1) "(sort_f2) (sort_f3)

ASCENDING.

ENDIF.

wreichelt
vor 2 Jahre
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

Yeti67
  • Yeti67
  • SAP Forum - Profi Thema Starter
vor 2 Jahre
Read raus und sort2 und sort3 drin, aber es bleibt bei einer Zeile
wreichelt
vor 2 Jahre
Hallo,

also ich kann jetzt nicht mehr Helfen.

Alles was mir bekannt war, habe ich dazu beigetragen

Gruß Wolfgang

Yeti67
  • Yeti67
  • SAP Forum - Profi Thema Starter
vor 2 Jahre
Kein Problem, trotzdem vielen Dank!
SanduhrAnzeigeProgramm
vor 2 Jahre
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)


*... who can do field replacements in the debugger can do anything in the system

*so this check can not stop (him) anyway.

Yeti67
  • Yeti67
  • SAP Forum - Profi Thema Starter
vor 2 Jahre
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 .

IF IS ASSIGNED.

SORT BY (sort_f1) (sort_f2) (sort_f3)

ASCENDING.

ENDIF.

*

TRANSFER zaehler TO lv_file.

TRANSFER 'ENDE der Liste ' TO lv_file.

wreichelt
vor 2 Jahre
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