最近,QQ群友反应他们公司的部分VMI/寄售耗用以后,物料事务处理的“冲减通知”的创建状态一直是“待定”,如下图
其它VMI/寄售供应商或该供应商的耗用,在该事务处理之前或之后都可以通过创建冲通知产生一揽子发放。反复提交请求“创建冲减通知单”也没有作用。
我提供了一条SQL在后台查询有没有产生一揽子发放,如下
Select PRA.* From MTL_CONSUMPTION_TRANSACTIONS MCT, PO_RELEASES_ALL PRA Where MCT.CONSUMPTION_RELEASE_ID = PRA.PO_RELEASE_ID And MCT.TRANSACTION_ID = &TRANSACTION_ID
经过查询没有产生一揽子发放单。
再提供一条SQL在后台查询VMI/寄售事务处理表有没有记录,如下
Select MCT.* From MTL_CONSUMPTION_TRANSACTIONS MCT Where MCT.TRANSACTION_ID = &TRANSACTION_ID
他所查询的结果也是没有记录。汗!!!不可能呀,这么会没有记录呢?其它的VMI/寄售用什么方式产生一揽子发放呢?
通常VMI/寄售耗用时,物料事务处理会产生多条记录,以(设置)子库存移耗用会产生4条记录如下,其中有一条记录的TRANSACTION_ID与MTL_CONSUMPTION_TRANSACTIONS.TRANSACTION_ID字段对应,本例的TRANSACTION_ID为最后一条21136347
经过多次测试不同TRANSACTION_ID值,找到后台对物料事务处理记录如下:
通过查看记录字段CONSUMPTION_RELEASE_ID(一揽子发放的PO_RELEASE_ID)、CONSUMPTION_PROCESSED_FLAG(Y表示已产生一揽子发放;N表示未产生一揽子发放)和BATCH_ID(为249611,说明创建减冲通知时产生的批标识ID),判断结果:没有产生一揽子发放,并且提交“创建冲减通知”请求。但是后续没有自动提交“创建冲减通知工作进程”,有可能DBA维护系统时,强制Kill该请求的进程,导致请求中断。
参考:Oracle EBS 寄销/VMI(2)-->采购篇
再次,提交“创建冲减通知”以后会自动提交请求“创建冲减通知工作进程”。其中,请求“创建冲减通知”通过包INV_CONSUMPTION_ADVICE_PROC的过程batch_allocation分配mtl_consumption_transactions.batch_id的值,而请求“创建冲减通知工作进程”创建一揽子发放单,并且更新表MTL_CONSUMPTION_TRANSACTIONS字段:CONSUMPTION_RELEASE_ID和CONSUMPTION_PROCESSED_FLAG。
根据以上介绍,本案的解决二种方案:
1.提交请求“创建冲减通知工作进程”。
2.修改对应未产生一揽子发放的VMI寄售事务处理表,如下
UPDATE mtl_consumption_transactions SET consumption_po_header_id = Null, consumption_release_id = Null, BATCH_ID = Null Where CONSUMPTION_PROCESSED_FLAG = 'N' And BATCH_ID Is Not Null And error_code Is Null
然后,提交“创建冲减通知”请求。
本案QQ群友采用了第二种方案解决结果如下