DECLARE
l_Item_Rec inv_item_grp.item_rec_type;
X_Item_Rec inv_item_grp.item_rec_type;
x_Error_Tbl inv_item_grp.error_tbl_type;
l_Revision_rec inv_item_grp.Item_Revision_Rec_Type;
x_Return_Status Varchar2(1);
l_user_id Number := 0; --User ID, Sysadmin here
l_cur_mfg_org_id Number := 122; --Current Inv Organization
Cursor Cr Is
Select MSI.SEGMENT1,
MSI.DESCRIPTION,
MSI.ITEM_TYPE,
MSI.CREATION_DATE,
MSI.ORGANIZATION_ID,
MSI.INVENTORY_ITEM_STATUS_CODE,
MSI.INVENTORY_ITEM_ID,
MIR.REVISION_ID,
MIR.REVISION_LABEL,
MIR.IMPLEMENTATION_DATE,
MIR.EFFECTIVITY_DATE
From MTL_SYSTEM_ITEMS_B MSI, MTL_ITEM_REVISIONS_VL MIR
Where MSI.INVENTORY_ITEM_ID = MIR.INVENTORY_ITEM_ID
And MSI.ORGANIZATION_ID = MIR.ORGANIZATION_ID
And MSI.ORGANIZATION_ID = l_cur_mfg_org_id
And MSI.SEGMENT1 = '101014903352'
Order By MSI.SEGMENT1;
BEGIN
fnd_global.apps_initialize(user_id => l_user_id,
resp_id => 50237,
resp_appl_id => 401);
For Rs In Cr Loop
--物料編碼
l_Item_Rec.item_number := Rs.Segment1;
--庫存組織ID
l_Item_Rec.organization_id := l_cur_mfg_org_id;
--物料ID
l_Item_Rec.Inventory_Item_Id := Rs.INVENTORY_ITEM_ID;
--Reversion
/*
--新增版本
--Transaction_Type:CREATE新增;UPDATE更新
l_Revision_rec.Transaction_Type := 'CREATE';
--組織ID
l_Revision_rec.Organization_Id := l_Item_Rec.organization_id;
--物料ID
l_Revision_rec.Inventory_Item_Id := l_Item_Rec.Inventory_Item_Id;
--版本標籤
l_Revision_rec.REVISION_LABEL := 'V4.5.01';
--版本
l_Revision_rec.Revision_Code := 1;
--有效日期
l_Revision_rec.EFFECTIVITY_DATE := Sysdate;
--實施日期
l_Revision_rec.IMPLEMENTATION_DATE := Sysdate;
*/
--更新版本
--Transaction_Type:CREATE新增;UPDATE更新
l_Revision_rec.Transaction_Type := 'UPDATE';
--組織ID
l_Revision_rec.Organization_Id := l_Item_Rec.organization_id;
--物料ID
l_Revision_rec.Inventory_Item_Id := l_Item_Rec.Inventory_Item_Id;
--版本ID
l_Revision_rec.Revision_Id := Rs.REVISION_ID;
--版本標籤
l_Revision_rec.REVISION_LABEL := 'V4.5.01';
--版本
l_Revision_rec.Revision_Code := 0;
--有效日期
l_Revision_rec.EFFECTIVITY_DATE := Rs.EFFECTIVITY_DATE;
--實施日期
l_Revision_rec.IMPLEMENTATION_DATE := Rs.IMPLEMENTATION_DATE;
--調用API
inv_item_grp.update_item(p_commit => fnd_api.g_false,
p_item_rec => l_Item_Rec,
X_Item_Rec => X_Item_Rec,
x_Return_Status => x_Return_Status,
x_Error_Tbl => x_Error_Tbl,
p_Revision_rec => l_Revision_rec);
--S表示成功,E表示失敗
IF x_Return_Status <> fnd_api.g_ret_sts_success THEN
ROLLBACK;
FOR i IN 1 .. x_Error_Tbl.COUNT LOOP
dbms_output.put_line('Transaction ID :' || x_Error_Tbl(i)
.transaction_id);
dbms_output.put_line('Unique ID :' || x_Error_Tbl(i)
.unique_id);
dbms_output.put_line('Message Name :' || x_Error_Tbl(i)
.message_name);
dbms_output.put_line('Message Text: :' || x_Error_Tbl(i)
.message_text);
dbms_output.put_line('Table Name :' || x_Error_Tbl(i)
.table_name);
dbms_output.put_line('Column Name :' || x_Error_Tbl(i)
.column_name);
dbms_output.put_line('Organization ID :' || x_Error_Tbl(i)
.organization_id);
END LOOP;
IF (x_Return_Status = fnd_api.g_ret_sts_unexp_error) THEN
RAISE fnd_api.g_exc_unexpected_error;
ELSIF (x_Return_Status = fnd_api.g_ret_sts_error) THEN
Null;
END IF;
ELSE
COMMIT;
END IF;
End Loop;
END;