Select查询数据放一个内表,然后在下一条select语句用where语句in 该内表方法(转)
Select查询数据放一个内表,然后在下一条select语句用where语句in 该内表的方法如下:
第一个内表须定义range类型:
RANGES: it_vbeln FOR lips-vbeln.
然后查询出来的数据要用low
并且需要定义sign和option
并select语句后要用endselect结束。
SELECT vgbel FROM lips AS a INNER JOIN likp AS b ON a~vbeln = b~vbeln
INTO it_vbeln-low
WHERE a~vbeln IN s_vbeln AND b~kunnr IN s_kunnr AND a~erdat IN s_audat AND a~ernam IN s_ernam.
it_vbeln-sign = 'I'.
it_vbeln-option = 'EQ'.
APPEND it_vbeln.
ENDSELECT.
这样下面的select语句就可以in 这个range了。
IF it_vbeln[] IS NOT INITIAL.
SELECT a~vkorg a~audat a~vbeln a~kunnr a~bname a~telf1 a~ernam b~bstkd b~bsark
a~knumv a~vbtyp a~auart c~fksak a~zprt b~bstdk a~lifsk
INTO CORRESPONDING FIELDS OF TABLE gtd_out
FROM vbak AS a INNER JOIN vbkd AS b ON a~vbeln = b~vbeln
INNER JOIN vbuk AS c ON a~vbeln = c~vbeln
WHERE a~vkorg IN s_vkorg AND a~vbeln IN it_vbeln "AND b~bstkd IN s_bstkd
AND kunnr IN s_kunnr AND ernam IN s_ernam.
ENDIF.
原文:https://blog.csdn.net/yuqinying112/article/details/38706795