1、使用前必须判断使用的内表是否为空

如果为空,就会使WHERE条件失效,相当于没有指定任何限制的取值,注意的是整个WHERE条件失效,

而不是仅仅FOR ALL ENTRIES IN 的字段

2、默认的DISTINCT

FOR ALL ENTRIES IN 是把一个SQL分解成多个(应该是4条SQL语句)SQL去执行,然后把结果汇总去重后返回,这个去重的动作其实就是做一个DISTINCT.

注意:取值后内表的若是包含数量和金额时,需要汇总的话,要注意这一点

3、内表大的时候占用内存会很大

如果IT_MAT很大的话,比如几百万数据,执行这个SQL占用的内存是可观的,有时候会达到内存使用的上限,而且效率很差,所以尽量避免大数据量下使用 FOR ALL ENTRIES IN吧

Select语句中使用FOR ALL ENTRIES IN需要注意的问题
在ABAP编程中,使用for all entries in 是必不可少的语句,相信大家都使用过,例如:
data: begin of ig_bseg occurs 0,
          werks like bseg-werks,
          belnr  like bseg-belnr,
          gjahr  like bseg-gjahr,
          dmbtr like bseg-dmbtr,
        end of ig_mseg.
if not ig_bkpf[] is initial.
  select werks belnr gjahr dmbtr into corresponding fields of table ig_bseg
  from bseg for all entries in ig_bkpf
  where werks = ig_bkpf-werks and belnr = ig_bkpf-belnr and  gjahr = ig_bkpf-gjahr.
endif.
需要注意以下问题
1、首先,必须要判断For all entries in后面的内表是否为空,如果它为空的话,那么在where条件中的与内表中字段进行比较的结果全部为真,也就是全部满足条件,这会导致取出非常多的数据,极大地影响系统的性能。
2、对于上例,按照逻辑分析可以取出某个凭证的所有行项目,但是实际情况会与你预期的不一致,如果某个凭证的多个行项目的dmbtr值是完全一样的,那么在内表ig_bseg中你只会得到一行记录,而不是多行,它自动使用了distinct,或者说删除了重复的行,这是个非常致命的问题,会导致你的程序逻辑错误,而且很难以查找,解决的办法就是要保证内表ig_bseg中取出的数据必须要有主键字段,在本例中,需要再添加buzei字段。

二、自建表和从系统外导入数据需要注意的问题
1、自建表中建立文本类型的字段(自己创建domain)时,需要注意是否允许字段可以保留文本的大小写状态,否则默认会全部转换为大写字母。
2、对于各种凭证编码字段,如:物料凭证mblnr,kunnr,lifnr,belnr,在导入数据到自建表中时,一定要注意前导0的补充问题,否则导入的数据可能没有前导0,补充前导0的函数为CONVERSION_EXIT_ALPHA_INPUT,另外,在建立自建表时,将该字段对应的domain的Convers. routine:设置为ALPHA。

FOR ALL ENTRIES IN的用法相关推荐

  1. java entries_Enumerationlt;? extends ZipEntrygt; entries()_学习Java Zip|WIKI教程

    Enumeration extends ZipEntry> entries() 描述 (Description) java.util.zip.ZipFile.entries()方法返回ZIP文件 ...

  2. es6笔记 day3---对象简介语法以及对象新增

    以前的老写法↓ 新写法来了↓ 提示:千万不要手贱,在里面去用箭头函数!!! -------------------------------------------------------------- ...

  3. listView无需适配器添加数据(写demo快速开发)entries属性的特殊用法

    先看下简单的布局代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...

  4. java entries_Java ZipFile entries()用法及代码示例

    entries()函数是java.util.zip软件包的一部分.该函数返回zip文件的zip文件条目的枚举. 函数签名: public Enumeration entries() 用法: zip_f ...

  5. SAP ABAP FOR ALL ENTRIES 的用法

    FOR ALL ENTRIES 子句是 ABAP OPEN SQL 语句中常用的功能.带有 FOR ALL ENTRIES 子句的 OPEN SQL 语句代表一种同时包含数据库表和 ABAP 内表的 ...

  6. Es6类数组length属性和扩展方法,find(),findIndex(),fill(),copyWithin(),entries()...用法

    类数组对象 一个类数组对象必须含有 length 属性,且元素属性名必须是数值或者可转换为数值的字符. {let arr = Array.from({0: "1",1: " ...

  7. Object.keys()、Object.values()、Object.entries()的用法

    一.Object.keys(obj) 参数:要返回其枚举自身属性的对象 返回值:一个表示给定对象的所有可枚举属性的字符串数组 处理对象,返回可枚举的属性数组 let person = {name:&q ...

  8. ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries......

    2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法,  后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法:  1.         定义变 ...

  9. numpy.random.choice用法

    python,numpy中np.random.choice()的用法详解及其参考代码 处理数据时经常需要从数组中随机抽取元素,这时候就需要用到np.random.choice().然而choice用法 ...

最新文章

  1. vim学习笔记(三)
  2. 从新手到入门,如何进入协议分析的世界
  3. 学Python真的可以无所欲为,连对门小姐姐的家wifi密码都可以破解
  4. 使用SpringBoot开启微服务之旅
  5. MS SQL SERVER2005 分页存储过程
  6. Linux一键部署duckchat,宝塔面板部署DuckChat(翻译:鸭信)- 一个简约好用的网络聊天平台...
  7. nginx平滑升级添加ssl实现站内https
  8. freebsd镜像作用和vmware服务开启
  9. 计算机考到贴吧的试题,2014年全国计算机二级VB上机考试试题七
  10. MFC改变对话框背景颜色
  11. extjs chart无法在panel中显示_HighChart教程:Swift中的Highcharts iOS库
  12. SAP License:我对SAP项目实施是这样理解的
  13. Apex 获取真正的IP地址
  14. Jetson部署实践
  15. 软件测试常见英文单词汇总
  16. 桌面计算机回收站打不开,b8,教您电脑回收站打不开怎么解决
  17. 队列的顺序实现(入队、出队、对长、获取队头元素)
  18. send message
  19. Java多线程实现火车站售票案例
  20. 不要忘了我们心中的梦

热门文章

  1. 数据可视化图表总结(一)
  2. 怎么安装Nginx的监控模块
  3. 【初阶与进阶C++详解】第二十二篇:C++11新特性(列表初始化+变量类型推到+右值引用+新增默认成员函数+可变模板参数+lambda表达式+包装器function_bind)
  4. Google Drive—谷歌云盘大文件下载
  5. Keil5 点击Debug Setting 软件崩溃解决方法
  6. Kettle对非结构化数据进行分类
  7. ISO 8601中周数的处理及 Joda-Time 的使用
  8. 基于javaweb、springboot2.1旅游管理系统01
  9. Win/ubuntu16.04+tensorflow_gpu+Anaconda
  10. 华农华迪实训训练-获得词频前10的字段数据-requests+Spark RDD