深入源码探索:SAP 标准报表怎样实现不同「报表格式/清单类型」的输出?

深入源码探索:SAP 标准报表怎样实现不同「报表格式/清单类型」的输出?

简介: 我们知道 SAP 有 3 种常见的报表格式,分别是网格控制(Grid control)、标准清单(Normal list)、多层清单(Hierarchical list)。在很多 SAP 标准报表中,我们可以设置报表按照不同的清单类型进行输出,那么 SAP 是怎么实现这种输出控制的呢?这篇文章,我带大家深入源码探索 SAP 官方实现,学习这种处理机制并总结相关的常见问题。看完这篇文章后,几乎此类 SAP 标准报表问题我们都能轻松应对。

**关键字:SAP 标准报表 深入源码探索 报表格式 清单类型 控制机制 **

文章目录

  • 深入源码探索:SAP 标准报表怎样实现不同「报表格式/清单类型」的输出?
    • 1 自带输出控制的场景
    • 2 报表格式 / 清单类型
      • 2.1 网格控制(Grid control)
      • 2.2 标准清单(Normal list)
      • 2.3 多层清单(Hierarchical list)
    • 3 常遇到的问题
    • 4 深入源码探索 SAP 官方实现
      • 4.1 DEBUG VL06F 标准代码
      • 4.2 控制机制-初始化和更新
      • 4.3 控制机制-输出
    • 5 小结
    • 其他

1 自带输出控制的场景

  • VL06* / VL06O / VL06F / …
    在这里插入图片描述
  • MB51 / MB52 /…
    在这里插入图片描述
  • SE11 查表数据
    在这里插入图片描述

2 报表格式 / 清单类型

2.1 网格控制(Grid control)

最常见、最常用、最友好的 ALV 输出格式。目前实际开发中基本用 cl_gui_alv_grid->set_table_for_first_display 替代。

"技术上对应的实现函数(其中一个)
call function 'REUSE_ALV_GRID_DISPLAY'

在这里插入图片描述

2.2 标准清单(Normal list)

古董、常见于标准报表、Query 也仍支持。目前实际开发中基本用 cl_gui_alv_grid->set_table_for_first_display 替代。

"技术上对应的实现函数(其中一个)
call function 'REUSE_ALV_LIST_DISPLAY'

在这里插入图片描述

2.3 多层清单(Hierarchical list)

常见于标准报表。目前实际开发中基本用 cl_gui_alv_tree->set_table_for_first_display 或 simple tree 控件替代。

"技术上对应的实现函数(其中一个)
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

在这里插入图片描述

3 常遇到的问题

  • ABAP 接到将标准报表从 List 格式 转换成 Grid 格式输出的开发需求
    用户不知道这是系统标准支持的,一般经验的业务顾问也不知道,一般经验的开发顾问也不知道。
    因此顾问们埋头苦干实现需求,有复制原标准程序改造的,有 submit 标准程序后重新输出的。
    看这篇文章后泪流满面的顾问,先收藏一下?
  • 设置缺省的输出格式,两种方法
    • (1)在 SU01 或 SU3 的参数页签设置内存参数和值(Memory ID and Value)
      在这里插入图片描述
    • (2)在具体执行的程序上设置
      在这里插入图片描述

4 深入源码探索 SAP 官方实现

4.1 DEBUG VL06F 标准代码

在 display 之前 初始化 alv 设置
在这里插入图片描述

4.2 控制机制-初始化和更新

我专门讲这段控制机制,不仅为了说明输出原理,也为了展览这段 SAP 标准代码,很多经验不足的顾问在此类机制闭环的程序开发上仍需修炼!
在这里插入图片描述

4.3 控制机制-输出

  • 第一级输出控制:层级和清单
    在这里插入图片描述
    在这里插入图片描述

  • 第二级输出控制:Grid 和 List
    在这里插入图片描述

5 小结

  • SAP 标准报表有几种格式选择,是技术迭代更新的产物,又因为 SAP 必须向下兼容,因此以前发布的报表一般都可选格式输出。
  • 不是所有古老的 SAP 标准报表都被重新实现了 Grid 格式。
  • 现在一般只区分 Grid 和 Tree,而不再区分 Grid 和 List(过时的技术)。
  • Grid 技术推荐:cl_gui_alv_grid->set_table_for_first_display 。
  • Tree 技术推荐:cl_gui_alv_tree->set_table_for_first_display 。
  • 第 3 节是核心价值,第 4.2 节是核心知识。

其他

我的微信群、QQ群和其他发布平台。

  • 关于微信群、QQ群和其他发布平台

长期提供开发和运维服务。

  • 关于提供开发和运维服务的详情