如果各位升級EBS 後,修改客戶或供應商資料遇到
1." This record in table HZ_PARTIES cannot be locked as it has been updated by another user"
或
2.'Tax Registration Number is already in use for party type: Third Party, Party Name: XXX'
這些情形,且確定資料根本沒重複且也沒人在更新中...Tax Registration Number 手動進去一筆一筆改
可以修正這問題,可是客戶資料可是一大堆啊,叫我一個一個改我哪有那時間...
已經跟原廠吵很久了,只會一直叫我提供資料或做一堆datafix 都沒用...浪費一堆時間..
我花了一些時間測試,找到可以用這種方式執行同步, 有遇到問題的可以參考喔~~
PS:我方目前未啟用稅捐,也沒有Tax Registration Number 可用~
但之前升級後~很多客戶的Tax Registration Number 都變成'NULL' 或' '
這樣的字眼~然後就造成以上的異常了~
所以我把以上兩種的字串Tax Registration Number先全部update 成 party_id ..
再執行同步指令就ok了~
改完後再進行同步...
declare
cursor cur is select a.*
from ZX_PARTY_TAX_PROFILE a
WHERE a.PARTY_TYPE_CODE = 'THIRD_PARTY' AND a.PARTY_ID IN (SELECT PARTY_ID FROM XX_CUSTOMER_QUICK_VIEW_ALL_MV)
and a.REP_REGISTRATION_NUMBER=to_char(a.party_id) ;
x_return_status VARCHAR2(400);
x_msg_count NUMBER:=0;
x_msg_data VARCHAR2(1000);
begin
for rec in cur loop
zx_party_tax_profile_pkg.sync_tax_reg_num(rec.party_id,rec.REP_REGISTRATION_NUMBER,x_return_status,x_msg_count,x_msg_data);
dbms_output.put_line('party id '||rec.party_id);
dbms_output.put_line(SubStr('x_return_status =' ||x_return_status,1,255));
dbms_output.put_line('x_msg_count = '||TO_CHAR(x_msg_count));
dbms_output.put_line(SubStr('x_msg_data = '||x_msg_data,1,255));
commit;
IF x_msg_count >1 THEN
FOR I IN 1..x_msg_count
LOOP
dbms_output.put_line(I||'.'||SubStr(FND_MSG_PUB.Get(p_encoded =>FND_API.G_FALSE ), 1, 255));
END LOOP;
END IF;
end loop;
end;