Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Processing Internal Data →  Internal Tables →  Processing Statements for Internal Tables →  LOOP AT itab →  LOOP AT itab - Basic Form →  AT - Control Level Processing →  Examples of Control Level Processing 

Control Level Processing with Nested Groups

This example demonstrates nested groups in control level processing in internal tables.

Other versions: 7.31 | 7.40 | 7.54

Source Code

    TYPES: BEGIN OF group,
             fldate   TYPE sflight-fldate,
             seatsocc TYPE sflight-seatsocc,
           END OF group.

    DATA: sflight_tab TYPE SORTED TABLE OF sflight
                      WITH UNIQUE KEY carrid connid fldate,
          group       TYPE TABLE OF group WITH EMPTY KEY.

    DATA(display_members) = abap_false.
    cl_demo_input=>request( EXPORTING text  = `Display Group Members?`
                            CHANGING  field = display_members ).

    DATA(out) = cl_demo_output=>new( ).

    SELECT *
           FROM sflight
           INTO TABLE @sflight_tab.

    LOOP AT sflight_tab INTO DATA(sflight_wa).
      AT NEW connid.
        out->next_section( |{ sflight_wa-carrid } | &&
                           |{ sflight_wa-connid }| ).
      ENDAT.
      group = VALUE #( BASE group
                     ( CORRESPONDING #( sflight_wa  ) ) ).

      AT END OF connid.
        IF to_upper( display_members ) = abap_true.
          out->write( group ).
        ENDIF.
        CLEAR group.
        SUM.
        out->write( |Sum: | &&
                    |{ sflight_wa-seatsocc }| ).
      ENDAT.
      AT END OF carrid.
        SUM.
        out->line(
          )->write( |Carrier Sum: | &&
                    |{ sflight_wa-seatsocc }|
          )->line( ).
      ENDAT.
      AT LAST.
        SUM.
        out->write( |Overall Sum: | &&
                    |{ sflight_wa-seatsocc }| ).
      ENDAT.
    ENDLOOP.
    out->display( ).

Description

The sorted table sflight_tab is filled with flight data from the database table SFLIGHT. The total in question is calculated and displayed at the end of nested row groups for the columns CARRID and CONNID and at the end of the complete loop. The contents of the rows in a control level can be displayed as an optional.

The example Grouping with Nesting shows how the same function can be provided using the addition GROUP BY.