流程顺序
ALV的组成主要分为以下3大部分:
- 工具栏
- 标题栏
- 显示数据的网格控制器(必要时可以隐藏工具栏和标题栏)
ALV开发注意事项
- 在ALV中,需要注意所有需要显示的列,都必须在相应的内表中有对应的字段,字段名字不能写错。
- 在SAP ABAP程序中,字符串的大小写很重要,在单引号包围的字符串中,一般来说都应该用大写,特别是在调用一些系统的方法时传入字符串参数时。
- 传入到ALV中的列对应的字段名称也必须使用大写字母,否则数据不会显示出来。
- 使用宏定义或者子例程可以减少代码量,并且尽可能实现代码的复用。
- 注意在form里定义的变量在离开form后,就会被系统释放掉,回收内存空间。
开发ALV的基本流程
第一步:声明变量
定义ALV所要用到的类型池:type-pools:slis.
针对ALV的控制信息数据(Layout & Fieldcat)
type-pools:slis. "引入slis包定义使用专门ALV
data: gs_fielcat type lvc_s_fcat, "ALV控制:字段目录
gt_fielcat type lvc_t_fcat. "字段目录的工作区
data: gs_layout type lvc_s_layo. "ALV控制:布局结构
data: gs_listheader type slis_t_listheader, "表头的设置
gs_setting type lvc_s_glay. "网格设置
data: lt_event type slis_t_event, "事件的内表
ls_event type slis_alv_event. "事件的工作区
data: gs_sort type lvc_s_sort, "ALV控制:排序顺序
gt_sort type lvc_t_sort.
data:gs_stbl type lvc_s_stabl. "ALV控制:刷新稳定性
第二步:定义内表
存放自定义数据文件的数据,以及在ALV中显示
*方法一:
data: begin of gs_out,
sel,
id type zxytest-id, "学号
name type zxytest-name, "姓名
age type zxytest-age, "年龄
sex type zxytest-sex, "性别
hobby type zxytest-hobby, "爱好
end of gs_out.
data:gt_out like table of gs_out.
field-symbols: <fs_out> like gs_out. "定义gs_out的指针
* 方法二
types:begin of ls_out,
sel,
id type zxytest-id, "学号
name type zxytest-name, "姓名
age type zxytest-age, "年龄
sex type zxytest-sex, "性别
hobby type zxytest-hobby, "爱好
end of ls_out.
data: gs_out type ls_out,
gt_out type ls_out,
gs_out_pc type ls_out,
gt_out_pc type ls_out.
field-symbols:<fs_out> type lt_out.
第三步:读取数据
读取数据存放至Internal Table(内表)
form frm_get_data.
select *
into corresponding fields of table gt_out
from zxytest
where id in s_id
and name in s_name
and age in s_age.
endform.
第四步:ALV格式控制
ALV开发中两个重要的对象——fieldcat和layout
在调用ALV的函数中,除了定义所输出使用的内表之外,还有两部分是必须确认的:列栏位属性和布局属性。
列栏位属性fieldcat:
设置输出中具体字段的名称、类型、格式等属性;
对于系统结构表,函数可参照此结构自动创建列属性(这里是指REUSE_ALV_GRID_DISPLAY_LVC方法中的i_structre_name参数
),可以没有调用列栏位属性。
布局属性layout:
设置输出ALV列表的整体布局的属性,如输出字段的颜色、表格中的线条等。
没有调用布局属性时,系统按默认布局输出,不做任何调整。
两对象同属于类型组slis,在ALV开发中必须声明类型组slis。
ALV参数控制
在列栏位属性主要用到的参考表
lvc_s_fcat;
lvc_t_fcat.
data: gs_fielcat type lvc_s