惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Security Archives - TechRepublic
MongoDB | Blog
MongoDB | Blog
量子位
博客园 - 叶小钗
罗磊的独立博客
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News: Ask HN
Hacker News: Ask HN
MyScale Blog
MyScale Blog
GbyAI
GbyAI
Help Net Security
Help Net Security
Y
Y Combinator Blog
Engineering at Meta
Engineering at Meta
Hacker News - Newest:
Hacker News - Newest: "LLM"
Latest news
Latest news
H
Hacker News: Front Page
Blog — PlanetScale
Blog — PlanetScale
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
S
Schneier on Security
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
Security @ Cisco Blogs
Recorded Future
Recorded Future
S
Securelist
博客园 - Franky
Application and Cybersecurity Blog
Application and Cybersecurity Blog
A
About on SuperTechFans
N
News and Events Feed by Topic
AI
AI
T
Tenable Blog
N
News | PayPal Newsroom
C
Cybersecurity and Infrastructure Security Agency CISA
V
V2EX - 技术
T
Threat Research - Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
L
LINUX DO - 热门话题
N
Netflix TechBlog - Medium
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google Online Security Blog
Google Online Security Blog
S
Security Affairs
Webroot Blog
Webroot Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 三生石上(FineUI控件)
C
Comments on: Blog
G
GRAHAM CLULEY

博客园 - LongSky

Condition Types Batch Management MM-Document Release Strategy GR/IR Account maintenance Releasing Blocked Invoices Park Invoice Evaluated Receipt Settlement(ERS) Delivery costs in MM Subsequent debit/credit & Credit Memo Invoice Verification in the background SAP GUI 720升级补丁后的问题(转) Partner Determination in SD Invoice Reduction Tax,Cash Discounts,Exchange rate Split Valuation Stock Determination Invoice verification Reservation Goods Receipt
ABAP “FOR ALL ENTRIES IN” 使用指南
LongSky · 2012-05-03 · via 博客园 - LongSky

(from http://scnblogs.techweb.com.cn/mangmang/archives/35.html)

在ABAP开发中,对于不能使用join的聚集表或者需要使用SELECT 的内表,我们一般使用for all entries in 语句将该表与内表串联,查询出需要的数据,例如: BSEG聚集表为例,如下:
SELECT bseg~kunnr

       bseg~lifnr   

       bseg~belnr

INTO TABLE itab_bseg

FROM bseg

   FOR ALL ENTRIES IN itab_main

WHERE bukrs in _bukrs

and ( belnr = itab_main-belnr

    AND hkont = itab_main-hkont ).
由于BSEG不能和BSIS做inner join所以先将BSIS内容放到itab_main 中,然后用 FOR ALL ENTRIES IN来串联。

1-WHERE子句中的 bukrs in _bukrs是指bseg-bukrs存在于_bukrs这个select-options中,_bukrs不是itab_main的field所以这部 分不包括在括号中.

当然会增加内存使用了。
原本一个条件,数次(驱动表的纪录条数)向对DB操作,
使用了FOR ALL ENTRIES后,
相当于把驱动表里的条件字段的所有值用OR 连起来,
一次对DB操作,
条件语句增大,势必使内存占用增多。

1.SELECT CARRID

         CONNID

         PRICE

    FROM SFLIGHT

    INTO TABLE IT_PRICE

     FOR ALL ENTRIES IN IT_SFLIGHT

   WHERE CARRID = IT_SFLIGHT-CARRID

     AND CONNID = IT_SFLIGHT-CONNID’.

在 WHERE 条件中,IT_SFLIGHT-CARRID和IT_SFLIGHT-CONNID这些列将用作占位符。该 SELECT 语句的结果集是 SELECT 语句的所有结果集的联合,这些结果集是用内部表 IT_SFLIGHT 中的相应值在每一行上替换占位符的结果。实际上该WHERE子句的特殊变式就是下面WHERE基本语句的简略写法。
SELECT DISTINCT CARRID

                  CONNID

                  PRICE

    FROM SFLIGHT

    INTO TABLE IT_PRICE

   WHERE ( CARRID = ‘LH’   AND

           CONNID = ‘2415′ ) OR

         ( CARRID = ‘SQ’   AND

           CONNID = ‘0026′ ) OR

         ( CARRID = ‘LH’   AND

           CONNID = ‘0400′ ) .

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

3.FOR ALL ENTRIES IN后面使用的内部表itab如果为空,系统将视为无条件选取,将当前CLIENT下所有记录选出。因此为避免无意义的全件检索,在使用该语句前一定要判 断内部表itab是否为空,为空时不执行包含该语句的数据库检索处理。

4.由于itab-f实际上是 作为占位符被替换,所以内部表itab中不要包含HEADER行(项目标识名称行),以免造成混淆,检索出错。

5.内部表itab中作为条 件替换用项目的类型和长度,一定要和检索数据库中对应的项目相同,否则编译不能通过。

6.对于内部表itab中作为条件替换用项目,不能使 用LIKE,BETWEEN,IN比较操作符。因为这些比较操作符都是不确定比较操作符(将选择条件设定在一个范围内),而FOR ALL ENTRIES IN语句的作用相当于将选择条件块全部并列开来,用OR连接,如果每个OR分支中又是不确定的范围,那么系统性能将大大降低,因此R/3系统在使用该语句 时禁止使用不确定比较操作符。

7.使用该语句时,ORDER BY语句和HAVING语句将不能使用。

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

//判断内表是否为空

使用语句: DESCRIBE TABLE ITAB LINES VARIABLE.判断系统变量sy-subrc是否为0,如果为0就表示不空,反之为空!
DESCRIBE TABLE ITAB LINES VARIABLE

IF NOT P_VARIANT IS INITIAL.
    WX_VARIANT-VARIANT = P_VARIANT.
ENDIF.