CL_SALV_TABLE is the class used for this purpose
When ever we use ALV factory methods to display ALV, we don`t need to create any field catalog, we can directly add our user defined tables instance as it automatically determine fields and displays.
Below demonstrate a nice example
REPORT ZSAPN_ALV_MARA_FACTORY.
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 MARA.
DATA : LR_ALV TYPE REF TO CL_SALV_TABLE.
SELECT MATNR MTART MBRSH MATKL MEINS FROM MARA INTO TABLE IT_MARA UP TO 50 ROWS.
* TRY.
CALL METHOD CL_SALV_TABLE=>FACTORY “get SALV factory instance
* EXPORTING
* LIST_DISPLAY = IF_SALV_C_BOOL_SAP=>FALSE
* R_CONTAINER =
* CONTAINER_NAME =
IMPORTING
R_SALV_TABLE = LR_ALV
CHANGING
T_TABLE = IT_MARA.
* CATCH CX_SALV_MSG .
* ENDTRY.
**get ALV columns
DATA : LR_COLUMNS TYPE REF TO CL_SALV_COLUMNS_TABLE. “columns instance
DATA : LR_COL TYPE REF TO CL_SALV_COLUMN_TABLE. “column instance
CALL METHOD LR_ALV->GET_COLUMNS “get all columns
RECEIVING
VALUE = LR_COLUMNS.
IF LR_COLUMNS IS NOT INITIAL.
*TRY.
* Get VBELN column
TRY.
LR_COL ?= LR_COLUMNS->GET_COLUMN( ‘MATNR’ ). “get MATNR columns to insert hotspot
CATCH CX_SALV_NOT_FOUND.
ENDTRY.
*
* Set the Hotspot for MATNR Column
TRY.
CALL METHOD LR_COL->SET_CELL_TYPE “set cell type hotspot
EXPORTING
VALUE = IF_SALV_C_CELL_TYPE=>HOTSPOT.
.
CATCH CX_SALV_DATA_ERROR .
ENDTRY.
ENDIF.
LR_ALV->DISPLAY( ).