BLOCKED LIST ALV IS USED TO DISPLAY MULTIPLE ALV ON THE SAME SCREEN WITH BLOCKS.(3 TABLES)
BLOCK REPORTING
*&---------------------------------------------------------------------*
*& Report ZBLOK_ALV
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZBLOK_ALV.
TYPE-POOLS: SLIS.
TABLES : MARA, MAKT,MARD.
TYPES: BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MATKL TYPE MARA-MATKL,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA: IT_MARA TYPE TABLE OF TY_MARA,
WA_MARA TYPE TY_MARA.
DATA:IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT LIKE LINE OF IT_FCAT.
TYPES: BEGIN OF TY_MAKT,
MATNR TYPE MAKT-MATNR,
MAKTX TYPE MAKT-MAKTX,
MAKTG TYPE MAKT-MAKTG,
END OF TY_MAKT.
DATA: IT_MAKT TYPE TABLE OF TY_MAKT,
WA_MAKT TYPE TY_MAKT.
DATA:IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT1 LIKE LINE OF IT_FCAT1.
TYPES: BEGIN OF TY_MARD,
MATNR TYPE MARD-MATNR,
WERKS TYPE MARD-WERKS,
LGORT TYPE MARD-LGORT,
PSTAT TYPE MARD-PSTAT,
END OF TY_MARD.
DATA: IT_MARD TYPE TABLE OF TY_MARD,
WA_MARD TYPE TY_MARD.
DATA:IT_FCAT2 TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT2 LIKE LINE OF IT_FCAT2.
DATA: IS_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_EVENTS TYPE SLIS_T_EVENT.
PARAMETERS: P_MTART TYPE MARA-MTART.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM FCAT_DATA.
PERFORM DISPLAY_BLOCK.
*&---------------------------------------------------------------------*
*& Form FCAT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FCAT_DATA .
WA_FCAT-COL_POS = 1.
WA_FCAT-FIELDNAME = 'MATNR'.
WA_FCAT-REF_FIELDNAME = 'MATNR'.
WA_FCAT-REF_TABNAME = 'MARA'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 2.
WA_FCAT-FIELDNAME = 'MTART'.
WA_FCAT-REF_FIELDNAME = 'MTART'.
WA_FCAT-REF_TABNAME = 'MARA'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 3.
WA_FCAT-FIELDNAME = 'MBRSH'.
WA_FCAT-REF_FIELDNAME = 'MBRSH'.
WA_FCAT-REF_TABNAME = 'MARA'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 4.
WA_FCAT-FIELDNAME = 'MATKL'.
WA_FCAT-REF_FIELDNAME = 'MATKL'.
WA_FCAT-REF_TABNAME = 'MARA'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 5.
WA_FCAT-FIELDNAME = 'MEINS'.
WA_FCAT-REF_FIELDNAME = 'MEINS'.
WA_FCAT-REF_TABNAME = 'MARA'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT1-COL_POS = 1.
WA_FCAT1-FIELDNAME = 'MATNR'.
WA_FCAT1-REF_FIELDNAME = 'MATNR'.
WA_FCAT1-REF_TABNAME = 'MAKT'.
APPEND WA_FCAT1 TO IT_FCAT1.
CLEAR WA_FCAT1.
WA_FCAT1-COL_POS = 2.
WA_FCAT1-FIELDNAME = 'MAKTX'.
WA_FCAT1-REF_FIELDNAME = 'MATKX'.
WA_FCAT1-REF_TABNAME = 'MAKT'.
APPEND WA_FCAT1 TO IT_FCAT1.
CLEAR WA_FCAT1.
WA_FCAT1-COL_POS = 3.
WA_FCAT1-FIELDNAME = 'MAKTG'.
WA_FCAT1-REF_FIELDNAME = 'MATKG'.
WA_FCAT1-REF_TABNAME = 'MAKT'.
APPEND WA_FCAT1 TO IT_FCAT1.
CLEAR WA_FCAT1.
WA_FCAT2-COL_POS = 1.
WA_FCAT2-FIELDNAME = 'MATNR'.
WA_FCAT2-REF_FIELDNAME = 'MATNR'.
WA_FCAT2-REF_TABNAME = 'MARD'.
APPEND WA_FCAT2 TO IT_FCAT2.
CLEAR WA_FCAT2.
WA_FCAT2-COL_POS = 2.
WA_FCAT2-FIELDNAME = 'WERKS'.
WA_FCAT2-REF_FIELDNAME = 'WERKS'.
WA_FCAT2-REF_TABNAME = 'MARD'.
APPEND WA_FCAT2 TO IT_FCAT2.
CLEAR WA_FCAT2.
WA_FCAT2-COL_POS = 3.
WA_FCAT2-FIELDNAME = 'LGORT'.
WA_FCAT2-REF_FIELDNAME = 'LGORT'.
WA_FCAT2-REF_TABNAME = 'MARD'.
APPEND WA_FCAT2 TO IT_FCAT2.
CLEAR WA_FCAT2.
WA_FCAT2-COL_POS = 4.
WA_FCAT2-FIELDNAME = 'PSTAT'.
WA_FCAT2-REF_FIELDNAME = 'PSTAT'.
WA_FCAT2-REF_TABNAME = 'MARD'.
APPEND WA_FCAT2 TO IT_FCAT2.
CLEAR WA_FCAT2.
IS_LAYOUT-ZEBRA = 'X'.
ENDFORM. " FCAT_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_BLOCK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_BLOCK .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* IT_EXCLUDING =
.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FCAT
I_TABNAME = 'MARA'
IT_EVENTS = IT_EVENTS
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MARA
EXCEPTIONS
PROGRAM_ERROR = 1
MAXIMUM_OF_APPENDS_REACHED = 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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FCAT1
I_TABNAME = 'MAKT'
IT_EVENTS = IT_EVENTS
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MAKT
EXCEPTIONS
PROGRAM_ERROR = 1
MAXIMUM_OF_APPENDS_REACHED = 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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FCAT2
I_TABNAME = 'MARD'
IT_EVENTS = IT_EVENTS
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MARD
EXCEPTIONS
PROGRAM_ERROR = 1
MAXIMUM_OF_APPENDS_REACHED = 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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
* I_INTERFACE_CHECK = ' '
* IS_PRINT =
* 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 =
* 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.
ENDFORM. " DISPLAY_BLOCK
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT MATNR MTART MBRSH MATKL MEINS FROM MARA
INTO TABLE IT_MARA UP TO 10 ROWS
WHERE MTART = P_MTART.
IF IT_MARA IS NOT INITIAL .
SELECT MATNR
MAKTX
MAKTG FROM MAKT INTO TABLE IT_MAKT
FOR ALL ENTRIES IN IT_MARA
WHERE MATNR = IT_MARA-MATNR.
ENDIF.
IF IT_MAKT IS NOT INITIAL .
SELECT MATNR
WERKS
LGORT
PSTAT
FROM MARD INTO TABLE IT_MARD
FOR ALL ENTRIES IN IT_MAKT
WHERE MATNR = IT_MAKT-MATNR.
ENDIF.
ENDFORM. " GET_DATA
*& Report ZBLOK_ALV
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZBLOK_ALV.
TYPE-POOLS: SLIS.
TABLES : MARA, MAKT,MARD.
TYPES: BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MATKL TYPE MARA-MATKL,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA: IT_MARA TYPE TABLE OF TY_MARA,
WA_MARA TYPE TY_MARA.
DATA:IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT LIKE LINE OF IT_FCAT.
TYPES: BEGIN OF TY_MAKT,
MATNR TYPE MAKT-MATNR,
MAKTX TYPE MAKT-MAKTX,
MAKTG TYPE MAKT-MAKTG,
END OF TY_MAKT.
DATA: IT_MAKT TYPE TABLE OF TY_MAKT,
WA_MAKT TYPE TY_MAKT.
DATA:IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT1 LIKE LINE OF IT_FCAT1.
TYPES: BEGIN OF TY_MARD,
MATNR TYPE MARD-MATNR,
WERKS TYPE MARD-WERKS,
LGORT TYPE MARD-LGORT,
PSTAT TYPE MARD-PSTAT,
END OF TY_MARD.
DATA: IT_MARD TYPE TABLE OF TY_MARD,
WA_MARD TYPE TY_MARD.
DATA:IT_FCAT2 TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT2 LIKE LINE OF IT_FCAT2.
DATA: IS_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_EVENTS TYPE SLIS_T_EVENT.
PARAMETERS: P_MTART TYPE MARA-MTART.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM FCAT_DATA.
PERFORM DISPLAY_BLOCK.
*&---------------------------------------------------------------------*
*& Form FCAT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FCAT_DATA .
WA_FCAT-COL_POS = 1.
WA_FCAT-FIELDNAME = 'MATNR'.
WA_FCAT-REF_FIELDNAME = 'MATNR'.
WA_FCAT-REF_TABNAME = 'MARA'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 2.
WA_FCAT-FIELDNAME = 'MTART'.
WA_FCAT-REF_FIELDNAME = 'MTART'.
WA_FCAT-REF_TABNAME = 'MARA'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 3.
WA_FCAT-FIELDNAME = 'MBRSH'.
WA_FCAT-REF_FIELDNAME = 'MBRSH'.
WA_FCAT-REF_TABNAME = 'MARA'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 4.
WA_FCAT-FIELDNAME = 'MATKL'.
WA_FCAT-REF_FIELDNAME = 'MATKL'.
WA_FCAT-REF_TABNAME = 'MARA'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 5.
WA_FCAT-FIELDNAME = 'MEINS'.
WA_FCAT-REF_FIELDNAME = 'MEINS'.
WA_FCAT-REF_TABNAME = 'MARA'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT1-COL_POS = 1.
WA_FCAT1-FIELDNAME = 'MATNR'.
WA_FCAT1-REF_FIELDNAME = 'MATNR'.
WA_FCAT1-REF_TABNAME = 'MAKT'.
APPEND WA_FCAT1 TO IT_FCAT1.
CLEAR WA_FCAT1.
WA_FCAT1-COL_POS = 2.
WA_FCAT1-FIELDNAME = 'MAKTX'.
WA_FCAT1-REF_FIELDNAME = 'MATKX'.
WA_FCAT1-REF_TABNAME = 'MAKT'.
APPEND WA_FCAT1 TO IT_FCAT1.
CLEAR WA_FCAT1.
WA_FCAT1-COL_POS = 3.
WA_FCAT1-FIELDNAME = 'MAKTG'.
WA_FCAT1-REF_FIELDNAME = 'MATKG'.
WA_FCAT1-REF_TABNAME = 'MAKT'.
APPEND WA_FCAT1 TO IT_FCAT1.
CLEAR WA_FCAT1.
WA_FCAT2-COL_POS = 1.
WA_FCAT2-FIELDNAME = 'MATNR'.
WA_FCAT2-REF_FIELDNAME = 'MATNR'.
WA_FCAT2-REF_TABNAME = 'MARD'.
APPEND WA_FCAT2 TO IT_FCAT2.
CLEAR WA_FCAT2.
WA_FCAT2-COL_POS = 2.
WA_FCAT2-FIELDNAME = 'WERKS'.
WA_FCAT2-REF_FIELDNAME = 'WERKS'.
WA_FCAT2-REF_TABNAME = 'MARD'.
APPEND WA_FCAT2 TO IT_FCAT2.
CLEAR WA_FCAT2.
WA_FCAT2-COL_POS = 3.
WA_FCAT2-FIELDNAME = 'LGORT'.
WA_FCAT2-REF_FIELDNAME = 'LGORT'.
WA_FCAT2-REF_TABNAME = 'MARD'.
APPEND WA_FCAT2 TO IT_FCAT2.
CLEAR WA_FCAT2.
WA_FCAT2-COL_POS = 4.
WA_FCAT2-FIELDNAME = 'PSTAT'.
WA_FCAT2-REF_FIELDNAME = 'PSTAT'.
WA_FCAT2-REF_TABNAME = 'MARD'.
APPEND WA_FCAT2 TO IT_FCAT2.
CLEAR WA_FCAT2.
IS_LAYOUT-ZEBRA = 'X'.
ENDFORM. " FCAT_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_BLOCK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_BLOCK .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* IT_EXCLUDING =
.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FCAT
I_TABNAME = 'MARA'
IT_EVENTS = IT_EVENTS
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MARA
EXCEPTIONS
PROGRAM_ERROR = 1
MAXIMUM_OF_APPENDS_REACHED = 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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FCAT1
I_TABNAME = 'MAKT'
IT_EVENTS = IT_EVENTS
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MAKT
EXCEPTIONS
PROGRAM_ERROR = 1
MAXIMUM_OF_APPENDS_REACHED = 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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FCAT2
I_TABNAME = 'MARD'
IT_EVENTS = IT_EVENTS
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MARD
EXCEPTIONS
PROGRAM_ERROR = 1
MAXIMUM_OF_APPENDS_REACHED = 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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
* I_INTERFACE_CHECK = ' '
* IS_PRINT =
* 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 =
* 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.
ENDFORM. " DISPLAY_BLOCK
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT MATNR MTART MBRSH MATKL MEINS FROM MARA
INTO TABLE IT_MARA UP TO 10 ROWS
WHERE MTART = P_MTART.
IF IT_MARA IS NOT INITIAL .
SELECT MATNR
MAKTX
MAKTG FROM MAKT INTO TABLE IT_MAKT
FOR ALL ENTRIES IN IT_MARA
WHERE MATNR = IT_MARA-MATNR.
ENDIF.
IF IT_MAKT IS NOT INITIAL .
SELECT MATNR
WERKS
LGORT
PSTAT
FROM MARD INTO TABLE IT_MARD
FOR ALL ENTRIES IN IT_MAKT
WHERE MATNR = IT_MAKT-MATNR.
ENDIF.
ENDFORM. " GET_DATA
Comments
Post a Comment