SAP ABAP 基础与入门(二、ALV报表的详细介绍与使用)

一、序言

继上编的SAP ABAP 基础与入门(一、数据类型定义与字符串处理)

https://blog.csdn.net/weixin_44072448/article/details/140845284?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/weixin_44072448/article/details/140845284?spm=1001.2014.3001.5502

目录

一、序言

二、SAP ALV 描述

1、ALV简介

2、不同的列表使用场景及其特点

2.1 、Grid List (网格列表)

2.2 、Tree List (树状列表)

2.3 、Outline List (大纲列表)

2.4 、 Simple List (简单列表)

2.5 、Interactive List (交互式列表)

2.6 、区别总结

三、SAP ALV 的定义

1、主要特点

2、技术细节

3、开发过程

定义 Type-Pools:

定义 Field Catalog:

SLIS_T_FIELDCAT_ALV 的定义

定义 Layout:

定义事件处理:

填充数据:

调用 ALV 控件:

4、示例代码

5、应用场景

6、发展趋势


二、SAP ALV 描述

1、ALV简介

ALV报表作为SAP GUI最常用的功能之一,这个也是重点之一,简单的输出展示ALV很容易实现,但是想要精通灵活使用还是有点难度的,还有要根据不同的场景需求使用不同的ALV展示

2、不同的列表使用场景及其特点

2.1 、Grid List (网格列表)
  • 特点
    • 显示为一个表格形式,每一行代表一条记录。
    • 支持排序、过滤、分组、汇总等功能。
    • 最常见的列表样式,适用于大多数报表需求。
  • 用途
    • 适用于需要展示大量数据的情况。
    • 适合于需要进行数据比较和分析的报表。
2.2 、Tree List (树状列表)
  • 特点
    • 数据以层次结构的形式展示。
    • 支持展开和折叠节点。
    • 可以通过父节点与子节点之间的关系来组织数据。
  • 用途
    • 适用于展示具有层级结构的数据。
    • 如组织架构、产品分类等。
2.3 、Outline List (大纲列表)
  • 特点
    • 类似于树状列表,但更侧重于展示数据的大纲视图。
    • 每个节点可以包含多个子节点。
  • 用途
    • 适用于需要以树形结构展示数据的情况。
    • 如项目计划、任务列表等。
2.4 、 Simple List (简单列表)
  • 特点
    • 不包含任何额外的格式化,只是一行一行的数据展示。
    • 通常不支持分组、排序等高级功能。
  • 用途
    • 适用于只需要简单展示数据的情况。
    • 如快速查看少量数据。
2.5 、Interactive List (交互式列表)
  • 特点
    • 支持多种交互方式,如排序、过滤、分组、汇总等。
    • 可以实现更复杂的用户交互。
  • 用途
    • 适用于需要高度定制化和用户交互的应用场景。
    • 如复杂的查询和数据分析工具。
2.6 、区别总结
  • Grid List 通常是最常用的选择,因为它提供了完整的功能集,并且数据展示清晰。
  • Tree List 和 Outline List 适合于展示具有层次结构的数据。
  • Simple List 则是一个非常轻量级的选择,适用于不需要复杂功能的情况。
  • Interactive List 则提供了最强大的用户交互能力,适合需要高度定制化的场景。

每种列表样式都有其特定的应用场景,选择哪种样式取决于你的具体需求。如果你需要展示的数据有明确的层级关系,那么 Tree List 或 Outline List 可能更适合;如果需要用户可以对数据进行排序、过滤等操作,则 Grid List 或 Interactive List 更合适。

三、SAP ALV 的定义

SAP ALV(ABAP List Viewer)是一种在 SAP 系统中用于展示和处理列表数据的强大工具。它允许用户以表格的形式查看数据,并提供了多种功能,如排序、过滤、分组、汇总等。下面是对 SAP ALV 的详细描述:

SAP ALV 的定义

SAP ALV 是 SAP 系统中用于展示列表数据的通用工具。它能够处理大量数据,并提供丰富的用户界面功能,使得数据展示更加直观和易于理解。

1、主要特点

  • 灵活的数据展示:支持多种列表样式,如 Grid、Tree 和 Simple List。
  • 表格功能:常用的ALV有展示数据的ALV、可以编辑修改、删除的ALV、批导外部execl文档进SAP的ALV等等
  • 用户交互:支持排序、过滤、分组、汇总、导出电子文档等操作。
  • 自定义列:用户可以定义显示哪些列以及列的顺序。
  • 导出功能:可以将数据导出到 Excel 或其他格式。
  • 事件处理:支持响应用户交互,如点击事件、双击事件等。

