Sei sulla pagina 1di 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,
LR_SORTS TYPE REF TO CL_SALV_SORTS,
LR_LAYOUT TYPE REF TO CL_SALV_LAYOUT,
LR_EVENTS TYPE REF TO CL_SALV_EVENTS_TABLE,
LR_SELECTIONS TYPE REF TO CL_SALV_SELECTIONS,
LR_AGG TYPE REF TO CL_SALV_AGGREGATIONS,
LS_COLOR TYPE LVC_S_COLO,
LX_KEY TYPE SALV_S_LAYOUT_KEY.

DATA: EVENT_HANDLER TYPE REF TO LCL_HANDLE_EVENTS.

TRY.
CL_SALV_TABLE=>FACTORY( IMPORTING R_SALV_TABLE = LR_TABLE
CHANGING T_TABLE = IT_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 ).

* Layout
LR_LAYOUT = GR_TABLE->GET_LAYOUT( ).
LS_KEY-REPORT = SY-REPID.
LR_LAYOUT->SET_KEY( LS_KEY ).
LR_LAYOUT->SET_SAVE_RESTRICTION( CL_SALV_LAYOUT=>RESTRICT_NONE ).

* Setup column texts


LR_COLUMN ?= LR_COLUMNS->GET_COLUMN( 'PRCTYP' ).
LR_COLUMN->SET_MEDIUM_TEXT( 'Process Type'(013) ).
LR_COLUMN->SET_SHORT_TEXT( ' ' ).
* Set Color
LS_COLOR-COL = '3'.
LR_COLUMN->SET_COLOR( LS_COLOR ).

** Setup column to handle negative numbers


* R_COLUMN ?= R_COLUMNS->GET_COLUMN( 'WRBTR' ).
* R_COLUMN->SET_SIGN( ABAP_TRUE ).

* Events
LR_EVENTS = GR_TABLE->GET_EVENT( ).

CREATE OBJECT EVENT_HANDLER.


SET HANDLER EVENT_HANDLER->ON_DOUBLE_CLICK FOR LR_EVENTS.

* Setup selections
LR_SELECTIONS = GR_TABLE->GET_SELECTIONS( ).
LR_SELECTIONS->SET_SELECTION_MODE( 1 ). "SINGLE

* Setup column texts - Another Method


LIT_COLUMNS = LR_COLUMNS->GET( ).
LOOP AT LIT_COLUMNS INTO LWA_COLUMNS WHERE COLUMNNAME EQ 'ZERO_FLDS'
OR COLUMNNAME EQ 'NEW'.

LR_COLUMN ?= LR_COLUMNS->GET_COLUMN( LWA_COLUMNS-COLUMNNAME ).


CASE LWA_COLUMNS-COLUMNNAME.
WHEN 'ZERO_FLDS'.
LR_COLUMN->SET_LONG_TEXT( 'Clear Values' ).
WHEN 'NEW'.
LR_COLUMN->SET_LONG_TEXT( 'New' ).
ENDCASE.
LR_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LR_COLUMN->SET_SHORT_TEXT( ' ' ).
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.

Definition also need to be there for Events like sample below...


CLASS LCL_HANDLE_EVENTS DEFINITION.
PUBLIC SECTION.
METHODS:
ON_USER_COMMAND FOR EVENT ADDED_FUNCTION OF CL_SALV_EVENTS
IMPORTING E_SALV_FUNCTION.

ENDCLASS.

************************************************************************
* CLASS IMPLEMENTATIONS
************************************************************************
CLASS LCL_HANDLE_EVENTS IMPLEMENTATION.

METHOD ON_DOUBLE_CLICK.
READ TABLE GIT_ORDERS INTO GWA_ORDERS INDEX ROW.
IF SY-SUBRC EQ 0.
PERFORM DISPLAY_SINGLE CHANGING GWA_ORDERS.
* refresh the table in order to see the new data
GR_TABLE->REFRESH( REFRESH_MODE = IF_SALV_C_REFRESH=>FULL ).
ENDIF.

ENDMETHOD. "ON_DOUBLE_CLICK

ENDCLASS. "LCL_HANDLE_EVENTS IMPLEMENTATION

Potrebbero piacerti anche