select a~vbeln a~posnr a~kwmeng c~bmeng c~edatu
into (itab-vbeln,itab-posnr,itab-kwmeng,itab-bmeng,itab-edatu)
from vbap as a inner join vbkd as b on a~vbeln = b~vbeln
inner join vbep as c on a~vbeln = c~vbeln and a~posnr = c~posnr
where b~bstkd = itab-ebeln and a~posex = itab-ebelp and c~bmeng''.
move-corresponding itab to itab_data.
itab_data-index = itab_data-index + 1.
append itab_data.
endselect.
请大家帮我看看以上语句,我用VBAP,VBKD,VBEP三个表内连接,VBKD里的PO和VBAP里的item都取内表的数据,
然后找出VBEP里scheduline 的确认数据,为什么找出的数据每一笔都会重复?
另请教ABAP 有没有一个语句是可以取排序后所需要的第几笔数据,例如需要去EKES表中按delivery date排序后确认的第二笔数据,
有没有类似于这样的 写法:select singel top 2 from ekes where ebeln = itab_data-ebeln and ebelp = itab_data-ebelp and ebtyp = 'AB' order by eindt.
我现在的做法很笨,就是把所有结果先取出来后排序,然后根据Index去read。感觉这样很麻烦。
本帖最后由 tianshaguxing2010 于 2012-9-24 11:43 编辑
多谢各位的解答!
程式已经完成,但是运行时只要数据稍大,就会出现runtime error,错误指在下面的的语句:
select single *into corresponding fields of vbkd from vbkd where bstkd = itab-ebeln and posnr = '000000'.
这个语句只是通过vbkd 的PO number查询SO而已,不知为什么会报错。改成下面的都试过了也还是不行:
select single *from vbkd where bstkd = itab-ebeln and posnr = '000000'.
select single vbeln into l_vbelnfrom vbkd where bstkd = itab-ebeln and posnr = '000000'.
后台运行没有问题,请各位高手指点。
晕,图片显示不了。