ALV全称SAP List View,是SAP提供的一个强大的数据报表显示工具。
相比write输出:提供了更优质的与用户交互的功能。
实现方式:
- 调用标准函数
- 优化接口:用户可以实现对字段的排序、筛选及统计等功能。
显示方式:
-List:类似于write语句输出的表单形式
-Grid: 每个输出字段提供按钮,用户可以自行设定,操作更为灵活
运用Function ALV之前需要了解的大概内容
1.类型池:SLIS(类型池其实是特殊的程序)
2.Fieldcat TYPE slis_t_fieldcat_alv(每列的设置)
-列格式设置(表单)
-字段名称,列是否可修改,列宽度等
3.Layout TYPE slis_layout_alv(整个的设置)
- 全局格式设置(结构)
- 整表字段是否可修改,是否以斑马线输出,是否显示选择按钮字段等
4.函数:REUSE_ALV_FIELDCATALOG_MERGE
-根据内表结构返回FIELDCAT字段结构信息
5.函数:REUSE_ALV_GRID_DISPLAY / REUSE_ALV_LIST_DISPLAY
-使用GRID/LIST模式输出ALV报表
在程序中常用的架构:
START-OF-SELECTION
-数据表单数据选取(取数逻辑)
注意:为空就不走下面程序了。
END-OF-SELECTION
-对FIELDCAT赋值:设置每列格式
-对LAYOUT赋值:设置表单格式(可选)
-对SORT表等赋值:设置排序内容等(可选)
-给EVENT表等赋值:增加程序交互事件(可选)
-调用函数,输出ALV
创建Fieldcat
先声明:
DATA GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
eg:在合计的时候,可以根据单位的不同分类合计:
GS_FIELDCAT-QFIELDNAME = ‘单位字段名’.
GS_FIELDCAT-CFIELDNAME = ‘货币单位名’。
创建LAYOUT
先声明:
DATA GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
-BOX_FIELDNAME:
1.在内表中增加一列,字段名为BOX。
2.在layout赋值之后,表单显示时为可选择按钮。
-DETAIL_XX:标准按钮点击时触发的详细清单相应的的设置。
“详细清单属性
GS_LAYOUT-DETAIL_INITIAL_LINES = ‘X’. “是否显示值为空的字段
GS_LAYOUT-DETAIL_TITLEBAR = ‘Detail Information’ .”对话框标题
创建SORT表:进行排序
先声明:
DATA:GT_SORT TYPE SLIS_T_SORTINFO_ALV,
GS_SORT TYPE SLIS_SORTINFO_ALV.
SORT表为一个内表,将需要排序的字段信息增加到sort表中,在ALV输出按照顺序排序输出。
创建FILTER表:进行筛选
DATA :GT_FILTER TYPE SLIS_T_FILTER_ALV,
GS_FILTER TYPE SLIS_FILTER_ALV.
创建EVENT表:进行筛选
DATA:GT_EVENT TYPE SLIS_T_EVENT, “ALV事件
GS_EVENT TYPE SLIS_ALV_EVENT.
注意:
ALV中CHAR类型默认输出后左对齐,数字类型默认右对齐。
fieldcat是一张内表,记录的是ALV输出时每列的属性信息。
layout是一个结构,存储的整个表单的全局设置。
添加图标:Tcode:ICON查看,需要用时直接复制icon名。
单击的前提是要设置热点
单击和双击虽然都是‘&IC1’,但是一般来说单击是真的某个单元格,双击则是某一行
附上相关代码:
*&---------------------------------------------------------------------*
*& Report Z9617_OLE_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z9617_F_ALV01.
TABLES: MARA,MARD,MAKT.
TYPE-POOLS SLIS.
DATA : BEGIN OF GT_MARA OCCURS 0,
MATNR TYPE MARA-MATNR,
NTGEW TYPE MARA-NTGEW,
END OF GT_MARA.
DATA : BEGIN OF GT_MAKT OCCURS 0,
MATNR TYPE MAKT-MATNR,
SPRAS TYPE MAKT-SPRAS,
MAKTX TYPE MAKT-MAKTX,
END OF GT_MAKT.
DATA : BEGIN OF GT_TOTAL OCCURS 0,
MATNR