*&---------------------------------------------------------------------*
*& Report ZGS_ALV_VARIANTS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZGS_ALV_VARIANTS.
TYPE-POOLS slis.
TABLES: vbap.
SELECT-OPTIONS s_vbeln FOR vbap-vbeln DEFAULT '4957' TO '5002'.
DATA: i_var LIKE disvariant,
o_var LIKE disvariant.
DATA fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA abc TYPE slis_layout_alv.
DATA: BEGIN OF itab OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
ernam LIKE vbap-ernam,
netwr LIKE vbap-netwr,
END OF itab.
PARAMETERS: p_var LIKE disvariant-variant.
INITIALIZATION.
i_var-report = sy-repid.
* PERFORM variant_default.
AT SELECTION-SCREEN ON p_var.
* PERFORM variant_existance.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_var.
* PERFORM variant_f4.
START-OF-SELECTION.
o_var-report = sy-repid.
o_var-variant = p_var.
SELECT vbeln
posnr
ernam
netwr
INTO TABLE itab
FROM vbap
WHERE vbeln IN s_vbeln.
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 'Problem Filling Field Catalog' TYPE 'I'.
ENDIF.
abc-zebra = 'X'.
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 = abc
it_fieldcat = fcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_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.
*&---------------------------------------------------------------------*
*& Form Variant_default
*&---------------------------------------------------------------------*
* Variant_Default_get
*----------------------------------------------------------------------*
*FORM variant_default .
*
* i_var-report = sy-repid.
*
* CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
* EXPORTING
* i_save = 'A'
* CHANGING
* cs_variant = i_var
* EXCEPTIONS
* wrong_input = 1
* not_found = 2
* program_error = 3
* OTHERS = 4.
* IF sy-subrc = 0.
* p_var = i_var-variant.
* ELSE.
* p_var = 'LAYOUT1'.
* ENDIF.
*
*ENDFORM. " Variant_default
**&---------------------------------------------------------------------
**
**& Form variant_existance
**&---------------------------------------------------------------------
**
** Checking the existance of entered variant.
**----------------------------------------------------------------------
**
*FORM variant_existance .
*
* i_var-report = sy-repid.
* i_var-variant = p_var.
*
* IF NOT p_var IS INITIAL.
* CLEAR i_var-variant.
* i_var-report = sy-repid.
* i_var-variant = p_var.
*
* CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
* EXPORTING
* i_save = 'A'
* CHANGING
* cs_variant = i_var
* EXCEPTIONS
* wrong_input = 1
* not_found = 2
* program_error = 3
* OTHERS = 4.
* IF sy-subrc = 2.
* MESSAGE 'No Such Variant Found' TYPE 'E'.
*
** ELSE.
** CLEAR i_var-variant.
** o_var-report = sy-repid.
** o_var-variant = p_var.
* ENDIF.
* ELSE.
* CLEAR i_var.
* ENDIF.
*
*ENDFORM. " variant_existance
*
**&---------------------------------------------------------------------
**
**& Form variant_f4
**&---------------------------------------------------------------------
**
** Selecting Variants from existing Variants using F4 Option
**----------------------------------------------------------------------
**
*FORM variant_f4 .
*
* i_var-report = sy-repid.
*
* 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 'No Variants Found' TYPE 'I'.
* ELSE.
* p_var = o_var-variant.
* ENDIF.
*
*ENDFORM. " variant_f4