ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Interne Daten verarbeiten →  Interne Tabellen →  Verarbeitungsanweisungen für interne Tabellen →  LOOP AT itab →  LOOP AT itab - GROUP BY → 

LOOP AT itab - group_key

Syntax

... key | ( key1 = dobj1 key2 = dobj2 ...
           [gs = GROUP SIZE] [gi = GROUP INDEX] ) ...


Zusätze:

1. ... gs = GROUP SIZE

2. ... gi = GROUP INDEX

Wirkung

Gruppenschlüsselausdruck zur Konstruktion des Gruppenschlüssels bei der Gruppierung interner Tabellen. Der Gruppenschlüssel ist das Resultat des Gruppenschlüsselausdrucks, dessen Datentyp wie folgt definiert werden kann:

Bei key bzw. key1, key2, ... handelt es sich um allgemeine Ausdruckspositionen, in der die aktuelle Zeile gemäß des in result definierten Ausgabeverhaltens der Schleife verwendet werden kann. Die Datentypen von key bzw. key1, key2, ... müssen vollständig und statisch erkennbar sein.

Für jede in der Gruppierungsphase gelesene Zeile der internen Tabelle itab wird der Wert des Gruppenschlüssels durch den Gruppenschlüsselausdruck aus den dort angegebenen Datenobjekten, Ausdrücken oder Aufrufen berechnet.

Wenn im Ausgabeverhalten group_result der Gruppenschleife eine Gruppenschlüsselbindung definiert ist, kann über das dort angegebene Datenobjekt bzw. Feldsymbol in der Gruppenschleife auf den Wert des Gruppenschlüssels jeder Gruppe zugegriffen werden.

Hinweise

Am einfachsten sind direkte Zuweisungen von Werten der Zeile an den Gruppenschlüssel oder dessen Komponenten. Da es sich auf den rechten Seiten aber um allgemeine Ausdruckspositionen handelt, sind beliebige Auswertungen möglich.

Beispiel

Strukturierter Gruppenschlüssel, mit dem nach mehr als nur nach einem Kriterium gruppiert wird. Die Gruppierungskriterien sind hier einfach Spalten der internen Tabelle. Es handelt sich um eine Repräsentantenbindung, bei welcher der Arbeitsbereich wa in der Gruppenschleife für den Zugriff auf den Gruppenschlüssel wiederverwendet wird.

SELECT *
       FROM spfli
       INTO TABLE @DATA(spfli_tab).

LOOP AT spfli_tab INTO DATA(wa)
                  GROUP BY ( key1 = wa-carrid key2 = wa-airpfrom ).
  cl_demo_output=>write( |{ wa-carrid } { wa-airpfrom }| ).
ENDLOOP.
cl_demo_output=>display( ).

Zusatz 1

... gs = GROUP SIZE

Zusatz 2

... gi = GROUP INDEX

Wirkung

Deklaration zusätzlicher Komponenten zu einem strukturierten Gruppenschlüssel. Diese Komponenten sind nicht Teil des Gruppenschlüssels, sondern dienen der optionalen Ablage gruppenspezifischer Informationen:

Voraussetzung für die Deklaration der zusätzlichen Komponenten ist, dass im Ausgabeverhalten group_result der Gruppenschleife eine Gruppenschlüsselbindung definiert ist. Über das dort angegebene Datenobjekt bzw. Feldsymbol kann in der Gruppenschleife auf die zusätzlichen Komponenten zugegriffen werden.

Die Namen der Komponenten gs und gi sind frei wählbar. Sie erhalten ihre besondere Bedeutung durch die Sprachelemente GROUP SIZE bzw. GROUP INDEX auf der rechten Seite.

Hinweise

Beispiel

Deklaration eines strukturierten Gruppenschlüssels mit zusätzlichen Komponenten für Gruppenindex und Gruppengröße. Hierfür muss eine Gruppenschlüsselbindung mit INTO data(key) definiert werden.

SELECT *
       FROM spfli
       INTO TABLE @DATA(spfli_tab).

LOOP AT spfli_tab INTO DATA(wa)
                  GROUP BY ( key1 = wa-carrid key2 = wa-airpfrom
                             indx = GROUP INDEX
                             size = GROUP SIZE )
                  INTO data(key).
  cl_demo_output=>write( |{ key-indx } { key-key1
                        } { key-key2 } { key-size }| ).
ENDLOOP.
cl_demo_output=>display( ).