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

相关文章
|
6月前
|
存储 安全 数据库
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
|
6月前
|
安全 API 数据库
SAP ABAP OData 中 Function import 的概念介绍
SAP ABAP OData 中 Function import 的概念介绍
|
6月前
|
SQL 负载均衡 监控
SAP ABAP DBSQL_SQL_ERROR 错误
SAP ABAP DBSQL_SQL_ERROR 错误
|
6月前
|
前端开发 数据库 开发者
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
|
6月前
|
SQL 监控 Oracle
SAP ABAP 系统错误 Return value of the database layer SQL dbsl rc 99
SAP ABAP 系统错误 Return value of the database layer SQL dbsl rc 99
|
6月前
|
存储 前端开发 Linux
在 SAP ABAP 系统里访问 FTP 服务器
在 SAP ABAP 系统里访问 FTP 服务器
|
6月前
|
存储 前端开发 应用服务中间件
使用 SAP ABAP 执行 FTP 操作
使用 SAP ABAP 执行 FTP 操作
|
6月前
|
BI 网络安全
如何使用 ABAPGit 在 SAP ABAP 系统安装 abap2xlsx 工具试读版
如何使用 ABAPGit 在 SAP ABAP 系统安装 abap2xlsx 工具试读版
|
6月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