sap很全的forallentriesin使用指南

sap很全的forallentriesin使用指南

ID:34725625

大小:68.68 KB

页数:3页

时间:2019-03-10

sap很全的forallentriesin使用指南_第1页
sap很全的forallentriesin使用指南_第2页
sap很全的forallentriesin使用指南_第3页
资源描述:

《sap很全的forallentriesin使用指南》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、ABAP"FORALLENTRIESIN"使用指南上一篇/下一篇 2008-08-1409:00:04查看(1276)/评论(2)/评分(0/0)ABAP"FORALLENTRIESIN"使用指南在ABAP开发中,对于不能使用join的聚集表或者需要使用SELECT的内表,我们一般使用forallentriesin语句将该表与内表串联,查询出需要的数据,例如:BSEG聚集表为例,如下:SELECTbseg~kunnr      bseg~lifnr           bseg~belnrINTOTABLEitab_bsegFROMbseg  FORAL

2、LENTRIESINitab_mainWHEREbukrsin_bukrsand(belnr=itab_main-belnr   ANDhkont=itab_main-hkont).由于BSEG不能和BSIS做innerjoin所以先将BSIS内容放到itab_main中,然后用FORALLENTRIESIN来串联。1-WHERE子句中的bukrsin_bukrs是指bseg-bukrs存在于_bukrs这个select-options中,_bukrs不是itab_main的field所以这部分不包括在括号中.当然会增加内存使用了。原本一个条件,数次(驱

3、动表的纪录条数)向对DB操作,使用了FORALLENTRIES后,相当于把驱动表里的条件字段的所有值用OR连起来,一次对DB操作,条件语句增大,势必使内存占用增多。1.SELECTCARRID        CONNID        PRICE   FROMSFLIGHT   INTOTABLEIT_PRICE    FORALLENTRIESINIT_SFLIGHT  WHERECARRID=IT_SFLIGHT-CARRID    ANDCONNID=IT_SFLIGHT-CONNID'.在WHERE条件中,IT_SFLIGHT-CARRID和IT

4、_SFLIGHT-CONNID这些列将用作占位符。该SELECT语句的结果集是SELECT语句的所有结果集的联合,这些结果集是用内部表IT_SFLIGHT中的相应值在每一行上替换占位符的结果。实际上该WHERE子句的特殊变式就是下面WHERE基本语句的简略写法。SELECTDISTINCTCARRID                 CONNID                 PRICE   FROMSFLIGHT   INTOTABLEIT_PRICE  WHERE(CARRID='LH'  AND          CONNID='2415')OR

5、        (CARRID='SQ'  AND          CONNID='0026')OR        (CARRID='LH'  AND          CONNID='0400').2.a.使用该语句,对于最后得出的结果集系统会自动删除重复行。因此如果你要保留重复行记录时,记得在SELECT语句中添加足够键值项目(有必要时,增加全部键值项目),以保证结果集中所需重复项目不会被删除。(例如选取支付金额时,支付事件可能不同,但金额可能相同,此时一定要注意,以避免错误删除结果记录。)3.b.FORALLENTRIESIN后面使用的内部表it

6、ab如果为空,系统将视为无条件选取,将当前CLIENT下所有记录选出。因此为避免无意义的全件检索,在使用该语句前一定要判断内部表itab是否为空,为空时不执行包含该语句的数据库检索处理。4.c.由于itab-f实际上是作为占位符被替换,所以内部表itab中不要包含HEADER行(项目标识名称行),以免造成混淆,检索出错。5.内部表itab中作为条件替换用项目的类型和长度,一定要和检索数据库中对应的项目相同,否则编译不能通过。6.对于内部表itab中作为条件替换用项目,不能使用LIKE,BETWEEN,IN比较操作符。因为这些比较操作符都是不确定比较操作符

7、(将选择条件设定在一个范围内),而FORALLENTRIESIN语句的作用相当于将选择条件块全部并列开来,用OR连接,如果每个OR分支中又是不确定的范围,那么系统性能将大大降低,因此R/3系统在使用该语句时禁止使用不确定比较操作符。7.使用该语句时,ORDERBY语句和HAVING语句将不能使用。8.使用该语句时,除COUNT(*)以外的所有合计函数(MAX,MIN,AVG,SUM)都不能使用。//判断内表是否为空使用语句:DESCRIBETABLEITABLINESVARIABLE.判断系统变量sy-subrc是否为0,如果为0就表示不空,反之为空!D

8、ESCRIBETABLEITABLINESVARIABLEIFNOTP_VARI

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。