01 功能说明
本系列将通过模拟用户与开发者之间的对话场景,来逐步演示SALV的使用。在本篇中,我们将继续上一篇内容,以解决用户提出的另外两个需求:页眉 、 页脚 。让我们来看看是如何实现的吧。
赶快动手试一试,掌握它的用法。
02 功能效果
第10天 用户说:页眉
需要在抬头显示报表名称、执行日期。
IF p_day10 EQ 'X'.
DATA lo_header_grid TYPE REF TO cl_salv_form_layout_grid.
CREATE OBJECT lo_header_grid.
lo_header_grid->create_header_information( row = 1 column = 1 text = sy-title ).
lo_header_grid->create_action_information( row = 2 column = 1 text = sy-datum ).
go_salv->set_top_of_list( lo_header_grid ).
...
ENDIF.
第11天 用户说:页脚
需要在末尾显示公司名称、地址信息。
IF p_day11 EQ 'X'.
DATA lo_footer_grid TYPE REF TO cl_salv_form_layout_grid.
DATA lo_layout_flow TYPE REF TO cl_salv_form_layout_flow.
CREATE OBJECT lo_footer_grid.
lo_layout_flow = lo_footer_grid->create_flow( row = 3 column = 1 ).
lo_layout_flow->create_text( text = '公司名称:上海xxx公司' ).
lo_layout_flow = lo_footer_grid->create_flow( row = 3 column = 2 ).
lo_layout_flow->create_text( text = '公司地址:上海市xxx区xxx' ).
go_salv->set_end_of_list( lo_footer_grid ).
...
ENDIF.
03 源码分享
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) day01 .
SELECTION-SCREEN END OF LINE.
...
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) day10 .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) day11 .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t2.
PARAMETERS p_day01 AS CHECKBOX DEFAULT 'X' . "01、基本展示
...
PARAMETERS p_day10 AS CHECKBOX DEFAULT 'X' . "10、添加页眉
PARAMETERS p_day11 AS CHECKBOX DEFAULT 'X' . "11、添加页脚
SELECTION-SCREEN END OF BLOCK b2.
INITIALIZATION.
sy-title = 'ABAP SALV演示程序-公众号(ABAP猿)'.
t1 = '用户说'.
t2 = '你来做'.
day01 = '01、从表SPFLI获取数据,并进行基本展示。'.
...
day10 = '10、需要在抬头显示报表名称、执行日期。'.
day11 = '11、需要在末尾显示公司名称、地址信息。'.
%_p_day01_%_app_%-text = '01、基本展示'.
...
%_p_day10_%_app_%-text = '10、添加页眉'.
%_p_day11_%_app_%-text = '11、添加页脚'.
START-OF-SELECTION.
*------------------------------------*
CHECK p_day01 EQ 'X'.
DATA gt_spfli TYPE TABLE OF spfli.
SELECT * FROM spfli INTO TABLE gt_spfli UP TO 30 ROWS.
DATA go_salv TYPE REF TO cl_salv_table.
cl_salv_table=>factory(
IMPORTING
r_salv_table = go_salv
CHANGING
t_table = gt_spfli ).
...
*------------------------------------*
...
*------------------------------------*
IF p_day10 EQ 'X'.
DATA lo_header_grid TYPE REF TO cl_salv_form_layout_grid.
CREATE OBJECT lo_header_grid.
lo_header_grid->create_header_information( row = 1 column = 1 text = sy-title ).
lo_header_grid->create_action_information( row = 2 column = 1 text = sy-datum ).
go_salv->set_top_of_list( lo_header_grid ).
...
ENDIF.
*------------------------------------*
IF p_day11 EQ 'X'.
DATA lo_footer_grid TYPE REF TO cl_salv_form_layout_grid.
DATA lo_layout_flow TYPE REF TO cl_salv_form_layout_flow.
CREATE OBJECT lo_footer_grid.
lo_layout_flow = lo_footer_grid->create_flow( row = 3 column = 1 ).
lo_layout_flow->create_text( text = '公司名称:上海xxx公司' ).
lo_layout_flow = lo_footer_grid->create_flow( row = 3 column = 2 ).
lo_layout_flow->create_text( text = '公司地址:上海市xxx区xxx' ).
go_salv->set_end_of_list( lo_footer_grid ).
...
ENDIF.
*------------------------------------*
go_salv->display( ).
04 关注我
更多干货请扫码关注微信公众号:ABAP猿