ABAP Keyword Documentation → ABAP − Reference → Processing Internal Data → Internal Tables → Processing Statements for Internal Tables → LOOP AT itab → LOOP AT itab - GROUP BY → Examples of Grouping with LOOP
Internal Tables, Grouping with LOOP Using Column Values
This example demonstrates the construction of the group key using simple value assignments.
Other versions:
7.31 | 7.40 | 7.54
Source Code
initialize( ).
DATA(out) = cl_demo_output=>new( ).
out->begin_section( `Flights` ).
out->write( flights ).
out->begin_section( `Grouping` ).
DATA members LIKE flights.
LOOP AT flights INTO DATA(flight)
GROUP BY ( carrier = flight-carrid cityfr = flight-cityfrom
size = GROUP SIZE index = GROUP INDEX )
ASCENDING
REFERENCE INTO DATA(group_ref).
out->begin_section(
|Group Key: { group_ref->carrier }, { group_ref->cityfr }| ).
out->write(
|Group Size: { group_ref->size }, | &&
|Group Index: { group_ref->index }| ).
CLEAR members.
LOOP AT GROUP group_ref ASSIGNING FIELD-SYMBOL(<flight>).
members = VALUE #( BASE members ( <flight> ) ).
ENDLOOP.
out->write( members )->end_section( ).
ENDLOOP.
out->display( ).
Description
Grouping of an internal table flights with
group key binding. The
group key of the
group loop is constructed
as a structure. Here, the values of the columns carrid or cityfrom
in each row of the internal table are assigned to the components carrier
and cityfr. This creates groups of rows that have the same value in these
columns. Furthermore, the components size and index
are created for the special language elements GROUP SIZE or GROUP INDEX to determine the size and index of each group.
The group key, bound to a reference variable group_ref, and the additional components are produced in the group loop. In a
member loop, the rows of each group are placed in an internal table members using the
value operator with
the addition BASE. These rows are then also displayed.
members could also be filled by the evaluation of a table comprehension sing FOR ... IN GROUP, instead of in a
member loop LOOP AT GROUP:
members = VALUE #( FOR <flight> IN GROUP group_ref ( <flight> ) ).
The executable example for grouping with FOR demonstrates how the entire group loop can be implemented using expressions.