一、ALV的功能设计
细心的读者肯定已经注意前面的两个例子少了点什么,少了ALV提供的标准功能,比如排序,过滤,汇总,等,以及用户可以在ALV的功能栏上加上自己自定义的功能按钮。
ALV的标准功能可以通过类CL_SALV_FUNCTIONS和CL_SALV_FUNCTION来设计,通过这两个类你可以对ALV提供的标准功能可见或不可见。也可以自己创建GUI STATUS设置自己的ALV功能,通过GUI STATUS来设置ALV的功能是通过类CL_SALV_TABLE的方法SET_SCREEN_STATUS来实现的。
1.首先我们要取得类CL_SALV_FUNCTIONS的实例,根据类CL_SALV_TABLE的方法get_functions可以取得功能实例。
lr_functions = gr_table->get_functions( ).
2.根据类CL_SALV_TABLE的方法设置功能栏。
gr_table->set_screen_status(
3.自定义功能的实现。ALV的自定义功能的实现动作要通过类的事件来处理。
ENDCLASS.
CLASS lcl_handle_events IMPLEMENTATION.
ENDCLASS.
SET HANDLER lcl_handle_events=>on_user_command FOR lr_events.
下面是程序的所有代码:
REPORT
TYPES ty_spfli TYPE spfli OCCURS 0.
DATA: gr_table
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
ENDCLASS.
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
ENDCLASS.
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv DEFINITION.
ENDCLASS.
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv IMPLEMENTATION.
ENDCLASS.
START-OF-SELECTION.
二、ALV的显示样式
通过类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( ).
REPORT
*变量定义
TYPES ty_spfli TYPE spfli OCCURS 0.
DATA: gr_table
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv DEFINITION.
ENDCLASS.
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv IMPLEMENTATION.
*取得要显示的数据=======================================================
*输出全屏网格列表的方法==================================================
*主方法,整合数据=======================================================
ENDCLASS.
*报表执行=======================================================
START-OF-SELECTION.
三、ALV的栏位属性
ALV的栏位属性是SAP提供的ALV功能的比较重要的一个,详细的功能包括异常状态图标、图标、符号、复选框、按钮、热点、超链接、单元格类型、单元格颜色、某一栏位颜色、某一行颜色,栏位隐藏等等。ALV的栏位功能主要是通过CL_SALV_COLUMN_TABLE和CL_SALV_COLUMNS_TABLE这两个类的实现的。
DATA
lr_columns = gr_table->get_columns( ).
2.然后通过类CL_SALV_COLUMNS_TABLE的方法get_column(value)取得指定的栏位的CL_SALV_COLUMN_TABLE的实例,取指定的栏位的实例之后,你就可以对这个栏位的相关属性进行设置。
DATA
lr_column
3.取得指定的栏位的实例之后,在这个实例的基础上进行相关的属性设置。
下面是程序的所有代码:
*变量定义
INCLUDE .
INCLUDE .
TYPES: BEGIN OF gs_spfli,
END OF gs_spfli.
TYPES
DATA: gr_table
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv DEFINITION.
ENDCLASS.
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv IMPLEMENTATION.
*取得要显示的数据=======================================================
*输出全屏网格列表的方法============================================
*设置字段属性=======================================================
*主方法,整合数据=======================================================
ENDCLASS.
*报表执行=============================================================
START-OF-SELECTION.