首页 > 数据库 >使用 FOR ALL ENTRIES 将 ABAP 内表内容作为数据库表的读取条件之一试读版

使用 FOR ALL ENTRIES 将 ABAP 内表内容作为数据库表的读取条件之一试读版

时间:2023-05-18 12:34:19浏览次数:61  
标签:内表 试读 lt person ABAP ls TABLE order

本教程之前的文章,我们已经介绍了如何用 ST05 事务码,对一个 ABAP 报表进行性能分析和优化的步骤。

重构后的代码:

REPORT zdb_optimization.

DATA:lt_order  TYPE TABLE OF zmyorder,
     ls_order  LIKE LINE OF lt_order,
     lt_person TYPE TABLE OF zperson,
     ls_person LIKE LINE OF lt_person.

SELECT * INTO TABLE lt_order FROM zmyorder.

SELECT * INTO TABLE lt_person FROM zperson.

LOOP AT lt_order INTO ls_order.
  READ  TABLE lt_person into ls_person with key person_id = ls_order-customer_id.
  "SELECT SINGLE * INTO ls_person FROM zperson WHERE person_id = ls_order-customer_id.
  WRITE:/ 'order:', ls_order-order_id, ' user:', ls_person-person_name.
ENDLOOP.

下图是使用事务码 ST05 采集到的重构后的数据库表访问情况,对 ZMYORDER 和 ZPERSON 表分别各自只读取了一次,每次读取了4条数据出来。

上一篇教程末尾,笔者提到,本报表的设计和实现仍然有进一步优化的空间。

虽然我们重构后,已经成功将数据库表的总共读取次数,降低到两次,但是看上图第 10 行代码发现,我们将整张 zperson 表的全部内容,读取到了内表 lt_person 里。

本例订单表 ZMYORDER 里能看到,系统总共只有三个用户下单,假设系统总共的注册用户不是例子里的4条(即下面第二张图),而是四千万条,那我们为了区区4条订单数据,而将四千万条用户数据全部从数据库表中取出,存储到 ABAP 应用程序内存中,显然是毫无必要的。

下面是新一轮的性能优化思路的详细介绍。

标签:内表,试读,lt,person,ABAP,ls,TABLE,order
From: https://www.cnblogs.com/sap-jerry/p/17411577.html

相关文章

  • 在 ABAP 层执行 Open SQL 的幕后操作 - 武侠版
    在ABAP系统中使用事务码编写OPENSQL向数据库发起查询时,应用层和数据库层之间会发生一系列的交互。让我们详细介绍这个过程,并结合下面这张ABAP三层架构图:用户触发事务码:用户在ABAP系统中输入事务码,比如SE38(ABAP编辑器)或SE11(数据字典),并按下回车键。这将触发ABAP系统在应用层......
  • 面向对象设计里引入 Friend 是对封装性的破坏吗,friend 在 SAP ABAP 里的应用场景
    笔者的SAP技术交流群里,有朋友提问:我想问一个很基础的问题,为什么类要有friend啊反正我工作这些年,在SAP生产代码里没用过友元,只是在生产代码的单元测试代码里用过,原因也就是让单元测试代码能够访问到被测试的生产类的私有属性。代码如下:SAPABAP的帮助文档:在面向对象......
  • 使用 SAP Fiori Tools 提供的中间件导入本地下载的 SAP UI5 库文件来启动 SAP UI5 应
    本教程第100个步骤,笔者介绍了如何使用本地部署的SAPUI5库文件来运行SAPUI5应用的技巧:SAPUI5应用开发教程之一百-如何修改SAPUI5框架的源代码实现,以及使用本地部署的SAPUI5SDK我们简单回顾一下这种方法的实现步骤:从SAPUI5官网将我们想使用的SAPUI5SDK......
  • 使用 SAP Fiori Tools 自带的代理服务器解决本地运行的 SAP UI5 应用访问远端服务遇到
    我们部署在本地开发环境运行的SAPUI5应用,由于浏览器安全策略的限制,无法直接访问远端OData服务,原因是我们的SAPUI5应用本地运行在localhost这个域名上,而远端请求的OData服务的域名比如说services.odata.org,二者不是同一个域名,由于浏览器安全策略,浏览器拒绝这种跨域的......
  • SAP ABAP 系统里长文本 Long Text 的设计和读取函数 READ_TEXT 详细讲解试读版
    本文回答本教程一位学习者在笔者的知识星球里的提问。要想找到这个问题的根源,需要首先对SAPABAP系统里长文本(LongText)的设计有一个比较清楚的了解,这就是本文及后续文章的目的。SAPABAP长文本的使用场景在SAPABAP系统中,长文本(LongText)是一种特殊的文本类型,它可以存......
  • SAP Fiori Elements 本地应用启动的三种模式辨析试读版
    本教程前一步骤,我们介绍了在VisualStudioCode里使用命令行npmrunstart启动SAPFioriElements应用的方法:3.动手运行第一个SAPFioriElements应用有细心的学习者发现了,笔者提供的这个FioriElements应用的package.json文件的scripts区域里,除了定义了名为st......
  • 使用 UI5 Tools 这款 Visual Studio Code 扩展来管理和运行本地 SAP UI5 应用试读版
    本教程目前的每一篇文章,介绍的都是用命令行ui5serve本地启动一个Web服务器,来本地运行笔者Github里提供的SAPUI5应用。在浏览器地址栏里输入localhost:8080即可访问启动的Web服务器上的资源,从而访问SAPUI5应用:如果各位学习者不喜欢命令行的方式,而是习惯在GUI......
  • ABAP屏幕控制
    下拉框 *&---------------------------------------------------------------------**&FormP_SET_SELECTION*&---------------------------------------------------------------------**设置移动类型搜索帮助*-----------------------------------------......
  • ABAP-CA01工艺路线批导
    1FUNCTIONzfm_pp_0003.2*"----------------------------------------------------------------------3*"*"本地接口:4*"IMPORTING5*"VALUE(IV_TEST)TYPECHAR1OPTIONAL6*"EXPORTING7*"VALUE(EV_......
  • ABAP-CR01工作中心批导
    1FUNCTIONzfm_pp_0004.2*"----------------------------------------------------------------------3*"*"本地接口:4*"IMPORTING5*"VALUE(IV_TEST)TYPECHAR1OPTIONAL6*"EXPORTING7*"VALUE(EV_......