*&---------------------------------------------------------------------*
*& Report ZGS_ALV_SORT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZGS_ALV_SORT_FIELDCAT_MERGE.
TYPE-POOLS: slis.
DATA: layout TYPE slis_layout_alv,
fcat TYPE slis_t_fieldcat_alv,
sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
wa_fcat TYPE slis_fieldcat_alv.
DATA: BEGIN OF itab OCCURS 0,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
aedat LIKE ekpo-aedat,
END OF itab.
*data : itab1 type itab.
*INITIALIZATION.
* i_var-report = sy-repid.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_var.
*
* CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
* EXPORTING
* is_variant = i_var
** I_TABNAME_HEADER =
** I_TABNAME_ITEM =
** IT_DEFAULT_FIELDCAT =
* i_save = 'A'
** I_DISPLAY_VIA_GRID = ' '
* IMPORTING
** E_EXIT =
* es_variant = o_var
** EXCEPTIONS
** NOT_FOUND = 1
** PROGRAM_ERROR = 2
** OTHERS = 3
* .
* IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
*
* p_var = o_var-variant.
START-OF-SELECTION.
SELECT ebeln
ebelp
matnr
aedat
INTO TABLE itab
FROM ekpo
UP TO 25 ROWS.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-cprog
i_internal_tabname = 'ITAB'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = sy-cprog
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = fcat
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DEFINE macros1.
sort-spos = &1.
sort-fieldname = &2.
sort-tabname = 'ITAB'.
sort-up = 'X'.
append sort.
clear sort.
END-OF-DEFINITION.
macros1 '1' 'EBELP'.
macros1 '2' 'AEDAT'.
READ TABLE fcat INTO wa_fcat WITH KEY fieldname = 'MATNR'.
IF sy-subrc = 0.
wa_fcat-no_out = 'X'.
MODIFY fcat FROM wa_fcat INDEX sy-tabix.
ENDIF.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE = ' '
i_callback_program = sy-cprog
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_STRUCTURE_NAME =
is_layout = layout
it_fieldcat = fcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
it_sort = sort[]
* IT_FILTER =
* IS_SEL_HIDE =
* i_default = 'X'
* i_save = 'A'
* is_variant = o_var
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = itab
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.