通过类CL_SALV_DISPLAY_SETTINGS我们可以设置ALV的显示样式,主要包括ALV表头名称,列表颜色间隔显示,水平线是否显示,竖线是否显示等。
1.首先我们要取得类CL_SALV_DISPLAY_SETTINGS的实例,根据类CL_SALV_TABLE的方法get_display_settings可以取得显示样式的实例。
lr_display = gr_table->get_display_settings( ).
2然后通过类CL_SALV_DISPLAY_SETTINGS的方法设置显示属性。
lr_display = gr_table->get_display_settings( ).
lr_display->set_striped_pattern( 'X' ). "设置颜色间隔显示
lr_display->set_list_header( 'Xin''s ALV' ). "设置ALV的抬头
lr_display->set_horizontal_lines( '' ). "设置水平线是否显示
lr_display->set_vertical_lines( '' ). "设置垂直线是否显示
下面是效果图
下面是程序的所有代码:
REPORT y_xin_002.
*变量定义
TYPES ty_spfli TYPE spfli OCCURS 0.
DATA: gr_table TYPE REF TO cl_salv_table.
*----------------------------------------------------------------------*
* CLASS lcl_alv DEFINITION
*----------------------------------------------------------------------*
* ALV操作类(定义)
*----------------------------------------------------------------------*
CLASS lcl_alv DEFINITION.
PUBLIC SECTION.
METHODS: getdata "取得要显示的数据
RETURNING value(lt_tab) TYPE ty_spfli,
alv_full "全屏Grid列表处理方法
IMPORTING value(lt_tab) TYPE ty_spfli,
main. "主方法
ENDCLASS. "lcl_alv DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_alv IMPLEMENTATION
*----------------------------------------------------------------------*
* ALV操作类(实现)
*----------------------------------------------------------------------*
CLASS lcl_alv IMPLEMENTATION.
*取得要显示的数据
METHOD getdata.
SELECT * INTO TABLE lt_tab FROM spfli.
ENDMETHOD. "getdata
*输出全屏网格列表的方法
METHOD alv_full.
DATA: lr_functions TYPE REF TO cl_salv_functions,
lr_display TYPE REF TO cl_salv_display_settings.
data boolean type c.
"创建实例
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = lt_tab
).
CATCH cx_salv_msg.
ENDTRY.
"显示ALV的标准功能
lr_functions = gr_table->get_functions( ).
lr_functions->set_all( 'X' ).
"设置ALV的显示样式
lr_display = gr_table->get_display_settings( ).
lr_display->set_striped_pattern( 'X' )."设置颜色间隔显示
lr_display->set_list_header( 'Xin''s ALV' ). "设置ALV的抬头
lr_display->set_horizontal_lines( '' ). "设置水平线是否显示
lr_display->set_vertical_lines( '' ). "设置垂直线是否显示
"显示列表
gr_table->display( ).
ENDMETHOD. "alv_full
*主方法,整合数据
METHOD main.
DATA: lt_tab TYPE TABLE OF spfli.
"取得要显示的数据
lt_tab = me->getdata( ).
me->alv_full( lt_tab ).
ENDMETHOD. "main
ENDCLASS. "lcl_alv IMPLEMENTATION
*报表执行
START-OF-SELECTION.
DATA lr_alv TYPE REF TO lcl_alv.
CREATE OBJECT lr_alv.
lr_alv->main( ).