阿宝
找工作中,求帮助,谢谢!!! QQ:810487238
for all entries in的使用
 
在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操作,
条件语句增大,势必使内存占用增多。

posted on 2012-05-04 15:16  阿宝兴荣  阅读(1590)  评论(0编辑  收藏  举报