ABAP Keyword Documentation →  ABAP − Reference →  Processing Internal Data →  Internal Tables →  Processing Statements for Internal Tables →  SORT itab → 

Sorting Internal Tables

This example demonstrates how internal tables are sorted using SORT itab.

Source Code

REPORT demo_int_tables_sort.

CLASS demo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS main.
ENDCLASS.

CLASS demo IMPLEMENTATION.
  METHOD main.

    TYPES: BEGIN OF line,
             land   TYPE c LENGTH 3,
             name   TYPE c LENGTH 10,
             age    TYPE i,
             weight TYPE p LENGTH 8 DECIMALS 2,
           END OF line.

    DATA itab TYPE STANDARD TABLE OF line WITH NON-UNIQUE KEY land.

    itab =
      VALUE #(
        ( land = 'D'   name = 'Hans'    age = 20 weight = '80.00' )
        ( land = 'USA' name = 'Nancy'   age = 35 weight = '45.00' )
        ( land = 'USA' name = 'Howard'  age = 40 weight = '95.00' )
        ( land = 'GB'  name = 'Jenny'   age = 18 weight = '50.00' )
        ( land = 'F'   name = 'Michele' age = 30 weight = '60.00' )
        ( land = 'G'   name = 'Karl'    age = 60 weight = '75.00' ) ).

    DATA(out) = cl_demo_output=>new( )->write_data( itab ).

    SORT itab.
    out->write_data( itab ).

    SORT itab.
    out->write_data( itab ).

    SORT itab STABLE.
    out->write_data( itab ).

    SORT itab DESCENDING BY land weight ASCENDING.
    out->write_data( itab )->display( ).

  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  demo=>main( ).

Description

Four sort operations are carried out on a standard table with a key field. First, the table (land) is sorted twice in succession by its key without using the STABLE addition. The sort is instable. The order of rows in which multiple keys appear can change. Next, the same sort is carried out with the STABLE addition. The sort is stable. The order of the rows remains the same. Finally, it is sorted using a new sort key, defined using land and weight. The normal sort order is descending, but for weight ascending is defined.