一 .什么是ALV
SAP提供一套ALV(Application List viewer.)的功能模块,可以对输出报表的样式作修饰,提高报表输出的可读性和功能性,对于动态报表程序是一个很有效率的工具。一般的ALV报表有一个表头,再加上表内容,并附加一些如排序,分类汇总,合计或下载为本地文件等预设功能。ALV报表显示方式基本上有2种,一种是Grid方式,一种是List方式,分别调用不同的Function来实现。
二.ALV式样
1. REUSE_ALV_GRID_DISPLAY
2. REUSE_ALV_LIST_DISPLAY
3.ALV工具栏
三.ALV函数的调用
当完成从数据库抽取数据或上传数据,并将数据存放到内部表(IT_ABC)后,开始调用下面的ALV函数模块。
1.指定数据类型组
TYPE-POOLS: SLIS.
DATA:
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "ALV输出项目编辑用
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "ALV输出项目编辑用
WA_LAYOUT TYPE SLIS_LAYOUT_ALV. "ALV样式设定用
2.调出函数模块
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
TABLES
T_OUTTAB = IT_TAB.
......
3. 函数的各项说明
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 已经存在SAP系统中的结构
IS_LAYOUT = 布局
IT_FIELDCAT = 自定义
IT_SORT = 对项目的一个排序
IT_EVENTS = 标题部分
......
四.使用ALV的注意事项
1.在ALV中,需要注意所有添加的需要显示的列,都必须在相应的内表中有对应的字段,否则,只要使用合计或者分类汇总都会导致程序的崩溃。
2.在SAP ABAP程序中,字符串的大小写很重要,在单引号包围的字符串中,一般来说都应该用大写,特别是在调用一些系统的方法时传入字符串参数时,例如在ALV中,
Call Function ‘REUSE_ALV_GRID_DISPLAY’时,
传入的下面的两个参数:
i_callback_pf_status_set = ‘SET_PF_STATUS’
i_callback_user_command = ‘USER_COMMAND’
就必须使用大写字符串,否则就会出现Perform_not_found的系统错误。
3.另外,传入到ALV中的列对应的字段名称也必须使用大写字母,否则数据不会显示出来。
五.相关参数说明
1.构造SLIS_FIELDCAT_ALV常用参数说明
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = ‘MTART‘. “指定从内表中的输出的数据项目
WA_FIELDCAT-SELTEXT_L = ‘品目タイプ‘. “上面指定项目显示时的名称(长文本)
WA_FIELDCAT-SELTEXT_M = ‘品目タイプ‘. “上面指定项目显示时的名称(中文本)
WA_FIELDCAT-SELTEXT_S = ‘品目タイプ‘. “上面指定项目显示时的名称(短文本)
WA_FIELDCAT-REPTEXT_DDIC = ‘品目タイプ‘. “上面指定项目显示时的名称(定义文本)
WA_FIELDCAT-OUTPUTLEN = 15. “列的显示宽度
WA_FIELDCAT-HOTSPOT = ‘X’. “设置热点状态
......
APPEND WA_FIELDCAT TO IT_FIELDCAT.
注意:有多少个项目列要显示就要这样向内部表IT_FIELDCAT中追加记录多少次。
2.构造SLIS_LAYOUT_ALV常用参数说明
LAYOUT-ZEBRA = ‘X’. “斑马线样式
LAYOUT-COLWIDTH_OPTIMIZE = 'X'. “列宽度自动根据内容优化
LAYOUT-NO_COLHEAD = ‘X’. “列名称不显示
LAYOUT-NO_VLINE = ‘X’. “不表示区分用的垂直线
LAYOUT-EDIT = ‘X’. “列值可编辑,只用于GRID
LAYOUT-WINDOW_TITLEBAR = ‘ALV窗体的标题’. “一行
......
六.通常调用所使用参数
CALL FUNCTION'REUSE_ALV_LIST_DISPLAY'
EXPORTING
IT_FIELDCAT = IT_FIELDCAT "输出项目列文本信息(表头)
IS_LAYOUT = L_LAYOUT "输出列表样式信息
TABLES
T_OUTTAB = IT_ALVOUT "输出的数据信息(明细)
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
另一种简便的方法:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'TY_OUT_FILE' "输出项目列文本信息(表头)
IS_LAYOUT = L_LAYOUT "输出列表样式信息
TABLES
T_OUTTAB = TAB_OUT_FILE "输出的数据信息(明细)
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
注:TY_OUT_FILE构造必须是数据字典中已经存在的对象。
输出项目繁多时,建议先在数据字典系统中创建构造,然后使用后一种调用方法,这样可免去对输出列表头信息的繁琐编辑处理,使代码行也缩短。