01 功能说明
本系列将通过模拟用户与开发者之间的对话场景,来逐步演示SALV的使用。将采用一个实际的开发流程,假定用户提出了某些需求,然后开发者根据这些需求一步步实现功能,完善程序。
在这个过程中,将会按照功能将代码拆分成多个部分,这样分阶段呈现,更有利于按部就班学习SALV的用法。如果您打算使用SALV,建议认真学习和实践本系列的代码案例。相信通过这种类似对话的学习方式,您一定可以快速上手SALV,提高工作效率。
那我们就开始SALV之旅吧!
赶快动手试一试,掌握它的用法。
02 功能效果
第1天 用户说:基本使用
从表SPFLI获取数据,并进行基本展示。
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 ).
go_salv->display( ).
第2天 用户说:显示设置
能否修改下抬头标题文本,并斑马纹展示?
IF p_day02 EQ 'X'.
DATA lo_display TYPE REF TO cl_salv_display_settings.
lo_display = go_salv->get_display_settings( ).
lo_display->set_list_header( 'ABAP SALV演示程序-公众号(ABAP猿)' ).
lo_display->set_striped_pattern( 'X' ).
...
ENDIF.
第3天 用户说:列设置(优化列宽)
能否优化下列宽?
IF p_day03 EQ 'X'.
DATA lo_columns TYPE REF TO cl_salv_columns_table .
lo_columns = go_salv->get_columns( ).
lo_columns->set_optimize( 'X' ).
...
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) day02 .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) day03 .
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_day02 AS CHECKBOX DEFAULT 'X' . "02、外观设置
PARAMETERS p_day03 AS CHECKBOX DEFAULT 'X' . "03、列设置
SELECTION-SCREEN END OF BLOCK b2.
INITIALIZATION.
sy-title = 'ABAP SALV演示程序-公众号(ABAP猿)'.
t1 = '用户说'.
t2 = '你来做'.
day01 = '01、从表SPFLI获取数据,并进行基本展示。'.
day02 = '02、能否修改下抬头标题文本,并斑马纹展示?'.
day03 = '03、能否优化下列宽?'.
%_p_day01_%_app_%-text = '01、基本展示'.
%_p_day02_%_app_%-text = '02、外观设置'.
%_p_day03_%_app_%-text = '03、列设置'.
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_day02 EQ 'X'.
DATA lo_display TYPE REF TO cl_salv_display_settings.
lo_display = go_salv->get_display_settings( ).
lo_display->set_list_header( 'ABAP SALV演示程序-公众号(ABAP猿)' ).
lo_display->set_striped_pattern( 'X' ).
...
ENDIF.
*------------------------------------*
IF p_day03 EQ 'X'.
DATA lo_columns TYPE REF TO cl_salv_columns_table .
lo_columns = go_salv->get_columns( ).
lo_columns->set_optimize( 'X' ).
...
ENDIF.
*------------------------------------*
go_salv->display( ).
小贴士:
- 可使用BC_DATA_GEN生成数据,以便查看演示效果;
- 以上纯属个人总结,如有纰漏请联系我;
以上是今日分享,希望对你有所帮助~~~
04 关注我
更多干货请扫码关注微信公众号:ABAP猿