ALV without fieldcatalog(Need to pass table structures. Internally fieldcatalog is generated.
REPORT ZTEST_FIELDCAT1.
"Without Fieldcatalog.
DATA:I_MARD TYPE MARD OCCURS 0 WITH HEADER LINE.
DATA:L_PROGRAM TYPE SY-REPID VALUE SY-REPID.
START-OF-SELECTION.
"Get data from MARD
SELECT * FROM MARD INTO TABLE I_MARD UP TO 100 ROWS.
" Call ALV function module and structure name instead of F
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = L_PROGRAM
I_STRUCTURE_NAME = 'MARD'
TABLES
T_OUTTAB = I_MARD.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Automatic fieldcatalog generation -function module REUSE_ALV_FIELDCATALOG_MERGE.
REPORT ZTEST_FIELDCAT2.
"Automatic Fieldcatalog Generation.
DATA:I_MARD TYPE MARD OCCURS 0 WITH HEADER LINE.
TYPE-POOLS:SLIS.
DATA:I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA L_PROGRAM TYPE SY-REPID VALUE SY-REPID.
SELECT * FROM MARD INTO TABLE I_MARD UP TO 100 ROWS.
"Use function module create Fieldcat.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = L_PROGRAM
I_STRUCTURE_NAME = 'MARD'
I_INCLNAME = L_PROGRAM
I_BYPASSING_BUFFER = 'X'
CHANGING
CT_FIELDCAT = I_FIELDCAT.
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 ALV Grid fm and pass fieldcatalog and data
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = L_PROGRAM
IT_FIELDCAT = I_FIELDCAT
TABLES
T_OUTTAB = I_MARD.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Semi Automatic Fieldcatalog Generation - function module REUSE_ALV_FIELDCATALOG_MERGE
REPORT ZTEST_FIELDCAT3.
"Semi Automatic Fieldcatalog Generation.
DATA: BEGIN OF I_MARD OCCURS 0,
MATNR LIKE MARD-MATNR,
WERKS LIKE MARD-WERKS,
LGORT LIKE MARD-LGORT,
PSTAT LIKE MARD-PSTAT,
END OF I_MARD.
TYPE-POOLS:SLIS.
DATA:I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
SELECT MATNR
WERKS
LGORT
PSTAT
FROM MARD
INTO CORRESPONDING FIELDS OF TABLE I_MARD
UP TO 100 ROWS.
"Use function module create Fieldcat.
DATA:L_PROGRAM TYPE SY-REPID VALUE SY-REPID.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = L_PROGRAM
I_INTERNAL_TABNAME = 'I_MARD'
I_INCLNAME = L_PROGRAM
I_BYPASSING_BUFFER = 'X'
CHANGING
CT_FIELDCAT = I_FIELDCAT.
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 ALV and pass fieldcatalog and data
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = L_PROGRAM
IT_FIELDCAT = I_FIELDCAT
TABLES
T_OUTTAB = I_MARD.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Manually populating fieldcatag table
REPORT ZTEST_FIELDCAT4.
"Fieldcatalog creation manually
DATA: BEGIN OF I_MARD OCCURS 0,
MATNR TYPE MARD-MATNR,
WERKS TYPE MARD-WERKS,
END OF I_MARD.
TYPE-POOLS:SLIS.
DATA:I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
W_FIELDCAT LIKE LINE OF I_FIELDCAT.
DATA:L_PROGRAM TYPE SY-REPID VALUE SY-REPID.
"Populate Fieldcatalog table
W_FIELDCAT-FIELDNAME = 'MATNR'.
W_FIELDCAT-TABNAME = 'I_MARD'.
W_FIELDCAT-SELTEXT_M = 'Material No'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'WERKS'.
W_FIELDCAT-TABNAME = 'I_MARD'.
W_FIELDCAT-SELTEXT_M = 'Plant'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
SELECT MATNR WERKS FROM MARD INTO CORRESPONDING FIELDS OF TABLE I_MARD UP TO 100 ROWS.
"Call ALV and pass fieldcatalog and data
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = L_PROGRAM
IT_FIELDCAT = I_FIELDCAT
TABLES
T_OUTTAB = I_MARD.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.