一般的ALV有三种显示形式,分别为
一、普通的List
二、全屏的Grid
三、在自定义屏幕的显示的Grid
跟以往实现这三种ALV显示方式相比,以往的三种显示方式分别是调用不同的Function和Class,实现方式复杂。现在这三种显示方式可以通过一个类(CL_SALV_TABLE)来实现,而且通过这个类和它的子类可以更加容易的实现ALV的功能,比如:排序,总计,过滤,页眉页脚,单击双击事件等。
下面让我们一步一步地来实现这三种显示形式。
1.首先我们先创建选择屏幕,屏幕有三个选项,三个选项分别为三种显示方式。
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.
PARAMETERS: p_full RADIOBUTTON GROUP rg,
p_list RADIOBUTTON GROUP rg,
p_grid RADIOBUTTON GROUP rg.
SELECTION-SCREEN END OF BLOCK blk.
2取得要显示的数据。
SELECT * INTO TABLE lt_tab FROM spfli
3.判断选择屏幕的选项创建不同的实例。
CASE 'X'.
WHEN p_full.
me->alv_full( lt_tab ).
WHEN p_list.
me->alv_list( lt_tab ).
WHEN p_grid.
me->alv_grid( lt_tab ).
ENDCASE.
4.当用户选择第一个选项,列表输出为全屏的网格列表,执行方法alv_full( )。
METHOD alv_full.
"创建实例
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = lt_tab
).
CATCH cx_salv_msg.
ENDTRY.
"显示列表
gr_table->display( ).
ENDMETHOD. "alv_full
5.当用户选择第二个选项,列表输出为普通的列表,执行方法alv_list( ).alv_list方法跟alv_full方法不同的是在创建实例的时候多了一个选项list_display = ‘X’.
METHOD alv_list.