"确定数量超过已发行元件数量
if sy-tcode = 'CO11N'.
tables:mseg,resb.
data itab like afpo .
data erfmg like mseg-erfmg.
data erfmg1 like mseg-erfmg.
data bdmng like resb-bdmng.
data enmng like resb-enmng.
data it_resb like resb occurs 0 with header line.
data itab1 like resb occurs 0 with header line.
select single * into itab from afpo where aufnr = caufvd_tab-aufnr.
if sy-subrc = 0.
*
clear erfmg.
erfmg = itab-wemng + caufvd_tab-igmng.
clear erfmg1.
select * into table it_resb from resb where aufnr = caufvd_tab-aufnr and bdmng <> 0.
itab1[] = it_resb[].
sort itab1 by matnr.
delete adjacent duplicates from itab1 comparing matnr.
loop at itab1.
clear bdmng.
loop at it_resb where matnr = itab1-matnr.
* select * from resb where aufnr = i_mseg-aufnr.
bdmng = bdmng + it_resb-bdmng.
endloop.
clear enmng.
if itab1-alpgr <> ''.
select * from resb where aufnr = caufvd_tab-aufnr and alpgr = itab1-alpgr.
enmng = enmng + resb-enmng.
endselect.
else.
loop at it_resb where matnr = itab1-matnr.
enmng = enmng + it_resb-enmng.
endloop.
endif.
if itab-psmng <> 0.
erfmg1 = ( bdmng / itab-psmng ) * erfmg.
endif.
if enmng < erfmg1.
message 'Confirmed quantity exceed issued component quantity' type 'E'.
endif.
endloop.
endif.
endif.
CO12,CO11N 生产订单报工中货物移动界面的BADI.
BADI名称:WORKORDER_GOODSMVT
BADI功能:处理货物移动时的各种检查,操作。
BADI接口:IF_EX_WORKORDER_GOODSMVT
BADI接口方法:
BACKFLUSH Confirmation: Backflush
GOODS_RECEIPT Confirmation: Automatic Goods Receipt
MANUAL_GOODS_RECEIPT Manual Goods Receipt for Order
IM_CALLED Time after Inventory Management is Called
PICKLIST Pick list
GM_SCREEN_LINE_CHECK Goods Movement Overview: Line Check”货物移动行检查
GM_SCREEN_OKCODE_CHECK Goods Movement Overview: OK Code Check“货物移动功能码检查
COGI_AUTHORITY_CHECK Postprocessing: Authorization Check”权限检查
COGI_POST Postprocessing of Incorrect Goods Movements“错误货物移动处理
使用BADI:
SE19定义BADI WORKORDER_GOODSMVT的实现Z_WORKORDER_GOODSMVT。
在接口方法中实现自己所需要的功能。
激活BADI。
可以在此处激活与取消激活BADI
也可以在BADI中利用菜单激活与反激活:
激活BADI的时候经常出现把接口方法激活了,但是没有激活BADI,所以你所要实现的功能也就不会起作用。
切记一定要把BADI的实现激活。