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 a Comparison
This example demonstrates the construction of the group key using comparison expressions.
Other versions: 
 7.31 | 7.40 | 7.54
Source Code
    DATA(out) = cl_demo_output=>new( ).
    DATA(threshold) = 5.
    cl_demo_input=>request( CHANGING field = threshold ).
    out->begin_section( `Grouping` ).
    DATA members LIKE numbers.
    LOOP AT numbers INTO DATA(number)
         GROUP BY COND string(
           WHEN number <= threshold THEN |LE { threshold }|
                                   ELSE |GT { threshold }| )
         ASSIGNING FIELD-SYMBOL(<group>).
      out->begin_section( <group> ).
      CLEAR members.
      LOOP AT GROUP <group> REFERENCE INTO DATA(member_ref).
        members = VALUE #( BASE members ( member_ref->* ) ).
      ENDLOOP.
      out->write( members )->end_section( ).
    ENDLOOP.
    out->display( ).
Description
Grouping of an internal table numbers with
group key binding. The
group key of the
group loop is constructed
as a value of the type string. This value is calculated from the content
of each table row using the conditional operator cond. This creates groups of rows whose content is either less than or equal to or greater than an entered value.
The group key, bound to a field symbol <group>, is 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 <member> IN GROUP <group> ( <member> ) ).
The example for grouping with FOR demonstrates how the entire group loop can be implemented using expressions.