Code: Alles auswählen.
data:
ld_group type string,
lt_vbrp type standard table of vbrp with default key.
ld_group = 'VBELN'.
SELECT * FROM vbrp INTO TABLE lt_vbrp GROUP BY (ld_group). "Die erste Rechnungsposition
clear ld_group.
SELECT * FROM vbrp INTO TABLE lt_vbrp GROUP BY (ld_group). "Alle Rechnungspositionen
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Tobias88
Wenn du deine Daten im ALV-Grid ausgibst, kann der Anwender doch sogar selbst nach Material gruppieren. Das kann als Variante abgespeichert werden und steht auf Knopfdruck zur Verfügung.Tobias88 hat geschrieben: Nun will ich dem Benutzer per Radio-Button die Wahl lassen, ob die Ausgabe nach Material gruppiert wird oder nicht.
z.B. mit LOOP AT und Gruppenstufenverarbeitung wenn man nur auf ein Feld die Gruppierung machtTobias88 hat geschrieben:Kannst du nochmal erläutern, wie du die Gruppierung "per Hand" programmierst? Mit entsprechend mehr internen Tabellen?
Code: Alles auswählen.
LOOP AT ... ASSIGNING <ls_line>
AT NEW feld
* Beginn einer neuen Gruppe
ENDAT.
* Verarbeitung der Daten
ENDLOOP.
Code: Alles auswählen.
LOOP AT ... ASSIGNING <ls_line>.
IF ls_line-feld NE <ls_line>-feld.
* Beginn einer neuen Gruppe
ls_line = <ls_line>.
ENDIF.
* Verarbeitung der Daten
ENDLOOP.
Stimmt!Tobias88 hat geschrieben:Und noch eine Frage (wenn hierzu keine Antwort, suche ich nochmal woanders):
Ich habe gelesen, dass nicht nur GROUP BY sondern auch JOINS den SAP-Puffer unterwandern.
Wie so oft, gibt es hier leider keine klare Aussage. Je nachdem wie die Datenstruktur aufgebaut ist, ist seitens Datenbank entweder ein JOIN oder eine Einzel Abfrage besser.Tobias88 hat geschrieben:Ich nutze Joins -.- (bei allen bisherigen SQL-Lehrveranstaltungen war ein Join immer Mittel der Wahl)
Gibt es dazu andere, perfomantere Vorgehensweisen, wie z.B. jeden Inhalt der zu "joinenden" Tabellen in interne Tabellen laden und dann weiterverarbeiten?
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Tobias88
Betrifft das jetzt nur den COLLECT Befehlt oder auch andere?a-dead-trousers hat geschrieben:Ich muss zu meiner Schande gestehen, dass sich mir bis heute die Sinnhaftigkeit/Funktionsweise des COLLECT nicht erschlossen hat.
Ich lass die Gruppierungen, sofern sich dadurch die Datenmenge die zwischen DB und Appl.Server übertragen wird signifikant verringern lässt, auf der Datenbank ausführen.
Für alle anderen Fälle, auch weil es man so weitaus flexibler ist, programmiere ich Gruppierungen immer selbst per Hand.
Dauert zwar länger, aber ich weiß genau was passiert und man kann es auch besser debuggen.
Nur meine 2 Cent als Anmerkung.
(Will hier auf keinen Fall einen Flamewar starten )