This is a test message to test the length of the message box.
Login
ABAP Tipp Loop at Group
Erstellt von Software-Heroes

ABAP Tipp - Loop mit Gruppen

Manchmal möchte man gewisse Gruppen einer ermittelten Menge an Daten abarbeiten. Mit dem heutigen Befehl wollen wir dir eine einfach Methode aus dem Standard zeigen.

Werbung

Wenn die ermittelten Daten aus der Datenbank strukturiert in Gruppen abgearbeitet werden sollen, gibt es verschiedene Wege dies zu tun. Einmal könnte man mit einer zweiten Tabelle arbeiten, die man soweit verdichtet auf die Kombinationen die man abdecken möchte. Oder man nimmt sich den von SAP vorgesehenen Weg und arbeitet über Gruppen, die man in einem Loop einfach verarbeiten kann.

Was man dabei beachten sollte und wie die jeweilige Variante funktioniert, werden wir dir heute kurz schildern und an ein paar Beispielen vorstellen.

 

Freie Verarbeitung

Bei einer freien Verarbeitung nach eigenen Methoden, gibt es sicherlich etliche Varianten, wie man mit den Daten umgehen kann und wie man sich selbst Gruppen bilden kann. Wir wollen dir an dieser Stelle eine unserer Methoden vorstellen.

Im ersten Schritt bauen wir uns eine neue Tabelle aus den Daten auf, die wir entsprechend nach den Gruppen sortieren und verdichten. In unserem Beispiel nehmen wir die Buchungskreise, die wir nach Währung und Land sortieren, dann die doppelten Einträge auf dieser Basis entfernen.


" Bildung der Gruppe
DATA(lt_group) = lt_t001.
SORT lt_group BY waers land1.
DELETE ADJACENT DUPLICATES FROM lt_group COMPARING waers land1.

 

Dann kannst du auch schon mit der Verarbeitung starten. Wir arbeiten die Daten pro Gruppe ab, dafür kann in der äußeren Schleife noch eine gewisse Vor- und Nacharbeit durchgeführt werden. In der inneren Schleife kann mit den Daten gearbeitet werden.


LOOP AT lt_group ASSIGNING FIELD-SYMBOL(<ls_group>).
  " ... vor der Verarbeitung

  LOOP AT lt_t001 ASSIGNING FIELD-SYMBOL(<ls_t001>)
   WHERE waers = <ls_group>-waers AND land1 = <ls_group>-land1.
    " Verarbeitung
  ENDLOOP.

  " ... nach der Verarbeitung
ENDLOOP.

 

Verarbeitung mit Gruppen

Bei der Verarbeitung mit Gruppen kommt reiner SAP-Standard zum Zuge. Die Arbeitsweise ähnelt stark der unseres Beispiels, du sparst dir allerdings die zweite Tabelle. Dafür musst du aber auch die abgebildete Logik verstehen.


LOOP AT lt_bukrs ASSIGNING FIELD-SYMBOL(<ls_bukrs>)
 GROUP BY ( waers = <ls_bukrs>-waers land1 = <ls_bukrs>-land1 )
 ASSIGNING FIELD-SYMBOL(<ls_group>).
  " ... vor der Verarbeitung

  LOOP AT GROUP <ls_group> ASSIGNING FIELD-SYMBOL(<ls_t001>).
    " Verarbeitung
  ENDLOOP.

  " ... nach der Verarbeitung
ENDLOOP.

 

Im ersten Loop wird die Gruppe mit den Elementen gebildet und einem neuen Feldsymbol für die Gruppe zugewiesen. Dieses neue Feldsymbol enthält nur die Felder der Gruppe. Der zweite Loop ist die Schleife über die Gruppe. Mit dem Zusatz AT GROUP wird die Gruppe angesprochen und die Daten dem neuen Feldsymbol mit allen Daten zugewiesen.

 

Fazit

Die Verarbeitung über Gruppen kann man über den ein oder anderen Weg realisieren. Der Standard Weg über die Gruppierung ist etwas schwerer zu lesen, erfüllt aber voll und ganz seinen Zweck. Der freie Weg scheint im ersten Schritt einfacher zu sein, man muss alerdings die Daten doppelt halten und etwas mehr Rechenleistung beim Ablauf einplanen. Welcher Weg für dich der Beste ist, solltest du selbst herausfinden.

 

Quelle:
SAP Dokumentation AT GROUP


Enthaltene Themen:
TippLOOP AT GROUP
Kommentare (0)

ABAP Tipp - CLEAR right

Kategorie - ABAP

Richtig löschen? In diesem Artikel wollen wir uns einmal anschauen, wann es Sinn macht zu löschen und wie du effektiv vorgehen kannst.

12.05.2023

ABAP Tipp - Performance Kettensätze

Kategorie - ABAP

Schauen wir uns hier einmal die Performance beim Bilden von Kettensätzen mit DATA und FIELD-SYMBOL an. Welche Variante wird bei der Performance vorn liegen?

28.04.2023

ABAP Tipp - Adobe Formulare zu groß

Kategorie - ABAP

In diesem kleinen Tipp wollen wir uns anschauen, wieso im schlechtesten Fall Adobe Formulare größer werden, als sie eigentlich sein sollten.

18.11.2022

ABAP - ALV in 2022 noch relevant?

Kategorie - ABAP

Heute mal die scherzhafte Frage, benötigen wir im Jahr 2022 noch Reports die ALV Ausgaben erzeugen? Der Frage wollen wir in diesem Artikel einmal nachgehen.

01.07.2022

ABAP im Wandel

Kategorie - ABAP

Die Programmiersprache ABAP ist bereits seit Jahren im Wandel und modernisiert sich in verschiedenen Konzepten. In diesem Artikel schauen wir uns das einmal im Detail an.

24.06.2022