2015年5月30日 星期六

[ASCP]避免 Closed PO 被 ASCP 活動 Re-Open

    今天改程式看到一個 2012 年寫的 Code,當時沒有時間紀錄,但我覺得這段也是很重要。當時採購反映,已經 Closed 的 PO 突然變成 Open

   相關的細節現在已經不是記得那麼清楚,印象中,當時採購反映,已經 Close 的 PO,卻突然又變成 Open,同時採購很確定不是人為 Open 的。

   那時一直找不到原因,除了 User 很肯定沒有去 Re-Open,我們也很確定沒有寫程式去做這件事。直到突然發現,每次 User 都是在週三早上反映 PO 被 Re-Open,而 Last update 時間都是周二晚上(或週三凌晨)。

    我們分析了這段時間的 Concurrent Request 發現,ERP 的 Reschedule PO 這支 Concurrent Program 最為可疑,而這支 Concurrent Program 正是物管從 ASCP 將 Reschedule PO 做 Release 時,會 Launch 起來的程式。

     我們發現,如果 User 沒有將 PO 先 Cancel,而是直接將狀態改為 Close,此時透過 PO API 去變更 Promised Date 時,該 PO (或 PO Line) 就會被 Re-Open。

    解決辦法是透過 Trigger,雖然我很不喜歡在 EBS 的標準 Table 增加 Trigger,但在這個議題上,我找不到更好的方法。

    從 ASCP Release 出來做 Reschedule 的 PO 資訊,會放在 Table MSC_PURCHASE_ORDER_INTERFACE 中,我做了一個 Before Trigger,到 ERP 檢查該 PO、Line & Shipment 的狀態,如果是 Closed,則將 batch_id 換成 -1,如此一來,該筆 Record 就不會被 Reschedule PO 抓去 Run 了。

2 則留言:

小蔡 提到...

或許在關閉PO時,下列兩個欄位定義為 100% ,應該就不會重新開啟
Receipt Close Tolerance (%)
Invoice Close Tolerance (%)

匿名 提到...

Z***l公司的 Rex ? C***o公司的小蔡?