如果各位升級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;

arrow
arrow
    全站熱搜

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