
FUNCTION zca_common_tmg_sort.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(I_VAR_VIEW_NAME) TYPE DD02L-TABNAME
*" EXPORTING
*" VALUE(E_TAB_SORTORDER) TYPE ABAP_SORTORDER_TAB
*"----------------------------------------------------------------------
CALL FUNCTION 'VIEW_GET_FIELDTAB'
EXPORTING
view_name = i_var_view_name
TABLES
fieldtab = g_tab_fields
EXCEPTIONS
table_not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
DELETE g_tab_fields WHERE datatype = 'CLNT'.
CALL SCREEN 9000 STARTING AT 5 3.
ENDIF.
e_tab_sortorder = g_tab_sortorder.MODULE user_command_9000 INPUT.
FIELD-SYMBOLS: <l_wa_sortorder> LIKE LINE OF g_tab_sortorder.
CLEAR g_tab_sortorder[].
CASE sy-ucomm.
WHEN 'OK'.
LOOP AT g_tab_fields INTO g_wa_fields
WHERE inttype = 'X'.
APPEND INITIAL LINE TO g_tab_sortorder ASSIGNING <l_wa_sortorder>.
<l_wa_sortorder>-name = g_wa_fields-fieldname.
IF g_var_descend IS NOT INITIAL.
<l_wa_sortorder>-descending = abap_true.
ENDIF.
CLEAR g_wa_fields.
ENDLOOP.
SET SCREEN 0.
WHEN 'CAN'.
SET SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUTMODULE sort INPUT.
DATA: l_tab_agent TYPE STANDARD TABLE OF zsdc_frght_agent,
l_tab_sortorder TYPE abap_sortorder_tab..
FIELD-SYMBOLS: <ls_xfrom> TYPE x, "Hexadecimal value of from value
<ls_xto> TYPE x. "Hexadecimal value of to value
CLEAR: l_tab_agent[], l_tab_sortorder[].
CASE function.
WHEN 'SORT'.
CALL FUNCTION 'ZCA_COMMON_TMG_SORT'
EXPORTING
i_var_view_name = vim_view_name
IMPORTING
e_tab_sortorder = l_tab_sortorder.
IF l_tab_sortorder[] IS NOT INITIAL.
LOOP AT extract.
APPEND INITIAL LINE TO l_tab_agent ASSIGNING <ls_xto> CASTING.
ASSIGN extract TO <ls_xfrom> CASTING.
<ls_xto> = <ls_xfrom>.
ENDLOOP.
SORT l_tab_agent BY (l_tab_sortorder).
REFRESH extract.
LOOP AT l_tab_agent INTO zsdc_frght_agent.
APPEND INITIAL LINE TO extract ASSIGNING <ls_xto> CASTING.
ASSIGN zsdc_frght_agent TO <ls_xfrom> CASTING.
<ls_xto> = <ls_xfrom>.
ENDLOOP.
ENDIF.
ENDCASE.
ENDMODULE. " SORT INPUT

