FOR ALL ENTRIES 子句是 ABAP OPEN SQL 语句中常用的功能。带有 FOR ALL ENTRIES 子句的 OPEN SQL 语句代表一种同时包含数据库表和 ABAP 内表的 OPEN SQL 语句类型。过去我们可以使用 JOIN 转换来执行这种 SQL 语句。借助快速数据访问 (Fast Data Access,简称 FDA),可以使用一种使用 FOR ALL ENTRIES 子句执行 SQL 语句的新方法。

本文将解释 SAP ABAP 内核中的数据访问 (FDA) 的工作速度有多快,以及为什么对于带有 FOR ALL ENTRIES 子句的 OPEN SQL SELECT 语句,FDA 比 JOIN 转换更合适。

默认情况下,适用于 Linux、UNIX 和 Windows 的 IBM Db2 的数据库共享库 (DBSL) 对这些语句使用 FDA——前提是在 Unicode 系统上具有 SAP 内核 7.49 或更高版本以及数据库版本 10.5 FP7 或更高版本。

ABAP For All entries 的用法

带有 FOR ALL ENTRIES 子句的 OPEN SQL 语句代表一种同时包含数据库表和 ABAP 内部表的 OPEN SQL 语句类型。

这些语句的基本形式如下:

SELECT <column list>
FROM < database tables>
FOR ALL ENTRIES IN @itab
WHERE < clause containing database table columns and itab columns>

基本上,这种语句类型实现了数据库表和 ABAP 内部表 itab 之间的 JOIN。 只有结果集中不同的行被返回给 ABAP 程序。 由于 ABAP 内部表位于 SAP 应用程序服务器上,因此需要将来自该表的引用列值传输到数据库服务器。

一个具体的例子:

DATA: db6    LIKE standard table of t100.
DATA: db6out LIKE standard table of t100.DATA: start_time TYPE i,
end_time   TYPE i,
run_time   TYPE float.SELECT * FROM t100 UP TO 100000 ROWS INTO TABLE db6 .GET RUN TIME FIELD start_time.SELECT * INTO TABLE db6out FROM t100
BYPASSING BUFFER
FOR ALL ENTRIES IN db6
WHERE sprsl = db6-sprsl
AND arbgb = db6-arbgb
AND msgnr = db6-msgnr.GET RUN TIME FIELD end_time.
run_time = end_time – start_time .WRITE : / run_time .

测试程序从数据库表 T100 中选择 100,000 行到一个名为 db6 的内部表中。 此后,程序使用 FOR ALL ENTRIES 语句将数据库表 T100 与内部表 db6 连接起来。 由于连接使用表 T100 的主键列,因此 FOR ALL ENTRIES 语句将返回 100,000 行。 程序显示 FOR ALL ENTRIES 语句使用的经过时间。

SAP ABAP FOR ALL ENTRIES 的用法相关推荐

  1. SAP ABAP一组关键字 IS BOUND, IS NOT INITIAL和IS ASSIGNED的用法辨析

    ABAP里的IS BOUND, IS NOT INITIAL和IS ASSIGNED这组关键字,如果平时不留心,很容易理解地似是而非.今天我们就来说一说它们的区别. 先把SAP帮助文档抄过来: IS ...

  2. SAP ABAP Development Tool 提高开发效率的十个小技巧

    这是 Jerry 2021 年的第 46 篇文章,也是汪子熙公众号总共第 323 篇原创文章. Jerry 已经有很长一阵子没有打开工作电脑上的 SAP ABAP Development Tool 了 ...

  3. SAP ABAP和Java里的弱引用(WeakReference)和软引用(SoftReference)

    Jerry前一篇文章 SAP ABAP一组关键字 IS BOUND, IS NOT INITIAL和IS ASSIGNED的用法辨析 介绍了在ABAP里判断引用变量是否包含了一个有效引用的关键字:IS ...

  4. SAP ABAP里存在Java List这种集合工具类么?CL_OBJECT_COLLECTION了解一下

    Jerry以前在工作中交替做着ABAP和Java开发时,总是在使用一种语言时,怀念另一种语言的便利之处,比如用ABAP开发时,怀念Java里以List为代表的功能强大,使用方便的集合工具类. List ...

  5. 关于 SAP ABAP 报表的多语言显示问题试读版

    本专栏计划的文章数在 150 篇左右,到 2022年11月9日为止,目前已经更新了 63 篇,专栏完成度为 42% 笔者这套零基础快速学习 ABAP从 2021年4月10日写下第一篇文章以来,感谢广大 ...

  6. SAP ABAP 自动批量开关账期程序 OB52和MMPV

    SAP ABAP 自动批量开关账期程序 OB52和MMPV 文章目录 SAP ABAP 自动批量开关账期程序 OB52和MMPV 前言 会计凭证过账期间 物料凭证过账期间 完整代码 主程序 ZTOOL ...

  7. 浅谈 SAP ABAP 系统里的 ALV 输出方式实现

    由于国情原因,ABAP ALV相关的报表开发在国内众多SAP技术交流群里永远都是一个热门话题. 最近Jerry和朋友的技术交流群里,郭爷向大家介绍了ALV Integrated Data Access ...

  8. SAP ABAP 查找更改文档对象(SCDO)和表关系的在线字典1/2(全)

    SAP ABAP 查找更改文档对象(SCDO)和表关系的在线字典1/2(全) 简介: 一个 SAP 更改文档对象(SCDO:SAP Change Document Object )由一组更改表和更改设 ...

  9. SAP ABAP 处理 Excel 的标准函数 TEXT_CONVERT_XLS_TO_SAP 介绍试读版

    零基础 ABAP 学习教程系列文章的目录 ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍 ABAP 标准培训教程 BC400 学习笔记之二 ...

最新文章

  1. Linux下创建用户、切换用户、删除用户
  2. NDK学习笔记-JNI的引用
  3. iOS App 启动性能优化
  4. 初中数学知识点总结_初中物理 | 最全知识点总结
  5. mysql的root密码的变更-进程的杀掉
  6. 机器学习笔记(五)---- 决策树
  7. HTML5中input标签有用的新属性
  8. 【BZOJ3674】—可持久化并查集加强版(可持久化并查集)
  9. Spring boot admin 使用
  10. 攻击防御实例——SQL注入
  11. 怎么用proteus软件仿真单片机程序?
  12. kepware odata 接口访问地址
  13. 太实用了!Schedule模块, Python 周期任务神器!
  14. maya藤蔓插件_用maya制作藤蔓蔓延的效果
  15. (自兴人工智能)python列表
  16. 【偶爱宋词】章良能·小重山
  17. Unity URP DOTS Pathfinding+Local avoidance
  18. 在anaconda环境中添加本地下载好的包
  19. 【css 】hank 写法
  20. delphi编写dll

热门文章

  1. Rxjava(2.操作符)
  2. 红亚太学链微信公众号正式发布
  3. 红亚太学链之区块链技术深度剖析第9章
  4. ceph-deploy的calamari命令
  5. 剑指Offer——迅雷笔试题+知识点总结
  6. 将基站搬到天上,物联网迎来一场“升维”竞争
  7. 2019小程序发展趋势
  8. 智慧城市的背后是大数据的深度挖掘和利用
  9. kettle怎么复制资源库的job_kettle插件更新:定时执行资源库及文件的ktr和kjb作业...
  10. AI 去掉图片的背景色