因為要開發在另一套BPM系統,所以這次借用API方式更新,網路上常用有兩種API:
ego_item_pub.process_items 和 inv_item_grp.update_item
目前測試兩種都可行,ego_item_pub也可以處理eng item,inv_item_grp我沒試過行不行。
錯誤的話Status會Return:E,基本上若是Return:U 就要debug了,一般只有S:成功或失敗,
偏偏我家的環境出現一個U,抓了半天才發現有人寫的db trigger object失效了@@"。
限制更新欄位跟interface一樣:
PRIMARY_UNIT_OF_MEASURE
...
TEST:
1. EGO_ITEM_PUB
DECLARE
L_ITEM_TABLE EGO_ITEM_PUB.ITEM_TBL_TYPE;
X_ITEM_TABLE EGO_ITEM_PUB.ITEM_TBL_TYPE;
V_MSG_CNT NUMBER(20);
V_RETURN VARCHAR2(1);
V_MSG_LIST ERROR_HANDLER.ERROR_TBL_TYPE;
BEGIN
FND_GLOBAL.APPS_INITIALIZE(123, 50200, 401);
L_ITEM_TABLE(1).TRANSACTION_TYPE := 'UPDATE';
L_ITEM_TABLE(1).INVENTORY_ITEM_ID := 18000; -- INVENTORY_ITEM_ID;
L_ITEM_TABLE(1).ORGANIZATION_ID := 80; -- ORGANIZATION_ID;
L_ITEM_TABLE(1).ATTRIBUTE1 := 'TEST1';
EGO_ITEM_PUB.PROCESS_ITEMS (P_API_VERSION => 1.0,
P_INIT_MSG_LIST => FND_API.G_TRUE,
P_COMMIT => FND_API.G_TRUE,
P_ITEM_TBL => L_ITEM_TABLE,
X_ITEM_TBL => X_ITEM_TABLE,
--P_ROLE_GRANT_TBL => EGO_ITEM_PUB.G_MISS_ROLE_GRANT_TBL,
X_RETURN_STATUS => V_RETURN,
X_MSG_COUNT => V_MSG_CNT
);
DBMS_OUTPUT.PUT_LINE ('RETURN STATUS: ' || V_RETURN);
DBMS_OUTPUT.PUT_LINE ('ERROR MESSAGES: ');
ERROR_HANDLER.GET_MESSAGE_LIST (X_MESSAGE_LIST => V_MSG_LIST);
FOR I IN 1 .. V_MSG_LIST.COUNT
LOOP
DBMS_OUTPUT.PUT_LINE (V_MSG_LIST(I).MESSAGE_TEXT);
END LOOP;
END;
2. INV_ITEM_GRP
DECLARE
L_ITEM_REC INV_ITEM_GRP.ITEM_REC_TYPE;
L_ERROR_TBL INV_ITEM_GRP.ERROR_TBL_TYPE;
X_ITEM_REC INV_ITEM_GRP.ITEM_REC_TYPE;
L_RETURN_STATUS VARCHAR2(40);
BEGIN
L_ITEM_REC.INVENTORY_ITEM_ID := 18000;
L_ITEM_REC.ORGANIZATION_ID := 80;
L_ITEM_REC.PLANNER_CODE := 'EAD';
INV_ITEM_GRP.UPDATE_ITEM(P_COMMIT => FND_API.G_TRUE,
P_LOCK_ROWS => FND_API.G_TRUE,
P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
P_ITEM_REC => L_ITEM_REC,
X_ITEM_REC => X_ITEM_REC,
X_RETURN_STATUS => L_RETURN_STATUS,
X_ERROR_TBL => L_ERROR_TBL);
IF L_ERROR_TBL.COUNT() > 0 THEN
FOR I IN 1 .. L_ERROR_TBL.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(L_ERROR_TBL(I).MESSAGE_TEXT);
DBMS_OUTPUT.PUT_LINE(L_ERROR_TBL(I).MESSAGE_NAME);
END LOOP;
END IF;
END;
夏普視野
工作裡平凡的技術紀錄
2015年3月24日 星期二
2015年3月23日 星期一
很久沒有更新了...
當初,申請這個blog的目的只是為了紀錄EBS客製開發過程常用到的資訊,好讓一些和我一樣會遇到相同問題的朋友做為參考。
因為當時有關EBS客製開發的中文支援並不好找,問顧問有的收費還很誇張,加上自己英文很破,有些熱心的原文網站的範例也都不完整,需要自己測試。這幾年發現網路上這類的文章,已經足夠大家參考了,有的還非常專業,說文解字的,所以很久都沒有上來分享自己工作上一些常用的資訊了。
還有就是這幾年負責的都是各項年度專案的開發,也不在侷限於EBS客製這一快,大都是整合EBS、BPM、WEB、Reporting Service和手持裝置的整合開發,所以也很少有機會分享自己的小小心得。
因為當時有關EBS客製開發的中文支援並不好找,問顧問有的收費還很誇張,加上自己英文很破,有些熱心的原文網站的範例也都不完整,需要自己測試。這幾年發現網路上這類的文章,已經足夠大家參考了,有的還非常專業,說文解字的,所以很久都沒有上來分享自己工作上一些常用的資訊了。
還有就是這幾年負責的都是各項年度專案的開發,也不在侷限於EBS客製這一快,大都是整合EBS、BPM、WEB、Reporting Service和手持裝置的整合開發,所以也很少有機會分享自己的小小心得。
2014年3月10日 星期一
2014年1月14日 星期二
[FORM] FRM-40654: Record has been updated. Requery block to see change
不知道大家會不會常遇到FORM在修改資料時,就給你出現一句:
FRM-40654: Record has been updated. Requery block to see change
怎查都沒有lock時,一般都是欄位值前後有空白造成的,解決方法很簡單,
找出對應的table,把空白值update掉就好了。
FRM-40654: Record has been updated. Requery block to see change
怎查都沒有lock時,一般都是欄位值前後有空白造成的,解決方法很簡單,
找出對應的table,把空白值update掉就好了。
訂閱:
文章 (Atom)