像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多次来选取数据的,所以速度慢应尽量避免使用。