2、技术细节

  • 数据源:ALV 可以从 SAP 内部表或外部数据源获取数据。
  • Type-Pools:使用 SAP 标准 Type-Pools(如 SLIS)来定义数据结构。
  • 字段目录(Field Catalog):定义数据表中的列如何在 ALV 中显示。
  • 布局(Layout):定义列表的外观,包括列的宽度、标题等。
  • 事件处理:定义用户交互时触发的事件处理程序。

3、开发过程

  1. 定义 Type-Pools
    • 使用 TYPE-POOLS 语句定义标准 Type-Pools(如 SLIS)来创建数据结构。
  2. 定义 Field Catalog
    •  SAP ALV (ABAP List Viewer) 中的 SLIS_T_FIELDCAT_ALV 类型是一个非常重要的数据类型,它用于定义列表中各列的显示属性。下面是对 SLIS_T_FIELDCAT_ALV 的详细描述:
SLIS_T_FIELDCAT_ALV 的定义

SLIS_T_FIELDCAT_ALV 是一个内部表类型,它用于定义 ALV 列的元数据,即每列的显示属性。这些属性包括列名、宽度、对齐方式等。

SLIS_T_FIELDCAT_ALV 的结构

SLIS_T_FIELDCAT_ALV 包含以下字段:

  • fieldname (char(30)): 列对应的字段名。
  • width (int(3)): 列的宽度,通常以像素为单位。
  • align (char(1)): 文本对齐方式,例如 'L' 表示左对齐,'R' 表示右对齐。
  • visible (char(1)): 是否显示该列,通常为 'X' 表示显示。
  • editable (char(1)): 是否允许编辑该列的内容,通常为 'X' 表示允许编辑。
  • sort (char(1)): 是否允许对该列进行排序,通常为 'X' 表示允许排序。
  • filter (char(1)): 是否允许对该列进行过滤,通常为 'X' 表示允许过滤。
  • group (char(1)): 是否允许将该列作为分组依据,通常为 'X' 表示允许分组。
  • sum (char(1)): 是否允许对该列进行汇总,通常为 'X' 表示允许汇总。
  • type (char(1)): 列的数据类型,例如 'C' 表示字符型,'N' 表示数字型。
  • decimals (int(2)): 小数位数,适用于数值类型的数据。
  • text (char(1)): 是否为文本列,通常为 'X' 表示是文本列。
  • text_length (int(3)): 文本列的最大长度。
  • text_alignment (char(1)): 文本对齐方式,例如 'L' 表示左对齐。
  • text_type (char(1)): 文本类型,例如 'S' 表示短文本,'L' 表示长文本。
定义 Layout
  • 定义一个数据对象 LT_LAYO,类型为 SLIS_LAYOUT_ALV,用于描述列表的外观。
  • SAP ALV (ABAP List Viewer) 的布局 (Layout) 是用于定义列表中各个列的显示方式的关键组成部分。布局决定了列表中列的顺序、宽度以及其他可视属性。下面是对 ALV Layout 的详细描述:

  • Layout 的定义

    在 SAP ALV 中,Layout 是一个数据对象,其类型通常是 SLIS_LAYOUT_ALV。这个数据对象用于定义列表中每列的显示特性,如列宽、列标题、对齐方式等。

    Layout 的组成

    Layout 由一系列字段条目 (Field Entries) 组成,每个条目对应列表中的一个列。每个字段条目定义了该列的显示特性。

    Layout 的结构

  • 类型SLIS_LAYOUT_ALV
  • 字段
    • fieldname:列对应的字段名。
    • width:列的宽度,通常以像素为单位。
    • align:文本对齐方式,如左对齐、居中对齐或右对齐。
    • visible:是否显示该列。
    • editable:是否允许编辑该列的内容。
    • sort:是否允许对该列进行排序。
    • filter:是否允许对该列进行过滤。
    • group:是否允许将该列作为分组依据。
    • sum:是否允许对该列进行汇总。
    • type:列的数据类型。
    • decimals:小数位数,适用于数值类型的数据。
    • text:是否为文本列。
    • text_length:文本列的最大长度。
    • text_alignment:文本对齐方式。
    • text_type:文本类型,如短文本或长文本。
  • 注意事项

  • 数据源:确保你的数据源与 Layout 中定义的字段相匹配。
  • 兼容性:确保使用的 ABAP 版本与 Layout 类型兼容。
  • 性能优化:对于大型数据集,考虑使用分页或其他性能优化技术。
  • 总结

    SAP ALV 的 Layout 是一个关键组成部分,它定义了列表中列的显示特性。通过定义 Layout,你可以自定义列表的外观,使其更好地满足用户的需要。合理的 Layout 设计可以提高用户的体验,并使数据更加易于理解和分析。

