转 ABAP中使用for all entries in小结

ABAP开发中,使用for
all entries in语句将不能使用join的聚集表(例如BSEG)或者需要使用select的内表与内表串联。

以BSEG为例:

select belnr
hkont

from bsis

into corresponding fields of
table itab1

where ....

if not itab1[] is
initial.

select kunnr lifnr
belnr

from bseg

into corresponding fields of
table itab2

for all entries in
itab1

where belnr = itab1-belnr
and hkont = itab1-hkont and ....

endif.

由于BESG不能和BSIS做内联,所以先将BSIS要获取的内容放到内表itab1中,然后用 for all entries in 来串联。

注意:

1、必须要判断for all entries in后面的内表是否为空,如果为空,where条件中与内表中字段进行比较的结果全部为真,会导致取出非常多的数据,影响系统性能。

2、使用for
all entries in,对于最后得出的结果集系统会自动删除重复行(即使用了distinct)。如果要保留重复行记录,要在SELECT语句中添加足够的key(有必要时,增加全部key),以保证结果集中所需重复项目不会被删除。

3、对于内表中作为条件替换用项目,不能使用LIKE,BETWEEN,IN比较操作符。这些比较操作符都是不确定比较操作符(将选择条件设定在一个范围内),而 for all entries
in 语句的作用相当于将选择条件块全部并列开来,用OR连接,如果每个OR分支中又是不确定的范围,那么系统性能将大大降低。

4、使用该语句时,ORDER
BY语句和HAVING语句将不能使用。

5、使用该语句时,除COUNT(
* )以外的所有合计函数(MAX,MIN,AVG,SUM)都不能使用。

6、使用 for all entries
in 虽然在某些方面很方便的,但很耗内存。

7、itab-field作为占位符被替换,所以定义内表itab时不要使用with header line,以免造成混淆

转 ABAP中使用for all entries in小结,码迷,mamicode.com

时间: 2024-10-16 19:09:47

转 ABAP中使用for all entries in小结的相关文章

ABAP中SHIFT用法

1).SHIFT:截断字符串         SHIFT {c} [BY {n} PLACES] [{mode}].:             作用:去掉字符串的前n个位置的字符,如果n未指定,默认为1,如果指定的n小于等于0,则字符串不变.如果n超出字符串的长度,则字符串变空,所以在做 此操作的时候要注意n的指定.可以首先获得该字符串的长度,方法:len=STRLEN(C).                 Mode:指定字符串截断的方向.                   LEFT:从左边

简单代码在ABAP中实现声音的播放

这段代码的功能是在SAP里面实现声音的播放,可以用作程序提醒功能,和SAP里面’噹噹噹’那个声音的意思差不多.将来在项目中遇到客户想要SAP ABAP发出一点声音的时候就可以参考一下这个程序. REPORT zplay.DATA: command TYPE string. *本地命令语句CONCATENATE ‘vbscript:execute(”document.write ””<bgsound src=’”‘file:///”+Replace(”C:\lg\Bad Romance.mp3“,

理解CSV文件以及ABAP中的相关操作

在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separator:两个字段之间的界线,在CSV文件中即是“,”. Delimiter:这种符号的开端和结束,代表了某种东西的界限.举个例子“测试字符串”有两个delimiters,即两个双引号.在很多逗号需要成为文本的情况下,这些CSV文件会使用双引号作为Delimiter. Terminator : 代表片段

字符串处理:ABAP中的正则表达式

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4292994.html 正则表达式... 97 ABAP中可以使用regex的地方... 97 正则式语法规则... 98 (?=…).(?!...)100 \A .\z.\Z与^ .$区别... 101 $0….$&.$`.$′102 \1

转 ABAP中USING与CHANGING的用法

ABAP中FORM参数的传递有以下几种方式. 1.引用传递(CALL BY REFERENCE) 传递参数时将参数的地址(ADDRESS)传至子程序中,也就是子程序中的参数变量与外部程序的参数变量共享地址内的值.又叫CALL BY ADDRESS,若子程序中的参数变量的值发生了改变,那么,外部程序的实际变量的值也发生改变. [Syntax] FORM <subform> [USING <f1> <f2>...]  [CHANGING <fr1> <fr

ABAP 中的搜索帮助

一.简介:在abap中,用到的搜索帮助个人遇到的情况如下,进行简要总结进行记录: 1.选中屏幕中的搜索帮助 (1).选择屏幕中的搜索帮助个人理解是指选择屏幕中的字段可以提供用户选择功能.有些字段,例如公司,日期等可以自动带出搜索帮助,这些都是基于数据元素或者数据域等的搜索帮助,如图: (2).有些字段我们就需要自己实现搜索帮助了,常用的如:在我们上传excel等数据的时候得到文件路径的选择帮助,主要使用的代码如下: "选择屏幕字段 PARAMETERS : P_FILE LIKE RLGRAP-

abap中查找某字符串的两种方法

abap中查找某字符串的两种方法: 一.RPR_ABAP_SOURCE_SCAN 可以用于搜索SAP中的程序代码,一般使用时填写开发类.程序名及需要查找的字符串即可,选择屏幕布局和功能很简单,熟悉ABAP代码的人一看就明白了,不多解释了,使用方法及截图如下.选择范围太大的话很慢,可以考虑放到后台运行,结束了再看结果. 用这个程序查看某些特征的代码很有效,比如查找所有程序中这样的代码等. 1 SE38回车 2 程序名:RPR_ABAP_SOURCE_SCAN 3 F8 Execute 二.当然也可

ABAP中的同步和异步调用

ABAP 的 CALL FUNCTION 类似于 Java/.NET 中的本地或远程方法调用.CALL FUNCTION 可以分为四种:1. Synchronous RFC (sRFC) - 同步调用2. Asynchronous RFC (aRFC) - 异步调用3. Transactional RFC (tRFC) - 保证 Transaction 数据一致性的调用4. Queued RFC (qRFC) - 用一个对列序列化的 tRFC本文很好地介绍了前面两种,也是最常用的两种.SAP H

ABAP中USING与CHANGING的用法

ABAP中USING与CHANGING的用法 ABAP中FORM参数的传递有以下几种方式. 1.引用传递(CALL BY REFERENCE) 传递参数时将参数的地址(ADDRESS)传至子程序中,也就是子程序中的参数变量与外部程序的参数变量共享地址内的值.又叫CALL BY ADDRESS,若子程序中的参数变量的值发生了改变,那么,外部程序的实际变量的值也发生改变. [Syntax] FORM <subform> [USING <f1> <f2>...]  [CHAN