OO ALV FACTORY METHOD

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( ).

Leave a comment