通过类CL_SALV_DISPLAY_SETTINGS我们可以设置ALV的显示样式,主要包括ALV表头名称,列表颜色间隔显示,水平线是否显示,竖线是否显示等。
我们要取得类CL_SALV_DISPLAY_SETTINGS的实例,根据类CL_SALV_TABLE的方法get_display_settings可以取得显示样式的实例。
REPORT ZSALV-01.
*SALV自定义按钮功能
*变量定义
DATA: S_ALV TYPE REF TO CL_SALV_TABLE.
"class 定义
CLASS SALV_DISPLAY DEFINITION."基础类
PUBLIC SECTION.
METHODS: DISPLAYDATA ."方法
EVENTS:FUNCTION ."事件
PRIVATE SECTION.
DATA:LR_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS,
LR_EVENTS TYPE REF TO CL_SALV_EVENTS,
LR_DISPLAY TYPE REF TO CL_SALV_DISPLAY_SETTINGS.
ENDCLASS.
CLASS SET_HANDLER DEFINITION.
PUBLIC SECTION.
"理解为为某个类的事件而产生的方法,相当于将2个类关联起来
METHODS:USER_COMMAND FOR EVENT ADDED_FUNCTION OF CL_SALV_EVENTS_TABLE"直接使用该类的function事件
IMPORTING E_SALV_FUNCTION.
ENDCLASS.
"class 实现
CLASS SALV_DISPLAY IMPLEMENTATION.
METHOD DISPLAYDATA.
SELECT * INTO TABLE @DATA(LT_VBAK) FROM VBAK UP TO 10 ROWS.
TRY.
CL_SALV_TABLE=>FACTORY( IMPORTING R_SALV_TABLE = S_ALV CHANGING T_TABLE = LT_VBAK ).
CATCH CX_SALV_MSG .
ENDTRY.
LR_EVENTS = S_ALV->GET_EVENT( )."获取事件
"设置ALV按钮功能
S_ALV->SET_SCREEN_STATUS(
PFSTATUS = 'SALV_STANDARD'
REPORT = SY-REPID
SET_FUNCTIONS = S_ALV->C_FUNCTIONS_ALL ).
*-------------------------- 设置ALV的显示样式-------------------------------------------
LR_DISPLAY = S_ALV->GET_DISPLAY_SETTINGS( ).
LR_DISPLAY->SET_STRIPED_PATTERN( 'X' )."设置颜色间隔显示
LR_DISPLAY->SET_LIST_HEADER( 'SLV展示报表DEMO' ). "设置ALV的抬头
LR_DISPLAY->SET_HORIZONTAL_LINES( '' ). "设置水平线是否显示
LR_DISPLAY->SET_VERTICAL_LINES( '' ). "设置垂直线是否显示
*-------------------------- 设置ALV的显示样式-------------------------------------------
"=====事件注册
DATA:HANDLER TYPE REF TO SET_HANDLER.
CREATE OBJECT HANDLER.
SET HANDLER HANDLER->USER_COMMAND FOR ALL INSTANCES.
S_ALV->DISPLAY( ).
ENDMETHOD.
ENDCLASS.
CLASS SET_HANDLER IMPLEMENTATION.
METHOD USER_COMMAND.
PERFORM USER_CLICK USING E_SALV_FUNCTION.
ENDMETHOD.
ENDCLASS.
FORM USER_CLICK USING P_SALV_FUNCTION TYPE SALV_DE_FUNCTION.
CASE P_SALV_FUNCTION.
WHEN '&CLICK'.
MESSAGE '你点击了我!' TYPE 'I'.
S_ALV->REFRESH( ).
ENDCASE.
ENDFORM.
START-OF-SELECTION.
DATA:LR_ALV TYPE REF TO SALV_DISPLAY.
CREATE OBJECT LR_ALV.
LR_ALV->DISPLAYDATA( ).

1508

被折叠的 条评论
为什么被折叠?



