头图

零基础 ABAP 学习教程系列文章的目录

ABAP 基础知识

Office 专题

ALV 开发专题

更多文章正在写作中

在实际项目中,ABAP 开发人员经常遇到一些需要带有层级结构的数据显示。

以 SAP ABAP 标准培训教程里经典的航班模型为例,世界上有若干航空公司,在 SAP 系统里用两位的字母表示,比如 AA 代表 America Airlines 美国航空,AB 代表 Berlin Airlines 柏林航空等等。每家航空公司经营了若干条航线,这些航线通过4位数字标识,比如 AA0017,代表美国航空旗下的 0017 航线,从纽约飞往旧金山。

因此,航空公司和其经营的航线,可以看成待输出数据的第一级别的层次结构

每条航线,每周可能有若干班次,比如 AA0017 每周一,周三,周五,都是从纽约飞往旧金山,那么这些航线的具体班次,就构成了待输出数据的第二级别的层次结构

我们首先在 Excel 里展示这个待显示的具备层次结构的数据格式。

第一行和第二行分别是最后要显示的 ALV 的第一级表头和第二级表头,第三行和第七行(灰色)是第一级别的数据,即航空公司 ID 和这家航空公司所经营的航线 ID.

第4~6,以及第 8~10 行,分别是第二级别的数据,即航线的班次时间信息,以及价格。

最后我用 ABAP 代码,通过 ALV 的方式实现了上图 Excel 绘制的界面效果。这个 ALV 采取了 ABAP 标准的层次顺序表 的 API,即 cl_salv_hierseq_table,来输出具有双表头的 ALV 报表。完整的代码有 330 行,位于本文末尾。

如大家所见,这个 ALV 报表还包含了其他丰富的功能,比如点击图标,使得所有第二级别的数据被折叠起来,从而只显示第一级别的数据,便于统计。同时也展示了如何在 ALV 里显示图标,交通灯,符号等其他类型的元素。这些技巧都将在本教程后续步骤介绍。

下面是 ALV 层次顺序表使用双表头(Multiple Headers)进行数据输出的具体实现步骤。


注销
1k 声望1.6k 粉丝

invalid