Ansicht
Dokumentation

ABAPLOOP_AT_GROUP - LOOP AT GROUP

ABAPLOOP_AT_GROUP - LOOP AT GROUP

Vendor Master (General Section)   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

LOOP AT GROUP

Kurzreferenz



LOOP AT GROUP group result $[ WHERE log_exp$] $[GROUP BY ...$].
  ...
ENDLOOP.

Zusatz:

... WHERE log_exp

Wirkung

Mitgliederschleife über die Zeilen einer Gruppe innerhalb der Gruppenschleife bei der Gruppierung interner Tabellen. Diese Schleife ist nur innerhalb einer LOOP-Schleife über eine interne Tabelle mit dem Zusatz GROUP BY möglich,

  • für welche die interne Tabelle itab direkt als Datenobjekt und nicht als Ergebnis eines Aufrufs oder Ausdrucks angegeben ist,
  • bei welcher der Zusatz WITHOUT MEMBERS nicht verwendet wird.

Mit group wird die Gruppe angegeben, über welche die Mitgliederschleife ausgeführt werden soll. Es muss das im Ausgabeverhalten group_result der Gruppenschleife definierte Zielobjekt angegeben werden, das an die Gruppe gebunden ist:

  • Bei der Repräsentantenbindung ist dies ein im Ausgabeverhalten result angegebener Repräsentant
  • Bei der Gruppenschlüsselbindung ist dies ein im Ausgabeverhalten group_result angegebenes Datenobjekt oder Feldsymbol.

Die Mitgliederschleife über die aktuelle Gruppe wird genau so ausgeführt, wie eine normale LOOP-Schleife über eine Standardtabelle mit dem Zeilentyp von itab, welche die Zeilen der Gruppe enthält. Es sind beide Varianten möglich:

Der zweite Punkt ermöglicht die weitere Gruppierung vorhandener Gruppen.

Systemfelder

Die Anweisung LOOP AT GROUP setzt den Wert des Systemfeldes sy-tabix in der Mitgliederschleife auf den Wert der für die aktuelle Zeile in der LOOP-Schleife ohne Gruppierung gesetzt würde.

Das Systemfeld sy-subrc wird von einer Mitgliederschleife immer auf den Wert 0 gesetzt.

Hinweise

  • Auch wenn es für eine einzelne LOOP-Schleife immer nur eine Gruppierung gibt, ist es notwendig, die Gruppe group explizit anzugeben, da in geschachtelten LOOP-Schleifen Zugriff auf mehrere Gruppen bestehen kann.
  • Für group muss genau der im Ausgabeverhalten angegebene Namen verwendet werden, d.h. ein hinter ASSIGNING angegebenes Feldsymbol mit spitzen Klammern und eine hinter REFERENCE INTO angegebene Datenreferenzvariable ohne Dereferenzierungsoperator ->.
  • Die Anweisung LOOP AT GROUP kann nur innerhalb einer mitLOOP AT ... GROUP BY definierten Schleife aufgeführt werden, da nur dort der durch deren Ausgabeverhalten definierte Bezeichner für die Gruppe gültig ist. Insbesondere ist LOOP AT GROUP nicht in Prozeduren möglich, die aus einer Gruppenschleife aufgerufen werden, selbst wenn dort Zugriff auf das durch das Ausgabeverhalten definierte Datenobjekt oder Feldsymbol besteht.
  • Auch wenn Syntax und Semantik von LOOP AT GROUP die einer normalen geschachtelten Schleife sind, ist der tatsächliche Zugriff auf die Zeilen der Gruppe optimiert. Hierfür wird die interne Ausprägung der Zuordnung der Zeilen zu ihrer Gruppe ausgenutzt.
  • Da eine Gruppenschleife keine leeren Gruppen erzeugt, wird eine Mitgliederschleife in der Regel immer durchlaufen. Nur durch eine WHERE-Bedingung kann bewirkt werden, dass die Mitglieder einer Gruppe nicht verarbeitet werden. Dies wird intern aber erst zu Beginn des ersten Schleifendurchgangs erkannt, so dass auch in diesem Fall sy-subrc auf den Wert 0 gesetzt wird.

Beispiel

Mitgliederschleife in einer Gruppenschleife. Dort werden die zu einer Fluggesellschaft gehörigen Flugnummern in einem String zusammengefasst.

Das folgende Beispiel führt die sechs verschiedenen syntaktischen Möglichkeiten, eine Gruppe in einer Mitgliederschleife anzugeben, einzeln auf:

Zusatz

... WHERE log_exp

Wirkung

Die aus der Gruppe ausgelesenen Zeilen können mit einer statischen WHERE-Bedingung eingeschränkt werden. Syntax und Bedeutung sind wie bei einer LOOP-Schleife über eine interne Tabelle mit dem Zeilentyp von itab.

Hinweis

Die Zusätze USING KEY, FROM, TO und eine dynamische WHERE-Bedingung sind hinter LOOP AT GROUP nicht möglich.

Beispiel

Wie obiges Beispiel, aber mit einschränkender WHERE-Bedingung für die Mitgliederschleife.






CL_GUI_FRONTEND_SERVICES - Frontend Services   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8991 Date: 20240420 Time: 164400     sap01-206 ( 110 ms )