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 in Packages
This example demonstrates a construction of the group key that does not depend on the row content.
Other versions:
7.31 | 7.40 | 7.54
Source Code
DATA(n) = 10.
cl_demo_input=>request( EXPORTING text = `Package size`
CHANGING field = n ).
IF n <= 0.
RETURN.
ENDIF.
cl_demo_output=>begin_section( |Packages of { n }| ).
DATA group LIKE itab.
LOOP AT itab INTO DATA(wa)
GROUP BY ( sy-tabix - 1 ) DIV n + 1.
CLEAR group.
LOOP AT GROUP wa ASSIGNING FIELD-SYMBOL(<wa>).
group = VALUE #( BASE group ( <wa> ) ).
ENDLOOP.
cl_demo_output=>write( group ).
ENDLOOP.
cl_demo_output=>display( ).
Description
Grouping of an internal table text
with
representative binding. The
group key of the
group loop is constructed
as a value of the type i
. This value is calculated from the row index of the current row in sy-tabix
. This creates groups of rows with the same definable size.
In the group loop, the rows of each group are placed in an internal table group
in a
member loop using the
value operator with
the addition BASE
.
These rows are then also displayed. Here, the group is addressed using the work area wa
of the original output behavior of the LOOP
due to the representative binding.
group
could also be filled by the evaluation of a table comprehension sing FOR ... IN GROUP
, instead of in a
member loop LOOP AT GROUP
:
group = VALUE #( FOR <wa> IN GROUP wa ( <wa> ) ).
The example for grouping with FOR
demonstrates how the entire group loop can be implemented using expressions.