Mentor SAP
2017-03-05 Submitted by:- Admin
*&---------------------------------------------------------------------*
*& 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.