close

上週發生了一個新的 Import Error : "Ship To is required on a booked order", 一直看 Ship To 相關欄位都看不出所以然, 後來才發現是別的欄位造成的

OM 模組有一個 Package : OE_DEPENDENCIES, 是 Oracle 用來定義 OM 畫面每一個欄位的主從關係, 從這個 Package 可以知道, 當使用者更新了某欄位, 會連帶哪些欄位會"重新帶出"預設值, 例如 : 

l_index := OE_HEADER_UTIL.G_INVOICE_TO_ORG * G_MAX ;
g_dep_tbl(l_index ).attribute
  := OE_HEADER_UTIL.G_PAYMENT_TERM;
g_dep_tbl(l_index +1 ).attribute  := OE_HEADER_UTIL.G_INVOICE_TO_CONTACT;
g_dep_tbl(l_index +2 ).attribute  := OE_HEADER_UTIL.G_PRICE_LIST;
g_dep_tbl(l_index +3 ).attribute  := OE_HEADER_UTIL.G_FOB_POINT;
g_dep_tbl(l_index +4 ).attribute  := OE_HEADER_UTIL.G_FREIGHT_TERMS;
g_dep_tbl(l_index +5 ).attribute  := OE_HEADER_UTIL.G_TAX_EXEMPT_NUMBER;

以上為部份片段, 表示當使用者變更了 Header 的 Invoice To Org (Invoice To Location) 欄位時, 會將 Payment Term / Invoice To Contact ... 等欄位重新帶入預設值

 

但是, 這是 Oracle 預設的, 有時候就會遇到不可預期的問題或公司流程不需要這樣的主從關係, 那要直接變更這個 Package 嗎? 不用不用, Oracle 還是很好心的留了一個小彈性給我們 : OE_DEPENDENCIES_EXTN, 這個 Package 就是 OE_DEPENDENCIES 的延伸,  我們可以自己新增主從關係, 或是失效既有的.

打開這個 Package Body, 其實就可以看到 Oracle 有註解這個 Package 的撰寫方式. 例如我要將 Invoice To Org 與 Payment Term 之間的主從關係失效 :

IF P_ENTITY_CODE = OE_GLOBALS.G_ENTITY_HEADER THEN
X_EXTN_DEP_TBL ( L_INDEX ).SOURCE_ATTRIBUTE := OE_HEADER_UTIL.G_INVOICE_TO_ORG;
X_EXTN_DEP_TBL ( L_INDEX ).DEPENDENT_ATTRIBUTE := OE_HEADER_UTIL.G_PAYMENT_TERM;
X_EXTN_DEP_TBL ( L_INDEX ).ENABLED_FLAG := 'N';
L_INDEX := L_INDEX + 1;

 

P.S. 有個 OM 的 BUG 就是修改這個 Package 來修正 : 修改 Request Date 會造成 Blanket Line Number 清空, 將這兩個欄位的主從關係拿掉就可以避免了


再講到這個 Import Error, 是因為修改 Blanket Number 會重新帶出預設的 Ship To Org (Ship To Location), 如果本身這個客戶有設定預設的 Ship To, 那這個問題還不會發生, 如果該客戶本身沒有設定預設的 Ship To (如果是 Drop Ship 就很有可能), 那修改 Blanket Number 就會造成 Ship To 為空值, 這就是問題所在.

修改 OE_DEPENDENCIES_EXTN 之後, 不論是 Order Import 或是在標準畫面操作, 都不會再遇到這個問題了 :)

arrow
arrow
    全站熱搜

    Aloz 發表在 痞客邦 留言(0) 人氣()