ALV 报告 SAP 教程 - ABAP 列表查看器
⚡ 智能摘要
ALV 报告 SAP由 ABAP 列表查看器生成的列表无需自定义代码即可实现列对齐、排序、筛选、总计和小计等功能。本页将介绍简单列表、块列表和层次列表类型、它们的重用功能模块以及显示变体。

ALV是什么? SAP ABAP?
任何报表通常都需要具备“列对齐”、排序、筛选、小计、总计等功能。如果从零开始实现这些功能,需要投入大量的编码工作。为了避免这种情况,我们可以使用一种称为 ABAP 列表查看器 (ALV) 的概念。
每份报告均提供 功能模块 这有助于毫不费力地产生所需的输出。让我们详细看看它们——
经典的 ALV 提供三种列表类型,每种类型都有自己的一组 REUSE 功能模块:
- 简报: 一个内部表,以列表或网格形式显示。
- 拦截报告: 多个内部表格以独立块的形式依次显示。
- 层级式报告: 一个表头和一个表项通过一个共享键链接。
简单报告
其中重要的功能模块 报告 是 -
- 重用_alv_fieldcatalog_merge
- 重用_alv_list_display
- 重用_alv_events_get
- 重用_alv_grid_display
- 重用_alv_commentary_write
重复使用 ALV_FIELDCATALOG_MERGE
此功能模块用于填充对于在 ALV 中显示数据至关重要的字段目录。
如果输出数据来自单个字典表并且选择了所有列,则我们不需要专门创建字段目录。在 REUSE_ALV_LIST_DISPLAY 中将表名作为参数 (I_structure_name) 提及就足够了。但在其他情况下,我们需要创建它。
注意:也可以通过将所有必需的详细信息填写到内部表中来手动填写 Fieldcatalog
重要的参数有:
1. 出口:
- I_program_name:报告 ID
- I_internal_tabname :内部输出表
- I_inclname:包含或处理所有动态表单的报告名称。
2.改变
- ct_fieldcat :一个 内表 使用在类型池 SLIS 中声明的类型 SLIS_T_FIELDCAT_ALV。
重复使用 ALV_LIST_DISPLAY
这是打印数据的功能模块。
重要参数包括:
1. 出口:
- I_callback_program: 报告 ID
- I_bypassing_buffer : 'X'
- I_buffer_active:' '
- I_callback_pf_status_set:用户可以设置自己的 pf 状态或更改现有 pf 状态的功能的例程。
- I_callback_user_command:处理功能代码的例程。
- I_structure name :字典表的名称
- Is_Layout:设置报告布局的结构
- It_fieldcat:内部表,包含要打印的所有字段及其属性的列表(该表可由函数自动填充)
- It_events:内部表,列出 ALV 所有可能的事件及其对应的表单名称。
2.表格:
- a. t_outtab :包含要输出的数据的内部表
REUSE_ALV_EVENTS_GET
返回列表类型的可能事件表
1. 进口:
Et_事件:返回事件表,其中包含指定列表类型(列“NAME”)的所有可能的 CALLBACK 事件。对于要由回调处理的事件,必须填写其“FORM”字段。如果初始化了该字段,则忽略该事件。可以从事件表中读取条目,填充“FORM”字段并使用类型池 SLIS 中的常量修改条目。
2. 出口:
I_list_type: 0 = 简单列表 REUSE_ALV_LIST_DISPLAY
1 = 分层顺序列表 REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = 简单块列表 REUSE_ALV_BLOCK_LIST_APPEND
3 = 分层顺序块列表 REUSE_ALV_BLOCK_LIST_HS_APPEND
重复使用 ALV_GRID_DISPLAY
ABAP4.6 版本中的一项新功能,以网格而不是预览的形式显示结果。
参数:与reuse_alv_list_display相同
注意:网格布局无法处理大量数据。如果要显示的数据量很大,排序、向下滚动等功能会消耗大量资源/时间。并没有明确的定义,规定数据量为 X 时应该使用列表还是网格布局,开发者需要根据经验做出决定。如果不确定,列表布局是更好的选择。
重用 ALV_注释_写入
这用于页面顶部事件中打印列表的标题和其他注释。
重要参数
- It_list_commentary:具有 slis_t_listheader 类型标题的内部表。
这个内部表有三个字段:
- 类型:'H' – 标题,'S' – 选择,'A' – 操作
- 键 :仅当类型为“S”时。
- 信息:要打印的文本
示例:一个简单的 ALV 网格报表
以下程序将上述函数模块转换为可运行的报告。它读取航班时刻表 SPFLI,自动构建字段目录,并将结果以网格形式显示。
REPORT z_alv_demo. TYPE-POOLS: slis. DATA: lt_spfli TYPE STANDARD TABLE OF spfli, lt_fieldcat TYPE slis_t_fieldcat_alv, ls_layout TYPE slis_layout_alv. START-OF-SELECTION. * 1. Read the data into the output table SELECT * FROM spfli INTO TABLE lt_spfli. * 2. Build the field catalog from the dictionary structure CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = sy-repid i_internal_tabname = 'LT_SPFLI' i_structure_name = 'SPFLI' CHANGING ct_fieldcat = lt_fieldcat. * 3. Set the layout and display the grid ls_layout-zebra = 'X'. ls_layout-colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = ls_layout it_fieldcat = lt_fieldcat i_save = 'A' TABLES t_outtab = lt_spfli.
三个参数承担了大部分工作。I_STRUCTURE_NAME 允许从字典中派生字段目录,因此无需手动描述任何列。IS_LAYOUT 启用条纹行和优化列宽。I_SAVE = 'A' 允许从最终列表中保存用户自定义和标准显示变体。
区块报告
这看起来像一个简单的报告,但该报告仅具有排序和过滤功能。如果您必须在输出中显示多个报告,则使用此报告。从技术上讲,如果您有多个内部表,其中的数据要显示为单独的块,那么我们会选择 ALV 的块报告。
用于创建此报告的重要功能是:
- 重用 ALV 块列表初始化
- 重用 ALV_BLOCK_LIST_APPEND
- 重复使用 ALV 块列表显示
重用 ALV 块列表初始化
该功能模块用于设置默认的gui状态等,参数与reuse_alv_list_display或reuse_alv_grid_display中使用的参数类似
重用 ALV_BLOCK_LIST_APPEND
该功能模块将数据添加到块中。
重要参数
1.出口:
- is_layout :块的布局设置
- it_fieldcat :字段目录
- I_tabname :包含所有可能事件的内部表名
2.表格:
- t_outtab:带有输出数据的内部表。
重复使用 ALV 块列表显示
此功能模块显示由上述功能附加的数据列表。
参数:所有参数都是可选的。
分层报告
分层显示用于显示相关数据。如销售订单和项目详细信息。此处的销售订单详细信息可以是标题数据,而销售订单中的项目可以是项目数据
用于此的功能模块是
重复使用 ALV_HIERSEQ_LIST_DISPLAY
出口:
- 回调程序
- 回调函数 PF 状态设置
- 回调用户命令
- 布局
- 它_fieldcat
- 事件
- I_tabname_header:程序中包含最高层次结构级别的输出数据的内部表的名称。
- I_tabname_item:程序中包含最低层次结构级别的输出数据的内部表的名称。
- Is_keyinfo :此结构包含链接两个表(共享键)的标题和项目表字段名称。
表
- t_outtab_header :包含要输出的数据的标题表
- t_outtab_item:程序中包含最低层次结构级别的输出数据的内部表的名称。
所有内部表、结构和常量的定义都在名为 SLIS。 可以使用 REUSE_ALV_FIELDCATALOG_MERGE 自动填充此内部表。
显示变体
- 显示变量用于设置 alv 输出的默认属性,如排序条件、过滤条件、总计和小计等
- 显示变量可以是用户特定的和标准的(任何用户都可以使用标准变量)
- 可保存的显示变体类型由传递给函数模块 reuse_alv_list_display / reuse_alv_grid_display 的参数 i_save 控制。
- 您可以在选择屏幕上提供一个选项来选择要使用的显示变体
与选择/验证显示变体相关的常见功能模块包括
- 重用_alv_variant_default_get
- 重用_alv_variant_f4
- 重用_alv_variant_existence
💡提示: 传递 I_SAVE = 'U' 表示仅允许用户自定义变体,'X' 表示仅支持标准变体,'A' 表示同时支持两者。空值将完全阻止保存。
这就是全部 ABAP – ALV 编程!
