Blocked list in ALV
REPORT ZSAPN_ALV_BLOCKEDLIST.
TYPES: BEGIN OF TY_MARA, "user defined type for 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, "mara internal table
WA_MARA TYPE TY_MARA. "mara work area
DATA : T_FCAT TYPE SLIS_T_FIELDCAT_ALV. "field catalog for MARA table
DATA : W_FCAT LIKE LINE OF T_FCAT.
TYPES: BEGIN OF TY_MAKT, "user defined type for MAKT
MATNR TYPE MAKT-MATNR,
SPRAS TYPE MAKT-SPRAS,
MAKTX TYPE MAKT-MAKTX,
END OF TY_MAKT.
DATA : IT_MAKT TYPE TABLE OF TY_MAKT, "makt internal table
WA_MAKT TYPE TY_MAKT.
DATA : T_FCAT_MAKT TYPE SLIS_T_FIELDCAT_ALV. "makt field catalog
DATA : W_FCAT_MAKT LIKE LINE OF T_FCAT_MAKT.
PARAMETERS : P_MTART TYPE MARA-MTART. "material type input
START-OF-SELECTION.
SELECT MATNR
MTART
MBRSH
MATKL
MEINS FROM MARA "get MARA data
INTO TABLE IT_MARA UP TO 10 ROWS WHERE MTART = P_MTART.
IF NOT IT_MARA IS INITIAL .
SELECT MATNR
SPRAS
MAKTX FROM MAKT INTO TABLE IT_MAKT "get makt data
FOR ALL ENTRIES IN IT_MARA WHERE MATNR = IT_MARA-MATNR.
ENDIF.
***build fcat for MARA
W_FCAT-COL_POS = '1'. "coloum position
W_FCAT-FIELDNAME = 'MATNR'. "column name
W_FCAT-TABNAME = 'IT_MARA'. "table
W_FCAT-REF_TABNAME = 'MARA'. "table
W_FCAT-REF_FIELDNAME = 'MATNR'. "referance field, it will show descriptions automatically
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
W_FCAT-COL_POS = '2'.
W_FCAT-FIELDNAME = 'MTART'.
W_FCAT-TABNAME = 'IT_MARA'.
W_FCAT-REF_TABNAME = 'MARA'.
W_FCAT-REF_FIELDNAME = 'MTART'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
W_FCAT-COL_POS = '3'.
W_FCAT-FIELDNAME = 'MBRSH'.
W_FCAT-TABNAME = 'IT_MARA'.
W_FCAT-REF_TABNAME = 'MARA'.
W_FCAT-REF_FIELDNAME = 'MBRSH'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
W_FCAT-COL_POS = '4'.
W_FCAT-FIELDNAME = 'MATKL'.
W_FCAT-TABNAME = 'IT_MARA'.
W_FCAT-REF_TABNAME = 'MARA'.
W_FCAT-REF_FIELDNAME = 'MATKL'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
W_FCAT-COL_POS = '5'.
W_FCAT-FIELDNAME = 'MEINS'.
W_FCAT-TABNAME = 'IT_MARA'.
W_FCAT-REF_TABNAME = 'MARA'.
W_FCAT-REF_FIELDNAME = 'MEINS'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
***build fcat for MAKT
W_FCAT_MAKT-COL_POS = '1'.
W_FCAT_MAKT-FIELDNAME = 'MATNR'.
W_FCAT_MAKT-TABNAME = 'IT_MAKT'.
W_FCAT_MAKT-REF_TABNAME = 'MAKT'.
W_FCAT_MAKT-REF_FIELDNAME = 'MATNR'.
APPEND W_FCAT_MAKT TO T_FCAT_MAKT.
CLEAR W_FCAT_MAKT.
W_FCAT_MAKT-COL_POS = '2'.
W_FCAT_MAKT-FIELDNAME = 'SPRAS'.
W_FCAT_MAKT-TABNAME = 'IT_MAKT'.
W_FCAT_MAKT-REF_TABNAME = 'MAKT'.
W_FCAT_MAKT-REF_FIELDNAME = 'SPRAS'.
APPEND W_FCAT_MAKT TO T_FCAT_MAKT.
CLEAR W_FCAT_MAKT.
W_FCAT_MAKT-COL_POS = '3'.
W_FCAT_MAKT-FIELDNAME = 'MAKTX'.
W_FCAT_MAKT-TABNAME = 'IT_MAKT'.
W_FCAT_MAKT-REF_TABNAME = 'MAKT'.
W_FCAT_MAKT-REF_FIELDNAME = 'MAKTX'.
APPEND W_FCAT_MAKT TO T_FCAT_MAKT.
CLEAR W_FCAT_MAKT.
* * init
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT' "initialize Block List ALV
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID.
DATA S_EVENTS TYPE SLIS_T_EVENT.
DATA S_LAYOUT TYPE SLIS_LAYOUT_ALV.
S_LAYOUT-ZEBRA = 'X'.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND' "append ALV lists
EXPORTING
IS_LAYOUT = S_LAYOUT "set layout
IT_FIELDCAT = T_FCAT "set field catalog
I_TABNAME = 'IT_MARA' "table
IT_EVENTS = S_EVENTS "events
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MARA "out put table
* EXCEPTIONS
* PROGRAM_ERROR = 1
* MAXIMUM_OF_APPENDS_REACHED = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND' "append ALV lists
EXPORTING
IS_LAYOUT = S_LAYOUT "set layout
IT_FIELDCAT = T_FCAT_MAKT "set field catalog
I_TABNAME = 'IT_MAKT' "table
IT_EVENTS = S_EVENTS "events
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MAKT "out put table
* EXCEPTIONS
* PROGRAM_ERROR = 1
* MAXIMUM_OF_APPENDS_REACHED = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY' . "display blocked list