目录
前言
在Net Weaver2004平台上集合了利用函数和GRID的功能发布的SALV包程序(SALV也称为New ALV)。
特点:
- SALV可以像使用函数方式生成ALV那样,不用创建屏幕就可以调用的全屏方式显示的ALV;
- SALV的GRID报表可以在后台运行,但以前函数方式或OO方式生成的GRID不能;
- SALV与现有的方法(Function ALV)相比,为了方便以接口的方式提供更整合及细微的功能,但SALV不提供编辑功能(可以通过SALV适配器调用CL_GUI_ALV_GRID修改成编辑模式)
实战
SALV有以下三种类型的报表:
三种显示模式
• 全屏模式
• 全屏模式—Classic 报表模式(普通List列表)
• 利用控制器的模式(利用用户自定义控件区域来控制ALV显示大小)
CL_SALV_TABL类
是通过其factory方法,生成SALV实例的,要显示ALV,只需要调用以下两个方法即可:
factory:静态方法。定义要显示在屏幕上的数据;定义ALV报表样式;调用此方法就会返回CL_SALV_TABLE类型的实例对象;
display:实例方法。调用此方法屏幕上就显示ALV;
factory方法参数:
LIST_DISPLAY:参数决定了列表显示的模式:是以List列表显示,还是Grid网格显示;
R_CONTAINER:用户自定义控件区域的引用对象,类型为CL_GUI_CONTAINER;
CONTAINER_NAME:屏幕上用户自定义控件区域(Custom Control);
R_SALV_TABLE:用来接收工厂产生的实例;
T_TABLE :输出内表数据;
其中的三个参数与显示模式关系如下:
显示模式 | LIST_DISPLAY | R_CONTAINER | CONTAINER_NAME |
全屏显示 | FALSE | 初始值 | 初始值 |
List列表 | TRUE | 初始值 | 初始值 |
控制器显示 | FALSE | CL_GUI_CONTAINER对象引用 | 用户自定义控件区域名称 |
案例
全屏显示
展示效果:
完整代码:
DATA gt_spfli TYPE TABLE OF spfli.
DATA go_salv TYPE REF TO cl_salv_table.
SELECT * FROM spfli INTO TABLE gt_spfli UP TO 10 ROWS.
cl_salv_table=>factory(
IMPORTING
r_salv_table = go_salv "用来接收工厂产生的实例
CHANGING
t_table = gt_spfli ).
go_salv->display( ). "调用实例方法显示表报
List显示
展示效果:
完整代码:
DATA gt_spfli TYPE TABLE OF spfli.
DATA go_salv TYPE REF TO cl_salv_table.
SELECT * FROM spfli INTO TABLE gt_spfli UP TO 10 ROWS.
cl_salv_table=>factory(
EXPORTING
list_display = abap_true "LIST列表显示
IMPORTING
r_salv_table = go_salv "用来接收工厂产生的实例
CHANGING
t_table = gt_spfli ).
go_salv->display( ). "调用实例方法显示表报
控制器显示
展示效果:
完整代码:
DATA gt_spfli TYPE TABLE OF spfli.
DATA go_salv TYPE REF TO cl_salv_table.
DATA:go_functions TYPE REF TO cl_salv_functions_list.
DATA:go_container TYPE REF TO cl_gui_custom_container.
START-OF-SELECTION.
CALL SCREEN 100.
MODULE pbo_0100 OUTPUT.
SELECT * FROM spfli INTO TABLE gt_spfli UP TO 10 ROWS.
"判断是否已分配了一个有效引用
IF go_container IS NOT BOUND.
"创建容器
CREATE OBJECT go_container
EXPORTING
container_name = 'CONTAINER'. "屏幕上用户自定义控件名
"创建ALV
cl_salv_table=>factory(
EXPORTING
r_container = go_container
"container_name = 'CONTAINER'
IMPORTING
r_salv_table = go_salv
CHANGING
t_table = gt_spfli[] ).
"设置工具栏
go_functions = go_salv->get_functions( ).
go_functions->set_all( abap_true ). "激活所有的ALV内置通用按钮
"显示
go_salv->display( ).
ENDIF.
ENDMODULE.
屏幕绘制界面: