ALV REPORT with structure
1)Business Req: Develop a Material master ALV Report to display all fields
TABLES : MARA.
DATA: I_MARA TYPE TABLE OF MARA.
DATA: WA_MARA TYPE MARA.
DATA: WA_MARA TYPE MARA.
SELECT-OPTIONS SO_MATNR FOR MARA-MATNR.PARAMETERS P_MTART TYPE MARA-MTART.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM DISPLAY_DATA.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .SELECT * FROM MARA INTO TABLE I_MARA WHERE MATNR IN SO_MATNR AND MTART = 'FERT'.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'SY-REPID'
I_STRUCTURE_NAME = 'MARA'
TABLES
T_OUTTAB = I_MARA.
ENDFORM. " DISPLAY_DATA
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM DISPLAY_DATA.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .SELECT * FROM MARA INTO TABLE I_MARA WHERE MATNR IN SO_MATNR AND MTART = 'FERT'.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'SY-REPID'
I_STRUCTURE_NAME = 'MARA'
TABLES
T_OUTTAB = I_MARA.
ENDFORM. " DISPLAY_DATA
The Input Screen as below.
The Output Screen as below.
Note: When we want all the fields from a table, then we use STRUCTURE
ALV REPORT with Fieldcatelog
1)Business Req: Develop a Material master ALV Report to display MATNR,MTART, MBRSH,MEINS fields
type-pools: SLIS.TABLES MARA.
TYPES:BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA : I_MARA TYPE TABLE OF TY_MARA.DATA : WA_MARA TYPE TY_MARA.DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV.DATA : WA_FCAT LIKE LINE OF I_FCAT.* DATA: WA_FCAT TYPE SLIS_FIELDCAT_ALV.
SELECT-OPTIONS SO_MATNR FOR MARA-MATNR.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM CREATE_FCAT.
PERFORM DISPLAY.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .SELECT * FROM MARA INTO CORRESPONDING FIELDS OF TABLE I_MARA
WHERE MATNR IN SO_MATNR.
ENDFORM. " GET_DATA
TYPES:BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA : I_MARA TYPE TABLE OF TY_MARA.DATA : WA_MARA TYPE TY_MARA.DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV.DATA : WA_FCAT LIKE LINE OF I_FCAT.* DATA: WA_FCAT TYPE SLIS_FIELDCAT_ALV.
SELECT-OPTIONS SO_MATNR FOR MARA-MATNR.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM CREATE_FCAT.
PERFORM DISPLAY.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .SELECT * FROM MARA INTO CORRESPONDING FIELDS OF TABLE I_MARA
WHERE MATNR IN SO_MATNR.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'SY-REPID'
IT_FIELDCAT = I_FCAT
TABLES
T_OUTTAB = I_MARA.
ENDFORM. " DISPLAY
FORM CREATE_FCAT .
WA_FCAT-col_pos = '1'.
WA_FCAT-FIELDNAME = 'MATNR'.
WA_FCAT-TABNAME = 'I_MARA'.
WA_FCAT-REF_FIELDNAME = 'MATNR'.
WA_FCAT-REF_TABNAME = 'MARA'.
WA_FCAT-SELTEXT_M = 'MATERIAL NO'.
WA_FCAT-KEY = 'X'.
WA_FCAT-HOTSPOT = 'X'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
WA_FCAT-COL_POS = '2'.
WA_FCAT-FIELDNAME = 'MTART'.
WA_FCAT-TABNAME = 'I_MARA'.
WA_FCAT-SELTEXT_M = 'MATERIAL TYPE'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
WA_FCAT-COL_POS = '3'.
WA_FCAT-FIELDNAME = 'MBRSH'.
WA_FCAT-TABNAME = 'I_MARA'.
WA_FCAT-EMPHASIZE = 'C601'.
WA_FCAT-SELTEXT_M = 'IND.SECTOR'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
WA_FCAT-COL_POS = '4'.
WA_FCAT-FIELDNAME = 'MEINS'.
WA_FCAT-TABNAME = 'I_MARA'.
WA_FCAT-EDIT = 'X'.
WA_FCAT-SELTEXT_M = 'MATERIAL UNITS'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
ENDFORM. " CREATE_FCAT
WA_FCAT-COL_POS = '4'.
WA_FCAT-FIELDNAME = 'MEINS'.
WA_FCAT-TABNAME = 'I_MARA'.
WA_FCAT-EDIT = 'X'.
WA_FCAT-SELTEXT_M = 'MATERIAL UNITS'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
ENDFORM. " CREATE_FCAT
The Input Screen as below.
The Output Screen as below.
Note: When we want limited fields from a table, then we use fieldcatelog
ALV REPORT with Fieldcatelog_Merge
1)Business Req: Develop a Material master ALV Report to display DATA using fieldcatalog merge.
TYPE-POOLS : SLIS.
TYPES:BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA : I_MARA TYPE TABLE OF TY_MARA.DATA : WA_MARA TYPE TY_MARA.DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV.DATA : WA_FCAT LIKE LINE OF I_FCAT.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM CREATE_FCAT.
PERFORM DISPLAY.
FORM GET_DATA .SELECT MATNR MTART MBRSH MEINS FROM MARA INTO TABLE
I_MARA UP TO 100 ROWS.
ENDFORM.
FORM DISPLAY .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'SY-REPID'
IT_FIELDCAT = I_FCAT
TABLES
T_OUTTAB = I_MARA.
ENDFORM.
FORM CREATE_FCAT .CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = 'SY-REPID'
I_STRUCTURE_NAME = 'MARA'
CHANGING
CT_FIELDCAT = I_FCAT.
LOOP AT I_FCAT INTO WA_FCAT.
WA_FCAT-NO_OUT = 'X'.
IF WA_FCAT-FIELDNAME = 'MATNR' OR
WA_FCAT-FIELDNAME = 'MTART' OR
WA_FCAT-FIELDNAME = 'MBRSH' OR
WA_FCAT-FIELDNAME = 'MEINS'.
WA_FCAT-NO_OUT = ' '.
ENDIF.
MODIFY I_FCAT FROM WA_FCAT INDEX SY-TABIX.
ENDLOOP.
ENDFORM. " CREATE_FCAT
TYPES:BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA : I_MARA TYPE TABLE OF TY_MARA.DATA : WA_MARA TYPE TY_MARA.DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV.DATA : WA_FCAT LIKE LINE OF I_FCAT.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM CREATE_FCAT.
PERFORM DISPLAY.
FORM GET_DATA .SELECT MATNR MTART MBRSH MEINS FROM MARA INTO TABLE
I_MARA UP TO 100 ROWS.
ENDFORM.
FORM DISPLAY .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'SY-REPID'
IT_FIELDCAT = I_FCAT
TABLES
T_OUTTAB = I_MARA.
ENDFORM.
FORM CREATE_FCAT .CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = 'SY-REPID'
I_STRUCTURE_NAME = 'MARA'
CHANGING
CT_FIELDCAT = I_FCAT.
LOOP AT I_FCAT INTO WA_FCAT.
WA_FCAT-NO_OUT = 'X'.
IF WA_FCAT-FIELDNAME = 'MATNR' OR
WA_FCAT-FIELDNAME = 'MTART' OR
WA_FCAT-FIELDNAME = 'MBRSH' OR
WA_FCAT-FIELDNAME = 'MEINS'.
WA_FCAT-NO_OUT = ' '.
ENDIF.
MODIFY I_FCAT FROM WA_FCAT INDEX SY-TABIX.
ENDLOOP.
ENDFORM. " CREATE_FCAT
The Output Screen as below.
Note: When we want fieldcatelog to be generated automatically, then we use REUSE_FIELDCATELOG_MERGE.
ALV REPORT with Layout Options
TYPE-POOLS : SLIS.
TYPES:BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA : I_MARA TYPE TABLE OF TY_MARA.DATA : WA_MARA TYPE TY_MARA.DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV.DATA : WA_FCAT LIKE LINE OF I_FCAT.DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM CREATE_FCAT.
PERFORM DESIGN_LAYOUT.
PERFORM DISPLAY.
FORM GET_DATA .SELECT MATNR MTART MBRSH MEINS FROM MARA INTO TABLE
I_MARA UP TO 100 ROWS.
ENDFORM.
FORM CREATE_FCAT .
WA_FCAT-col_pos = '1'.
WA_FCAT-FIELDNAME = 'MATNR'.
WA_FCAT-TABNAME = 'I_MARA'.
WA_FCAT-REF_FIELDNAME = 'MATNR'.
WA_FCAT-REF_TABNAME = 'MARA'.
WA_FCAT-SELTEXT_M = 'MATERIAL NO'.
WA_FCAT-KEY = 'X'.
WA_FCAT-HOTSPOT = 'X'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
WA_FCAT-COL_POS = '2'.
WA_FCAT-FIELDNAME = 'MTART'.
WA_FCAT-TABNAME = 'I_MARA'.
WA_FCAT-SELTEXT_M = 'MATERIAL TYPE'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
WA_FCAT-COL_POS = '3'.
WA_FCAT-FIELDNAME = 'MBRSH'.
WA_FCAT-TABNAME = 'I_MARA'.
WA_FCAT-EMPHASIZE = 'C601'.
WA_FCAT-SELTEXT_M = 'IND.SECTOR'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
WA_FCAT-COL_POS = '4'.
WA_FCAT-FIELDNAME = 'MEINS'.
WA_FCAT-TABNAME = 'I_MARA'.*WA_FCAT-EDIT = 'X'.
WA_FCAT-SELTEXT_M = 'MATERIAL UNITS'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
ENDFORM.
FORM DESIGN_LAYOUT.
WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WA_LAYOUT-EDIT = 'X'.
WA_LAYOUT-NO_VLINE = 'X'.
WA_LAYOUT-NO_HLINE = 'X'.
ENDFORM.
FORM DISPLAY .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'SY-REPID'
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = I_FCAT
TABLES
T_OUTTAB = I_MARA.
ENDFORM.
TYPES:BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA : I_MARA TYPE TABLE OF TY_MARA.DATA : WA_MARA TYPE TY_MARA.DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV.DATA : WA_FCAT LIKE LINE OF I_FCAT.DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM CREATE_FCAT.
PERFORM DESIGN_LAYOUT.
PERFORM DISPLAY.
FORM GET_DATA .SELECT MATNR MTART MBRSH MEINS FROM MARA INTO TABLE
I_MARA UP TO 100 ROWS.
ENDFORM.
FORM CREATE_FCAT .
WA_FCAT-col_pos = '1'.
WA_FCAT-FIELDNAME = 'MATNR'.
WA_FCAT-TABNAME = 'I_MARA'.
WA_FCAT-REF_FIELDNAME = 'MATNR'.
WA_FCAT-REF_TABNAME = 'MARA'.
WA_FCAT-SELTEXT_M = 'MATERIAL NO'.
WA_FCAT-KEY = 'X'.
WA_FCAT-HOTSPOT = 'X'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
WA_FCAT-COL_POS = '2'.
WA_FCAT-FIELDNAME = 'MTART'.
WA_FCAT-TABNAME = 'I_MARA'.
WA_FCAT-SELTEXT_M = 'MATERIAL TYPE'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
WA_FCAT-COL_POS = '3'.
WA_FCAT-FIELDNAME = 'MBRSH'.
WA_FCAT-TABNAME = 'I_MARA'.
WA_FCAT-EMPHASIZE = 'C601'.
WA_FCAT-SELTEXT_M = 'IND.SECTOR'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
WA_FCAT-COL_POS = '4'.
WA_FCAT-FIELDNAME = 'MEINS'.
WA_FCAT-TABNAME = 'I_MARA'.*WA_FCAT-EDIT = 'X'.
WA_FCAT-SELTEXT_M = 'MATERIAL UNITS'.APPEND WA_FCAT TO I_FCAT.CLEAR WA_FCAT.
ENDFORM.
FORM DESIGN_LAYOUT.
WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WA_LAYOUT-EDIT = 'X'.
WA_LAYOUT-NO_VLINE = 'X'.
WA_LAYOUT-NO_HLINE = 'X'.
ENDFORM.
FORM DISPLAY .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'SY-REPID'
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = I_FCAT
TABLES
T_OUTTAB = I_MARA.
ENDFORM.
ALV REPORT with GrandTotals&SubTotals
TYPE-POOLS : SLIS .TYPES : BEGIN OF TY_VBAP,
VBELN TYPE VBAP-VBELN,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
NETPR TYPE VBAP-NETPR,
END OF TY_VBAP.DATA : I_VBAP TYPE TABLE OF TY_VBAP .DATA : WA_VBAP TYPE TY_VBAP .
*ALV DECLARATIONS
DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV .DATA : WA_FCAT TYPE SLIS_FIELDCAT_ALV .DATA : I_SORT TYPE SLIS_T_SORTINFO_ALV .DATA : WA_SORT LIKE LINE OF I_SORT .DATA : V_POS TYPE I .
START-OF-SELECTION .PERFORM GET_DATA .PERFORM CREATE_FCAT .PERFORM CALC_SUBTOTALS.PERFORM DISPLAY_DATA .END-OF-SELECTION .
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
FORM GET_DATA .
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE I_VBAP UP TO 100 ROWS .
ENDFORM. " get_data
*&---------------------------------------------------------------------*
*& Form create_fcat
*&---------------------------------------------------------------------*
FORM CREATE_FCAT .
V_POS = 1 .
WA_FCAT-COL_POS = V_POS.
WA_FCAT-FIELDNAME = 'VBELN' .
WA_FCAT-SELTEXT_M = 'Salesdoc.NO' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'POSNR' .
WA_FCAT-SELTEXT_M = 'Itemno' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MATNR' .
WA_FCAT-SELTEXT_M = 'Material NO' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'NETPR' .
WA_FCAT-SELTEXT_M = 'Netprice' .
WA_FCAT-DO_SUM = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
ENDFORM. " create_fcat
FORM DISPLAY_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = I_FCAT
IT_SORT = I_SORT
TABLES
T_OUTTAB = I_VBAP.
ENDFORM.
FORM CALC_SUBTOTALS .
WA_SORT-FIELDNAME = 'VBELN' .
WA_SORT-UP = 'X' .
WA_SORT-SUBTOT = 'X' .
APPEND WA_SORT TO I_SORT .
ENDFORM.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'POSNR' .
WA_FCAT-SELTEXT_M = 'Itemno' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MATNR' .
WA_FCAT-SELTEXT_M = 'Material NO' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'NETPR' .
WA_FCAT-SELTEXT_M = 'Netprice' .
WA_FCAT-DO_SUM = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
ENDFORM. " create_fcat
FORM DISPLAY_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = I_FCAT
IT_SORT = I_SORT
TABLES
T_OUTTAB = I_VBAP.
ENDFORM.
FORM CALC_SUBTOTALS .
WA_SORT-FIELDNAME = 'VBELN' .
WA_SORT-UP = 'X' .
WA_SORT-SUBTOT = 'X' .
APPEND WA_SORT TO I_SORT .
ENDFORM.
The Output Screen as below.
ALV REPORT with TOP-OF-PAGE/EOL/LOGO
TYPE-POOLS : SLIS .
*DATA DECLARAATIONS
DATA : I_MARA TYPE TABLE OF MARA .DATA : WA_MARA TYPE MARA .
*DATA DECLARAATIONS
DATA : I_MARA TYPE TABLE OF MARA .DATA : WA_MARA TYPE MARA .
DATA : V_DATE TYPE C.WRITE SY-DATUM TO V_DATE.
*ALV DECLARATIONS
DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV .DATA : WA_FCAT TYPE SLIS_FIELDCAT_ALV .DATA : V_POS TYPE I .DATA : I_EVENTS TYPE SLIS_T_EVENT .DATA : WA_EVENTS LIKE LINE OF I_EVENTS .DATA : I_HEADING TYPE SLIS_T_LISTHEADER .DATA : WA_HEADING LIKE LINE OF I_HEADING .
START-OF-SELECTION .
PERFORM GET_DATA .
PERFORM CREATE_FCAT .
PERFORM GET_EVENTS .
PERFORM DISPLAY_DATA .
END-OF-SELECTION .
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT * FROM MARA INTO TABLE I_MARA UP TO 100 ROWS .
ENDFORM. "GET_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = I_FCAT
IT_EVENTS = I_EVENTS
TABLES
T_OUTTAB = I_MARA.
ENDFORM. "DISPLAY_DATA
*&---------------------------------------------------------------------*
*& Form CREATE_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CREATE_FCAT .
V_POS = 1 .
WA_FCAT-COL_POS = V_POS.
WA_FCAT-FIELDNAME = 'MATNR' .
WA_FCAT-SELTEXT_M = 'Material.NO' .
WA_FCAT-HOTSPOT = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MTART' .
WA_FCAT-SELTEXT_M = 'Material.Type' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MBRSH' .
WA_FCAT-SELTEXT_M = 'Ind.Sector' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MATKL' .
WA_FCAT-SELTEXT_M = 'Mat.Grp' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MEINS' .
WA_FCAT-SELTEXT_M = 'Units' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
ENDFORM. "CREATE_FCAT
*ALV DECLARATIONS
DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV .DATA : WA_FCAT TYPE SLIS_FIELDCAT_ALV .DATA : V_POS TYPE I .DATA : I_EVENTS TYPE SLIS_T_EVENT .DATA : WA_EVENTS LIKE LINE OF I_EVENTS .DATA : I_HEADING TYPE SLIS_T_LISTHEADER .DATA : WA_HEADING LIKE LINE OF I_HEADING .
START-OF-SELECTION .
PERFORM GET_DATA .
PERFORM CREATE_FCAT .
PERFORM GET_EVENTS .
PERFORM DISPLAY_DATA .
END-OF-SELECTION .
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT * FROM MARA INTO TABLE I_MARA UP TO 100 ROWS .
ENDFORM. "GET_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = I_FCAT
IT_EVENTS = I_EVENTS
TABLES
T_OUTTAB = I_MARA.
ENDFORM. "DISPLAY_DATA
*&---------------------------------------------------------------------*
*& Form CREATE_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CREATE_FCAT .
V_POS = 1 .
WA_FCAT-COL_POS = V_POS.
WA_FCAT-FIELDNAME = 'MATNR' .
WA_FCAT-SELTEXT_M = 'Material.NO' .
WA_FCAT-HOTSPOT = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MTART' .
WA_FCAT-SELTEXT_M = 'Material.Type' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MBRSH' .
WA_FCAT-SELTEXT_M = 'Ind.Sector' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MATKL' .
WA_FCAT-SELTEXT_M = 'Mat.Grp' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
V_POS = V_POS + 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MEINS' .
WA_FCAT-SELTEXT_M = 'Units' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
ENDFORM. "CREATE_FCAT
*&---------------------------------------------------------------------*
*& Form GET_EVENTS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_EVENTS .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
* EXPORTING
* I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = I_EVENTS .
* ******** TOP OF PAGE
READ TABLE I_EVENTS INTO WA_EVENTS WITH KEY NAME = 'TOP_OF_PAGE' .
WA_EVENTS-FORM = 'FORM_TOP_OF_PAGE' .
MODIFY I_EVENTS FROM WA_EVENTS INDEX SY-TABIX .
* ***********END OF LIST
READ TABLE I_EVENTS INTO WA_EVENTS WITH KEY NAME = 'END_OF_LIST' .
WA_EVENTS-FORM = 'FORM_END_OF_LIST' .
MODIFY I_EVENTS FROM WA_EVENTS INDEX SY-TABIX .
ENDFORM. "GET_EVENTS
*&---------------------------------------------------------------------*
*& Form FORM_TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FORM_TOP_OF_PAGE .
WA_HEADING-TYP = 'H' .* * WA_HEADING-KEY = 'H' .
WA_HEADING-INFO = 'MATERIAL MASTER REPORT' .
APPEND WA_HEADING TO I_HEADING .
WA_HEADING-TYP = 'S' .
WA_HEADING-KEY = 'USERNAME:' .
WA_HEADING-INFO = SY-UNAME .
APPEND WA_HEADING TO I_HEADING .
WA_HEADING-TYP = 'S'.
WA_HEADING-KEY = 'DATE:'.
WA_HEADING-INFO = V_DATE.
APPEND WA_HEADING TO I_HEADING .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = I_HEADING
I_LOGO = 'HANU'.ENDFORM . "FORM_TOP_OF_PAGE
WA_HEADING-KEY = 'DATE:'.
WA_HEADING-INFO = V_DATE.
APPEND WA_HEADING TO I_HEADING .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = I_HEADING
I_LOGO = 'HANU'.ENDFORM . "FORM_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form FORM_END_OF_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FORM_END_OF_LIST .
REFRESH I_HEADING .
CLEAR WA_HEADING .
WA_HEADING-TYP = 'S' .
WA_HEADING-INFO = 'ALL RIGHTS ARE RESERVED TO
*& Form FORM_END_OF_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FORM_END_OF_LIST .
REFRESH I_HEADING .
CLEAR WA_HEADING .
WA_HEADING-TYP = 'S' .
WA_HEADING-INFO = 'ALL RIGHTS ARE RESERVED TO
THE COMPANY IBM INDIA PVT.LTD' .
APPEND WA_HEADING TO I_HEADING .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = I_HEADING
I_END_OF_LIST_GRID = 'X'. ENDFORM . "FORM_END_OF_LIST
APPEND WA_HEADING TO I_HEADING .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = I_HEADING
I_END_OF_LIST_GRID = 'X'. ENDFORM . "FORM_END_OF_LIST
Interactive ALV
TYPE-POOLS : SLIS.
************ DATA DECLARATIONS
DATA : I_VBAK TYPE TABLE OF VBAK.DATA : WA_VBAK TYPE VBAK.DATA : I_VBAP TYPE TABLE OF VBAP.DATA : WA_VBAP TYPE VBAP.DATA : V_VBELN TYPE VBAK-VBELN.
************ ALV DECLARATIONS
DATA : I_EVENTS TYPE SLIS_T_EVENT .DATA : WA_EVENTS LIKE LINE OF I_EVENTS.DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV.DATA : WA_FCAT LIKE LINE OF I_FCAT.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM get_events.
PERFORM DISPALY_DATA.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_DATA.
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE I_VBAK
UP TO 100 ROWS.
ENDFORM. "GET_DATA
*&---------------------------------------------------------------------*
*& Form DISPALY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DISPALY_DATA.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_STRUCTURE_NAME = 'VBAK'
IT_EVENTS = I_EVENTS
TABLES
T_OUTTAB = I_VBAK.
ENDFORM. "DISPALY_DATA
*&---------------------------------------------------------------------*
*& Form GET_EVENTS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_EVENTS.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
ET_EVENTS = i_events.
READ TABLE I_EVENTS INTO WA_EVENTS WITH KEY NAME = 'USER_COMMAND'.
WA_EVENTS-FORM = 'FORM_USER_COMMAND'.
MODIFY I_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
ENDFORM. "GET_EVENTS
*&---------------------------------------------------------------------*
*& Form FORM_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->UCOMM text
* -->SELFIELD text
*----------------------------------------------------------------------*
FORM FORM_USER_COMMAND USING UCOMM TYPE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
READ TABLE I_VBAK INTO WA_VBAK INDEX SELFIELD-TABINDEX.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE I_VBAP
WHERE VBELN = WA_VBAK-VBELN.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_STRUCTURE_NAME = 'VBAP'
TABLES
T_OUTTAB = I_VBAP.
ENDFORM. "FORM_USER_COMMAND
************ DATA DECLARATIONS
DATA : I_VBAK TYPE TABLE OF VBAK.DATA : WA_VBAK TYPE VBAK.DATA : I_VBAP TYPE TABLE OF VBAP.DATA : WA_VBAP TYPE VBAP.DATA : V_VBELN TYPE VBAK-VBELN.
************ ALV DECLARATIONS
DATA : I_EVENTS TYPE SLIS_T_EVENT .DATA : WA_EVENTS LIKE LINE OF I_EVENTS.DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV.DATA : WA_FCAT LIKE LINE OF I_FCAT.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM get_events.
PERFORM DISPALY_DATA.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_DATA.
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE I_VBAK
UP TO 100 ROWS.
ENDFORM. "GET_DATA
*&---------------------------------------------------------------------*
*& Form DISPALY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DISPALY_DATA.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_STRUCTURE_NAME = 'VBAK'
IT_EVENTS = I_EVENTS
TABLES
T_OUTTAB = I_VBAK.
ENDFORM. "DISPALY_DATA
*&---------------------------------------------------------------------*
*& Form GET_EVENTS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_EVENTS.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
ET_EVENTS = i_events.
READ TABLE I_EVENTS INTO WA_EVENTS WITH KEY NAME = 'USER_COMMAND'.
WA_EVENTS-FORM = 'FORM_USER_COMMAND'.
MODIFY I_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
ENDFORM. "GET_EVENTS
*&---------------------------------------------------------------------*
*& Form FORM_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->UCOMM text
* -->SELFIELD text
*----------------------------------------------------------------------*
FORM FORM_USER_COMMAND USING UCOMM TYPE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
READ TABLE I_VBAK INTO WA_VBAK INDEX SELFIELD-TABINDEX.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE I_VBAP
WHERE VBELN = WA_VBAK-VBELN.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_STRUCTURE_NAME = 'VBAP'
TABLES
T_OUTTAB = I_VBAP.
ENDFORM. "FORM_USER_COMMAND
The Output Screen as below.
Double Click on Any "VBELN" No , It will displays Secondary List As Below.