*&---------------------------------------------------------------------*
*& Report ZSR_ALV_LAYOUT *
*&---------------------------------------------------------------------*
REPORT ZSR_ALV_LAYOUT
NO STANDARD PAGE HEADING.
DATA: BEGIN OF ITAB OCCURS 1,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
MATKL LIKE MARA-MATKL,
MAKTX LIKE MAKT-MAKTX,
WERKS LIKE MARD-WERKS,
LGORT LIKE MARD-LGORT,
LABST LIKE MARD-LABST,
END OF ITAB.
SELECT-OPTIONS: S_MATNR FOR ITAB-MATNR DEFAULT '100-100'
TO '100-300'
OPTION BT
SIGN I NO-EXTENSION.
SELECTION-SCREEN :BEGIN OF LINE, COMMENT 1(33) v_7 FOR FIELD P_SUM.
PARAMETERS:P_SUM AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
DATA: WA_VAR LIKE DISVARIANT.
PARAMETERS: P_VAR TYPE DISVARIANT-VARIANT.
TYPE-POOLS: SLIS.
DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,
WA_LAYO TYPE SLIS_LAYOUT_ALV,
IT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.
initialization.
* S_MATNR-LOW = '100-100'.
* S_MATNR-HIGH = '100-200'.
* S_MATNR-OPTION = 'BT'.
* S_MATNR-SIGN = 'I'.
* APPEND S_MATNR.
v_7 = 'Summarised Info'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VAR.
PERFORM ALV_F4.
START-OF-SELECTION.
PERFORM RETRIVE_DATA.
PERFORM FLD_CATALOG.
PERFORM GENARATE_LAYOUT.
PERFORM DO_SORT.
END-OF-SELECTION.
PERFORM DISPLAY_DATA.
*&---------------------------------------------------------------------*
*& Form RETRIVE_DATA
*&---------------------------------------------------------------------*
FORM RETRIVE_DATA .
SELECT A~MATNR
A~MTART
A~MATKL
B~MAKTX
C~WERKS
C~LGORT
C~LABST
INTO TABLE ITAB
FROM MARA AS A
INNER JOIN MAKT AS B
ON B~MATNR = A~MATNR
INNER JOIN MARD AS C
ON C~MATNR = A~MATNR
WHERE A~MATNR IN S_MATNR
AND SPRAS = SY-LANGU.
ENDFORM. " RETRIVE_DATA
*&---------------------------------------------------------------------*
*& Form FLD_CATALOG
*&---------------------------------------------------------------------*
FORM FLD_CATALOG .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = IT_FLDCAT[]
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE 'ERROR IN FIELDCATALOG MERGE' TYPE 'I'.
ELSE.
LOOP AT IT_FLDCAT INTO WA_FLDCAT.
CASE WA_FLDCAT-fieldname.
WHEN 'WERKS' OR 'LGORT'.
WA_FLDCAT-KEY = SPACE.
WHEN 'LABST'.
WA_FLDCAT-DO_SUM = 'X'.
ENDCASE.
MODIFY IT_FLDCAT FROM WA_FLDCAT.
ENDLOOP.
ENDIF.
ENDFORM. " FLD_CATALOG
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM DISPLAY_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
I_BACKGROUND_ID = 'PLAIN_BACKGROUND'
I_GRID_TITLE = 'Meterial Details'
* I_GRID_SETTINGS =
IS_LAYOUT = WA_LAYO
IT_FIELDCAT = IT_FLDCAT[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
IT_SORT = IT_SORT[]
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
I_SAVE = 'X'
IS_VARIANT = WA_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
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* 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 'ERROR IN GRID DISPLAY' TYPE 'I'.
ENDIF.
ENDFORM. " DISPLAY_DATA
*&---------------------------------------------------------------------*
*& Form GENARATE_LAYOUT
*&---------------------------------------------------------------------*
FORM GENARATE_LAYOUT .
WA_LAYO-ZEBRA = 'X'.
* WA_LAYO-colwidth_optimize = 'X'.
ENDFORM. " GENARATE_LAYOUT
*&---------------------------------------------------------------------*
*& Form ALV_F4
*&---------------------------------------------------------------------*
FORM ALV_F4 .
WA_VAR-REPORT = SY-REPID.
WA_VAR-USERNAME = SY-UNAME.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = WA_VAR
IMPORTING
ES_VARIANT = WA_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.
ELSE.
* P_VAR = WA_VAR-VARIANT.
ENDIF.
ENDFORM. " ALV_F4
*&---------------------------------------------------------------------*
*& Form DO_SORT
*&---------------------------------------------------------------------*
FORM DO_SORT .
IT_SORT-FIELDNAME = 'MATNR'.
IT_SORT-UP = 'X'.
IT_SORT-SUBTOT = 'X'.
IF P_SUM = 'X'.
IT_SORT-EXPA = 'X'.
ENDIF.
APPEND IT_SORT.
ENDFORM. " DO_SORT