🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# SAP 教程-ABAP 列表查看器中的 ALV 报告 > 原文: [https://www.guru99.com/alv-list-view-programming.html](https://www.guru99.com/alv-list-view-programming.html) 任何报告的普遍希望的功能是“列对齐”,排序,过滤,小计,总计等。要从头开始实现这些功能,需要付出很多编码工作。 为了避免这种情况,我们可以使用称为 ABAP 列表查看器(ALV)的概念。 在本教程中,您将学习: * [简单报告](#1) * [阻止报告](#2) * [分层报表](#3) * [显示版本](#4) 这些报告中的每一个都提供 ***功能模块*** ,这些模块有助于产生所需的输出而无需付出太多努力。 让我们详细了解一下- ## 简单报告 这些报告中的重要功能模块是- * Reuse_alv_fieldcatalog_merge * Reuse_alv_list_display * Reuse_alv_events_get * 重用 _alv_grid_display * Reuse_alv_commentary_write ***REUSE_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_T_FIELDCAT_ALV 的内部表,该内部表在类型池 SLIS 中声明。 ***REUSE_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.表格**: * 一个。 t_outtab:要输出数据的内部表 ***REUSE_ALV_EVENTS_GET**:* 返回列表类型 **的可能事件表。1.导入**: **Et_Events**:返回事件表,其中包含指定列表类型(列“ 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 ***REUSE_ALV_GRID_DISPLAY** 从新的 AHT 功能* 版本,以网格显示结果而不是预览。 参数:与 reuse_alv_list_display 相同 > 注意:网格无法处理大容量。 如果要显示的数据量很大,则排序,向下滚动等功能会消耗大量资源/时间。 没有明确的定义,例如如果数据量为 X,则转到列表或网格,但开发人员必须根据他的经验进行呼叫。 如果不确定,则列表是更好的选择 ***REUSE_ALV_COMMENTARY_WRITE*** 在页顶部事件中使用此命令来打印列表的标题和其他注释。 重要参数 * It_list_commentary:内部表的标题为 slis_t_listheader 类型。 此内部表具有三个字段: 1. 类型:'H'-标头,'S'-选择,'A'-操作 2. 键:仅当 typ 为“ S”时。 3. 信息:要打印的文本 ## 阻止报告 这看起来像一个简单的报告,但是此报告仅具有排序和过滤功能。如果必须在输出中显示多个报告,则可以使用此报告。 从技术上讲,如果您有多个内部表,其中有要显示为单独块的数据,那么我们将寻求 ALV 的块报告。 用于创建此报告的重要功能是: * REUSE_ALV_BLOCK_LIST_INIT * REUSE_ALV_BLOCK_LIST_APPEND * REUSE_ALV_BLOCK_LIST_DISPLAY ***REUSE_ALV_BLOCK_LIST_INIT*** 此功能模块用于设置默认 gui 状态等。这些参数类似于复用在[reuse_alv_list_display]或[reuse_alv_grid_display] 中的参数。 ***REUSE_ALV_BLOCK_LIST_APPEND*** 该功能模块将数据添加到块中。 重要参数 **1.Export**: * is_layout:块的布局设置 * it_fieldcat:字段目录 * I_tabname:具有所有可能事件的内部表名称 **2.Tables**: * t_outtab:带有输出数据的内部表。 ***REUSE_ALV_BLOCK_LIST_DISPLAY*** 此功能模块显示列表以及上述功能附加的数据。 参数:所有参数均为可选。 ## 分层报告 分层显示用于显示相关数据。 像销售订单和项目详细信息。 这里的销售订单明细可以是抬头数据,而销售订单中的项目可以是项目数据 所使用的功能模块是 ***REUSE_ALV_HIERSEQ_LIST_DISPLAY*** **导出**: * I_CALLBACK_PROGRAM * I_CALLBACK_PF_STATUS_SET * I_CALLBACK_USER_COMMAND * IS_LAYOUT * It_fieldcat * It_events * I_tabname_header:程序中内部表的名称,该表包含最高层次结构级别的输出数据。 * I_tabname_item:程序中包含最低层级输出数据的内部表的名称。 * Is_keyinfo:此结构包含链接两个表(共享密钥)的标题和项目表字段名称。 **表格** * t_outtab_header:要输出数据的头表 * t_outtab_item:程序中内部表的名称,其中包含最低层次结构级别的输出数据。 内部表,结构和常量的所有定义都在称为 **SLIS 的类型池中声明。** 可以使用 REUSE_ALV_FIELDCATALOG_MERGE'自动填充此内部表。 ## 显示变体 * 显示变量用于设置 alv 输出的默认属性,例如排序条件,过滤条件,总计和小计等 * 显示变体可以是特定于用户的,也可以是标准的(任何用户都可以使用标准变体) * 可以保存的显示变体种类由在功能模块中传递的参数 i_save 控制。复用 _alv_list_display /复用 _alv_grid_display * 您可以在选择屏幕上提供一个选项,以选择要使用的显示变体 与选择/验证显示变量有关的常见功能模块是 1. Reuse_alv_variant_default_get 2. Reuse_alv_variant_f4 3. 重用 _alv_variant_existence 多数民众赞成在 ABAP- ALV 编程中!