You are on page 1of 2

* Data needed to support ALV

DATA: LR_TABLE TYPE REF TO CL_SALV_TABLE,


LR_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS,
LR_DISPLAY TYPE REF TO CL_SALV_DISPLAY_SETTINGS,
LR_COLUMNS TYPE REF TO CL_SALV_COLUMNS_TABLE,
LR_COLUMN TYPE REF TO CL_SALV_COLUMN_TABLE,
LWA_COLUMNS TYPE SALV_S_COLUMN_REF,
LIT_COLUMNS TYPE SALV_T_COLUMN_REF,
LV_HLD_TXT TYPE SCRTEXT_M,
LS_COLOR TYPE LVC_S_COLO,
LRNG_CNAM TYPE RANGE OF LVC_FNAME WITH HEADER LINE.

* Prepare columns that should be shown on results...


LRNG_CNAM-SIGN = 'I'.
LRNG_CNAM-OPTION = 'EQ'.
LRNG_CNAM-LOW = 'VBELN'. APPEND LRNG_CNAM.
LRNG_CNAM-LOW = 'POSNR'. APPEND LRNG_CNAM.
LRNG_CNAM-LOW = 'TKNUM'. APPEND LRNG_CNAM.
LRNG_CNAM-LOW = 'SEQNO'. APPEND LRNG_CNAM.

TRY.
CL_SALV_TABLE=>FACTORY( IMPORTING R_SALV_TABLE = LR_TABLE
CHANGING T_TABLE = GIT_RESULTS ).
LR_FUNCTIONS = LR_TABLE->GET_FUNCTIONS( ).
LR_FUNCTIONS->SET_ALL( ABAP_TRUE ).
LR_DISPLAY = LR_TABLE->GET_DISPLAY_SETTINGS( ).
LR_DISPLAY->SET_STRIPED_PATTERN( CL_SALV_DISPLAY_SETTINGS=>TRUE ).
LR_DISPLAY->SET_LIST_HEADER( SY-TITLE ).
LR_COLUMNS = LR_TABLE->GET_COLUMNS( ).
LR_COLUMNS->SET_OPTIMIZE( ABAP_TRUE ).

LIT_COLUMNS = LR_COLUMNS->GET( ).
LOOP AT LIT_COLUMNS INTO LWA_COLUMNS.
TRY.
LR_COLUMN ?= LR_COLUMNS->GET_COLUMN( LWA_COLUMNS-COLUMNNAME ).
CATCH CX_SALV_NOT_FOUND. "#EC NO_HANDLER
CONTINUE.
ENDTRY.

IF P_FIELD EQ 'X' OR P_MANU EQ 'X'.


IF LWA_COLUMNS-COLUMNNAME(1) EQ 'N'.
IF LWA_COLUMNS-COLUMNNAME EQ 'NCODE' AND P_FIELD EQ 'X'.
LR_COLUMN->SET_VISIBLE( ' ' ).
ELSE.
LV_HLD_TXT = LR_COLUMN->GET_MEDIUM_TEXT( ).
CONCATENATE 'New' LV_HLD_TXT INTO LV_HLD_TXT SEPARATED BY SPACE.
LR_COLUMN->SET_SHORT_TEXT( ' ' ).
LR_COLUMN->SET_MEDIUM_TEXT( LV_HLD_TXT ).
LR_COLUMN->SET_LONG_TEXT( ' ' ).
ENDIF.

ELSEIF LWA_COLUMNS-COLUMNNAME EQ 'FLDCHG_CODE' OR LWA_COLUMNS-COLUMNNAME


EQ 'ZFIELD'.
LS_COLOR-COL = '3'.
LR_COLUMN->SET_COLOR( LS_COLOR ).

ELSEIF LWA_COLUMNS-COLUMNNAME IN LRNG_CNAM.


LR_COLUMN->SET_KEY( 'X' ).
ENDIF.
ELSE.
IF LWA_COLUMNS-COLUMNNAME EQ 'NCODE'.
LV_HLD_TXT = LR_COLUMN->GET_MEDIUM_TEXT( ).
CONCATENATE 'New' LV_HLD_TXT INTO LV_HLD_TXT SEPARATED BY SPACE.
LR_COLUMN->SET_SHORT_TEXT( ' ' ).
LR_COLUMN->SET_MEDIUM_TEXT( LV_HLD_TXT ).
LR_COLUMN->SET_LONG_TEXT( ' ' ).
LS_COLOR-COL = '3'.
LR_COLUMN->SET_COLOR( LS_COLOR ).

ELSEIF LWA_COLUMNS-COLUMNNAME IN LRNG_CNAM.


LR_COLUMN->SET_KEY( 'X' ).

ELSEIF LWA_COLUMNS-COLUMNNAME NE 'FLDCHG_CODE'.


LR_COLUMN->SET_VISIBLE( ' ' ).
ENDIF.
ENDIF.

ENDLOOP.

* Display ALV Grid


LR_TABLE->DISPLAY( ).
CATCH CX_SALV_MSG.
CATCH CX_SALV_NOT_FOUND.
CATCH CX_SALV_DATA_ERROR.
CATCH CX_SALV_EXISTING.
ENDTRY.

You might also like