ABAP Keyword Documentation → ABAP - Reference → Processing Internal Data → Internal Tables → Processing Statements for Internal Tables → SORT itab
Sorting Internal Tables Dynamically
This example demonstrates how internal tables are sorted dynamically using an expression.
Other versions:
7.31 | 7.40 | 7.54
Source Code
REPORT demo_sort_itab_exp.
CLASS cx_illegal_direction DEFINITION INHERITING FROM cx_static_check.
ENDCLASS.
CLASS demo_sort DEFINITION.
PUBLIC SECTION.
CLASS-METHODS main.
PRIVATE SECTION.
CLASS-DATA itab TYPE TABLE OF string WITH EMPTY KEY.
CLASS-METHODS sort_itab
IMPORTING direction TYPE string
RETURNING VALUE(r) LIKE itab
RAISING cx_illegal_direction.
ENDCLASS.
CLASS demo_sort IMPLEMENTATION.
METHOD main.
itab = VALUE #( ( `b` ) ( `a` ) ( `c` ) ).
TRY.
DATA(out) = cl_demo_output=>new( ).
out->write( sort_itab( 'DOWN' )
)->write( sort_itab( 'UP' )
)->display( ).
CATCH cx_illegal_direction.
RETURN.
ENDTRY.
ENDMETHOD.
METHOD sort_itab.
SORT itab BY VALUE abap_sortorder_tab(
( name = 'TABLE_LINE'
descending = SWITCH #( direction
WHEN 'UP' THEN ' '
WHEN 'DOWN' THEN 'X'
ELSE THROW cx_illegal_direction( ) )
astext = 'X ' ) ).
r = itab.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
demo_sort=>main( ).
Description
The method sort_itab
sorts an internal table using the statement
SORT itab
, where the sort criteria are specified as a table of type
abap_sortorder_tab constructed using the value operator
VALUE
. The component descending
of this table is set using a
conditional expression
with the case distinction SWITCH
, as specified by the input parameter direction
.