對於不能join的表,使用for all entries in語句將該表與內表串聯。
阿新 • • 發佈:2019-01-03
像bseg這樣的表不是transparent table所以不能做inner join。在這種情況下,可以先從其他表中選出資料放到itab中,然後使用for all entries 語句來串聯。
如下:
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 ).
上面語句中itab_main是從BSIS中選出的資料。由於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所以這部分不包括在括號中。而bseg與itab_main串聯的內容應該全部包括在"( )"中。
2-FOR ALL ENTRIES IN在實際執行時是將itab_main中的每一行對應一條select語句然後用類似loop的方式select多次來選取資料的,所以速度慢應儘量避免使用。