物理表ZTSORT.
FORM autosort TABLES p_itab USING p_zzl1 TYPE mara-zzl1 CHANGING p_flg.
DATA:it_field TYPE abap_sortorder_tab,
wa_field TYPE abap_sortorder.
CLEAR p_flg.
SELECT * INTO TABLE @DATA(lt_sort) FROM ztsort WHERE zzl1 = @p_zzl1.
IF sy-subrc NE 0.
EXIT.
ENDIF.
SORT lt_sort BY zsortid.
READ TABLE p_itab ASSIGNING FIELD-SYMBOL(<fs1>) INDEX 1 .
REFRESH it_field.
LOOP AT lt_sort INTO DATA(wa_sort).
ASSIGN COMPONENT 'NAME' OF STRUCTURE wa_sort TO FIELD-SYMBOL(<fs_sort>).
IF sy-subrc EQ 0.
ASSIGN COMPONENT <fs_sort> OF STRUCTURE <fs1> TO FIELD-SYMBOL(<fs2>).
IF sy-subrc EQ 0.
CLEAR wa_field.
wa_field-name = <fs_sort>.
wa_field-descending = wa_sort-descending.
APPEND wa_field TO it_field.
ENDIF.
ENDIF.
ENDLOOP.
IF it_field[] IS NOT INITIAL.
SORT p_itab BY (it_field).
p_flg = 'S'.
ENDIF.
ENDFORM.