最近,QQ群友反應他們公司的部分VMI/寄售耗用以後,物料事務處理的“沖減通知”的建立狀态一直是“待定”,如下圖
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DOykjM1ITN4ETMwMDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
其它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該請求的程序,導緻請求中斷。
首先,我們要從VMI/寄售耗用到一攬發放業務的了解。如下圖
參考: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群友采用了第二種方案解決結果如下