定义事件处理

事件类型

SLIS_T_EVENT 支持多种事件类型,以下是一些常见的事件类型:

处理事件

为了处理 ALV 控件上的事件,你需要定义一个事件处理表 GIT_EVENTS,类型为 SLIS_T_EVENT,并将其传递给 ALV 控件。当用户与 ALV 控件交互时,系统会自动填充事件处理表,并调用相应的事件处理函数。

  • 定义事件处理表 GIT_EVENTS,类型为 SLIS_T_EVENT,用于响应用户交互。
  • SLIS_T_EVENT 是 SAP ALV (ABAP List Viewer) 中用于定义用户交互事件的一个数据类型。它允许开发者定义和处理用户在 ALV 控件上执行的各种操作,如点击按钮、选择列表项等。下面是对 SLIS_T_EVENT 的详细描述:

    SLIS_T_EVENT 的定义

    SLIS_T_EVENT 是一个内部表类型,用于定义 ALV 控件中可以触发的不同类型的用户事件。每个事件都包含一组特定的信息,如事件类型、触发事件的对象等。

    SLIS_T_EVENT 的结构

    SLIS_T_EVENT 包含以下字段:

  • event (char(1)): 事件类型,如 'P' 表示按下按钮,'D' 表示双击等。
  • event_object (char(1)): 触发事件的对象类型,如 'F' 表示字段,'B' 表示按钮等。
  • event_row (int(4)): 当前选中的行号。
  • event_column (int(2)): 当前选中的列号。
  • event_field (char(30)): 当前选中的字段名称。
  • event_value (char(30)): 当前选中的字段值。
  • event_button (char(1)): 触发事件的按钮类型,如 'S' 表示单击,'D' 表示双击等。
  • event_modifiers (char(2)): 修饰符键,如 '0' 表示无修饰符,'1' 表示按下了 Shift 键等。
  • 'P': 按下按钮(Press)
  • 'D': 双击(Double-click)
  • 'S': 单击(Single-click)
  • 'R': 拖动(Drag)
  • 'H': 悬停(Hover)
  • 'C': 改变(Change)
填充数据
  • 从数据库或内部表中获取数据并填充到 ALV 数据表中。
调用 ALV 控件
  • 使用 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 或其他相关函数来显示 ALV。

4、示例代码

以下是一个简单的 ALV ABAP示例代码片段,用于展示如何创建一个基本的 ALV:

* 定义 Type-Pools
TYPE-POOLS: slis.

* 定义 Field Catalog
DATA: lit_fcat TYPE slis_t_fielddescr_alv.

* 定义 Layout
DATA: lt_layo TYPE slis_layout_alv.

* 定义事件处理表
DATA: git_events TYPE slis_t_event.

* 定义数据表
DATA: lit_e_tab TYPE slis_t_e_tab.

* 填充数据
SELECT * FROM ztable INTO CORRESPONDING FIELDS OF TABLE lit_e_tab.

* 填充 Field Catalog
APPEND INITIALIZING lit_fcat TO lit_fcat.
lit_fcat-fieldname = 'FIELD1'.
lit_fcat-width = 100.
APPEND INITIALIZING lit_fcat TO lit_fcat.
lit_fcat-fieldname = 'FIELD2'.
lit_fcat-width = 150.

* 填充 Layout
APPEND INITIALIZING lt_layo TO lt_layo.
lt_layo-fieldname = 'FIELD1'.
lt_layo-width = 100.
APPEND INITIALIZING lt_layo TO lt_layo.
lt_layo-fieldname = 'FIELD2'.
lt_layo-width = 150.

* 调用 ALV 控件
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_callback_program = sy-repid
  TABLES
    it_fieldcat        = lit_fcat
    it_layout          = lt_layo
    it_data            = lit_e_tab
  EXCEPTIONS
    function_not_supported = 1
    OTHERS                = 2.
IF sy-subrc <> 0.
  WRITE: / 'Error calling ALV function'.
ENDIF.

ALV 的用户界面通常包括:

  • 标题栏:显示列表的标题。
  • 工具栏:提供排序、过滤等操作的按钮。
  • 列表区域:展示数据的表格。
  • 状态栏:显示列表的信息,如记录总数等。

5、应用场景

  • 报告生成:用于生成复杂的报告和分析。
  • 数据浏览:让用户方便地浏览和操作数据。
  • 数据导出:导出数据到外部文件或应用程序。

6、发展趋势

随着 SAP 系统的发展,ALV 也在不断地进化,支持更多的功能和更好的用户体验。例如,新的 SAP Fiori 用户界面中也集成了 ALV 的功能。

  • 31
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值