因为abap select 不支持 子查询;
很多时候,只有把记录保存在一个内
很多时候,只有把记录保存在一个内表中,然后在通过内表循环再
loop at 内表
select * from 表 where = 表~id =内表-id
endloop.
为此程序执行效率低:
可以用下列方式:
DATA: BEGIN OF i_tab OCCURS 0 ,
sign(1),
option(2),
low LIKE afko-aufnr,
high LIKE afko-aufnr,
END OF i_tab.
INTO CORRESPONDING FIELDS OF TABLE i_tab .
I_tab-sign = 'I'.
I_tab-option = 'EQ'.
MODIFY I_tab TRANSPORTING sign option WHERE option = ''.
I_tab-sign = 'I'.
I_tab-option = 'EQ'.
MODIFY I_tab TRANSPORTING sign option WHERE option = ''.
select
AFPO~AUFNR "生产订单
max( AFVC~VORNR ) as VORNR
APPENDING CORRESPONDING FIELDS OF TABLE I_Pro
FROM AFPO
INNER JOIN afko ON afpo~mandt = afko~mandt AND afpo~aufnr = afko~aufnr
INNER JOIN makt ON afpo~mandt = makt~mandt AND afpo~matnr = makt~matnr AND makt~spras = sy-langu
INNER JOIN mara ON mara~mandt = makt~mandt AND mara~matnr = makt~matnr
INNER JOIN afvc ON afko~aufpl = afvc~aufpl
INNER JOIN afvv ON afvv~aufpl = afvc~aufpl AND afvv~aplzl = afvc~aplzl
INNER JOIN affl ON affl~aufpl = afko~aufpl
INNER JOIN aufk ON afko~aufnr = aufk~aufnr
INNER JOIN JEST ON AUFK~OBJNR = JEST~OBJNR AND JEST~STAT = 'I0002'
where afko~aufnr in I_pro1 AND AFVC~OBJNR NOT IN i_tab group by AFPO~AUFNR .