SAP ABAP 报表进度显示控件的使用详解试读版

简介: SAP ABAP 报表进度显示控件的使用详解试读版

有些 SAP ABAP 报表包含了多个业务处理步骤,笔者这里举一个例子:


计算某个时间段内,系统所有销售订单的总金额。


SAP 大多数基于 ABAP 技术栈的销售订单设计,都是采取订单抬头(header) 和订单行项目(Line Item)数据结构。订单的时间段维护在抬头结构上,一张订单可能包含多个行项目,每个行项目有一个金额字段。因此订单的总金额,是其行项目金额之和


订单的抬头结构和行项目结构,维护在两张不同的数据库表里。


打个比方,比如 SAP CRM,订单抬头结构在 CRMD_ORDERADM_H, 订单行项目在 CRMD_ORDERADM_I 这张表里。


CRMD 中的 D 意思是 Database,ADM 是 Administration 的缩写,H 是 Header,I 代表 Item.


因此上述需求的常规处理思路是:


  1. 从订单抬头结构数据库表中,读取出某个时间段内的所有抬头数据。


  1. 根据这些抬头数据,读取出所有的行项目数据。


  1. 在循环中遍历这些行项目数据,将行项目的金额字段进行累加。循环结束后,累加结果就是总金额。


如果某个时间段内系统的订单条目数非常大,比如说是1亿条,那么将这一亿条订单的抬头结构,全部从数据库表读取到 ABAP 应用层处理,可能会因为数据量过大的原因,造成应用程序异常中止退出。


详细原因笔者已经在之前的文章里详细介绍过了:


77. 简单聊聊 ABAP 变量消耗的内存空间这个话题


78. 浅谈 ABAP 程序运行时出现『内存耗尽』错误的问题


避免这种一次性把大量数据读取到 ABAP 应用服务器导致出错的解决方案之一,就是分而治之的思路,即分块读取,比如一次只读 1000 条数据到 ABAP 服务器,对这一千条数据进行金额累加之后,再读取下一千条。


分块读取的思路在笔者教程之前的步骤有所介绍:


79. 使用 OPEN CURSOR 和 FETCH NEXT CURSOR 对 SAP 数据库表进行分块读写


80. 使用事务码 SAT 比较传统的 SELECT SQL 语句和 OPEN / FETCH CURSOR 分块读取 ABAP 数据库表两种方式的性能差异


采用分块读取会带来另一个问题:用户搞不清楚当前系统已经处理了多少块,还剩多少块没有处理。


面对这种情况,SAP 推荐的一个做法是使用 Function Module SAPGUI_PROGRESS_INDICATOR 在 SAPGUI 里显示一个交互式的进度提示控件。

c117d3cc4a9494714364dc35d76a385a.png

ABAP 系统里这种进度提示控件比较有特色,并非我们在 Windows 操作系统里常见的那种水平进度条,而是一个钟表状的外观,如上图所示,实心被填充的扇形区域,代表已经完成的进度。当整个钟表的圆形完全被填充时,代表进度达到 100%.


本文余下部分介绍这个函数的具体用法。


效果如下 gif 所示:

864bd3a36cf25de30b027c66249f172a.gif

相关文章
|
25天前
|
SQL 数据库 索引
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
19 1
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
|
21天前
|
存储
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
21 0
|
21天前
|
人工智能
Suno AI 生成 SAP ABAP 顾问之歌
Suno AI 生成 SAP ABAP 顾问之歌
15 1
|
21天前
|
存储 安全 数据库
SAP ABAP 中数据类型 xstring 的使用介绍
SAP ABAP 中数据类型 xstring 的使用介绍
20 0
|
25天前
什么是 SAP ABAP 里的 Subscreen
什么是 SAP ABAP 里的 Subscreen
16 1
什么是 SAP ABAP 里的 Subscreen
|
25天前
|
数据库 存储 BI
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
12 0
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
|
25天前
|
数据库
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
10 0
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
|
1月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
27 0
|
1月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
15 0
|
1月前
|
Web App开发 数据采集 前端开发
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
15 0