Oracle EBS Interface/API(7)--建立WIP任務單
阿新 • • 發佈:2019-02-08
系統版本:
RDBMS : 9.2.0.6.0
3.或者用SQL提交“WIP 成批裝入”請求建立任務單
RDBMS : 9.2.0.6.0
1.根據裝配件自動建立任務
Declare l_iface_rec wip.wip_job_schedule_interface%ROWTYPE; --任務單--元件 l_GroupId Number := 123456; l_OrganizationId Number :=122; l_UserId Number:=0; Begin --*****Start任務單裝配件*****---- l_iface_rec.last_update_date := SYSDATE; l_iface_rec.last_updated_by := l_UserId; l_iface_rec.creation_date := SYSDATE; l_iface_rec.created_by := l_UserId; l_iface_rec.last_update_login := fnd_profile.value('LOGIN_ID'); l_iface_rec.group_id := l_GroupId; l_iface_rec.load_type := 1; l_iface_rec.process_phase := 2; l_iface_rec.process_status := 1; --1為未發放(UnReleased),3為建立任務單以後狀態自動已發放(Released) l_iface_rec.status_type := 3; --1 UnReleased/3 Released 需要開會計期 --預設為Y,若為Y時,則無須把元件、工序和資源等等資料插入介面表WIP.WIP_JOB_SCHEDULE_INTERFACE。 --若為N時,則需要往介面表表WIP.WIP_JOB_SCHEDULE_INTERFACE插入元件、工序和資源等等資料 l_iface_rec.allow_explosion := 'Y'; --任務單名稱 l_iface_rec.job_name := 'TEST131112_001'; --組織標識 l_iface_rec.organization_id := l_OrganizationId; --裝配件標識 l_iface_rec.primary_item_id := 463235; --開始數量 l_iface_rec.start_quantity := 435; --開始日期 l_iface_rec.first_unit_start_date := SYSDATE; --任務單來源 自定義 l_iface_rec.source_code := 'WIPPLAN'; --來源標識 自定義 l_iface_rec.source_line_id := 0; --題頭標識 自定義 l_iface_rec.Header_Id := 3452; l_iface_rec.first_unit_start_date := Sysdate; l_iface_rec.First_Unit_Completion_Date := Null; l_iface_rec.last_unit_start_date := Null; l_iface_rec.last_unit_completion_date := Sysdate; INSERT INTO WIP.WIP_JOB_SCHEDULE_INTERFACE VALUES l_iface_rec; --*****End 任務單裝配件*****---- End;
2.手工建立任務單(元件、工序和資源)如下:
Declare --任務單 l_iface_rec wip.wip_job_schedule_interface%ROWTYPE; --任務單-元件 l_CompRec wip.wip_job_dtls_interface%ROWTYPE; --任務單-工序 l_OpRec wip.wip_job_dtls_interface%ROWTYPE; --任務單-資源 l_ResRec WIP.WIP_JOB_DTLS_INTERFACE%ROWTYPE; l_GroupId Number := 123456; l_OrganizationId Number := 122; l_UserId Number := 0; Begin --*****Start任務單裝配件*****---- l_iface_rec.last_update_date := SYSDATE; l_iface_rec.last_updated_by := l_UserId; l_iface_rec.creation_date := SYSDATE; l_iface_rec.created_by := l_UserId; l_iface_rec.last_update_login := fnd_profile.value('LOGIN_ID'); l_iface_rec.group_id := l_GroupId; l_iface_rec.load_type := 1; l_iface_rec.process_phase := 2; l_iface_rec.process_status := 1; --1為未發放(UnReleased),3為建立任務單以後狀態自動已發放(Released) l_iface_rec.status_type := 3; --1 UnReleased/3 Released 需要開會計期 --預設為Y,若為Y時,則無須把元件、工序和資源等等資料插入介面表WIP.WIP_JOB_SCHEDULE_INTERFACE。 --若為N時,則需要往介面表表WIP.WIP_JOB_SCHEDULE_INTERFACE插入元件、工序和資源等等資料 l_iface_rec.allow_explosion := 'N'; --任務單名稱 l_iface_rec.job_name := 'TEST131112_001'; --組織標識 l_iface_rec.organization_id := l_OrganizationId; --裝配件標識 l_iface_rec.primary_item_id := 463235; --開始數量 l_iface_rec.start_quantity := 435; --開始日期 l_iface_rec.first_unit_start_date := SYSDATE; --任務單來源 自定義 l_iface_rec.source_code := 'WIPPLAN'; --來源標識 自定義 l_iface_rec.source_line_id := 0; --題頭標識 自定義 l_iface_rec.Header_Id := 3452; l_iface_rec.first_unit_start_date := Sysdate; l_iface_rec.First_Unit_Completion_Date := Null; l_iface_rec.last_unit_start_date := Null; l_iface_rec.last_unit_completion_date := Sysdate; INSERT INTO WIP.WIP_JOB_SCHEDULE_INTERFACE VALUES l_iface_rec; --*****End 任務單裝配件*****---- --*****Start 任務單元件*****--- --可以新增、刪除或修改多個元件 --工序 WIP_REQUIREMENT_OPERATIONS.OPERATION_SEQ_NUM l_CompRec.OPERATION_SEQ_NUM := 10; --舊元件 l_CompRec.INVENTORY_ITEM_ID_OLD := Rs.Inventory_Item_Id_Old; --新元件 新增時必輸項 l_CompRec.INVENTORY_ITEM_ID_NEW := Rs.Inventory_Item_Id_New; --主要 每個裝配件 WIP_REQUIREMENT_OPERATIONS.QUANTITY_PER_ASSEMBLY l_CompRec.QUANTITY_PER_ASSEMBLY := Rs.Quantity_Per_Assembly; --主要 部門 WIP_REQUIREMENT_OPERATIONS.DEPARTMENT_ID l_CompRec.DEPARTMENT_ID := Rs.Department_Id; --供應 型別 WIP_REQUIREMENT_OPERATIONS.WIP_SUPPLY_TYPE l_CompRec.WIP_SUPPLY_TYPE := Rs.Wip_Supply_Type; --主要 需求日期 WIP_REQUIREMENT_OPERATIONS.DATE_REQUIRED l_CompRec.DATE_REQUIRED := Sysdate; --供應 子庫存 WIP_REQUIREMENT_OPERATIONS.SUPPLY_SUBINVENTORY l_CompRec.SUPPLY_SUBINVENTORY := Rs.Supply_Subinventory; --供應 貨位標識 WIP_REQUIREMENT_OPERATIONS.SUPPLY_LOCATOR_ID l_CompRec.SUPPLY_LOCATOR_ID := Rs.Supply_Locator_Id; --是否MRP淨需求,預設值為1 WIP_REQUIREMENT_OPERATIONS.MRP_NET_FLAG l_CompRec.MRP_NET_FLAG := Rs.Mrp_Net_Flag; --主需求計劃數量 WIP_REQUIREMENT_OPERATIONS.Mps_Required_Quantity l_CompRec.MPS_REQUIRED_QUANTITY := Rs.Mps_Required_Quantity; --主需求計劃日期 WIP_REQUIREMENT_OPERATIONS.MPS_DATE_REQUIRED l_CompRec.MPS_DATE_REQUIRED := Rs.Mps_Date_Required; --當是元件介面資料時,其值必須為2 l_CompRec.LOAD_TYPE := 2; --與建立任務單題頭的相同:WIP.WIP_JOB_SCHEDULE_INTERFACE.HEADER_ID l_CompRec.PARENT_HEADER_ID := 3452; --元件-備註 WIP_REQUIREMENT_OPERATIONS.COMMENTS l_CompRec.DESCRIPTION := '測試元件'; l_CompRec.LAST_UPDATE_DATE := Sysdate; l_CompRec.LAST_UPDATED_BY := l_UserId; l_CompRec.CREATION_DATE := Sysdate; l_CompRec.CREATED_BY := l_UserId; l_CompRec.LAST_UPDATE_LOGIN := fnd_profile.value('LOGIN_ID'); l_CompRec.Process_Phase := 2; --預設值 l_CompRec.Process_Status := 1; --預設值 l_CompRec.Group_Id := l_GroupId; /* 刪除:wip_job_details.WIP_DELETE預設為1 新增:wip_job_details.wip_add預設值為2 修改:wip_job_details.WIP_CHANGEl預設值為3*/ l_CompRec.Substitution_Type := wip_job_details.wip_add; Insert Into WIP.WIP_JOB_DTLS_INTERFACE Values l_CompRec; --*****End 任務單元件*****--- --*****Start 任務單工序****-- --工序 WIP_OPERATIONS.Operation_Seq_Num l_OpRec.Operation_Seq_Num := l_CompRec.OPERATION_SEQ_NUM; --部門 WIP_OPERATIONS.Department_Id l_OpRec.Department_Id := l_CompRec.Department_Id; l_OpRec.Load_Type := 3; --供應商型別 l_OpRec.Wip_Supply_Type := l_CompRec.Wip_Supply_Type; l_OpRec.Parent_Header_Id := l_iface_rec.Header_Id; l_OpRec.Description := '測試工序'; --準標工序標識 WIP_OPERATIONS.Standard_Operation_Id l_OpRec.Standard_Operation_Id := 6; --日期 第一個裝配件起始日期 WIP_OPERATIONS.FIRST_UNIT_START_DATE l_OpRec.First_Unit_Start_Date := Sysdate; --日期 第一個裝配件完成日期 WIP_OPERATIONS.First_Unit_Completion_Date l_OpRec.First_Unit_Completion_Date := Sysdate; --日期 最後一個裝配件起始日期 WIP_OPERATIONS.Last_Unit_Start_Date l_OpRec.Last_Unit_Start_Date := Sysdate; --日期 最後一個裝配件起始日期 WIP_OPERATIONS.Last_Unit_Completion_Date l_OpRec.Last_Unit_Completion_Date := Sysdate; --主要 最小傳送量 WIP_OPERATIONS.MINIMUM_TRANSFER_QUANTITY l_OpRec.Minimum_Transfer_Quantity := 0; --主要 倒衝 WIP_OPERATIONS.Backflush_Flag l_OpRec.Backflush_Flag := 1; --主要 計數點 WIP_OPERATIONS.Count_Point_Type l_OpRec.Count_Point_Type := 1; l_OpRec.Last_Update_Date := Sysdate; l_OpRec.Last_Updated_By := l_UserId; l_OpRec.Creation_Date := Sysdate; l_OpRec.Created_By := l_UserId; l_OpRec.Last_Update_Login := fnd_profile.value('LOGIN_ID'); l_OpRec.Process_Phase := 2; --預設值 l_OpRec.Process_Status := 1; --預設值 l_OpRec.Group_Id := l_GroupId; /* 刪除:wip_job_details.WIP_DELETE預設為1 新增:wip_job_details.wip_add預設值為2 修改:wip_job_details.WIP_CHANGEl預設值為3*/ l_OpRec.Substitution_Type := wip_job_details.wip_add; Insert Into WIP.WIP_JOB_DTLS_INTERFACE Values l_OpRec; --*****End 任務單工序****-- --*****Start 任務單資源***--- --可以新增、刪除或修改多個資源 --工序 WIP_OPERATION_RESOURCES.Operation_Seq_Num l_ResRec.OPERATION_SEQ_NUM := l_CompRec.OPERATION_SEQ_NUM; --資源序號 WIP_OPERATION_RESOURCES.RESOURCE_SEQ_NUM l_ResRec.RESOURCE_SEQ_NUM := 10; --新資源標識 新增時必輸項 l_ResRec.RESOURCE_ID_NEW := 501899; --主要 單位用量或數量值 WIP_OPERATION_RESOURCES.Usage_Rate_Or_Amount l_ResRec.USAGE_RATE_OR_AMOUNT := .86; --計劃 已計劃 預設值為2(否) WIP_OPERATION_RESOURCES.Scheduled_Flag l_ResRec.SCHEDULED_FLAG := 2; --計劃 分配數量 預設值為1 WIP_OPERATION_RESOURCES.Assigned_Units l_ResRec.ASSIGNED_UNITS := 1; l_ResRec.APPLIED_RESOURCE_UNITS := Null; l_ResRec.APPLIED_RESOURCE_VALUE := Null; --主要 單位 WIP_OPERATION_RESOURCES.UOM_CODE l_ResRec.UOM_CODE := 'CNY'; --主要 基準 預設值1(物料) WIP_OPERATION_RESOURCES.BASIS_TYPE l_ResRec.BASIS_TYPE := 1; --成本計算 活動標識 WIP_OPERATION_RESOURCES.ACTIVITY_ID l_ResRec.ACTIVITY_ID := Null; --成本計算 計費型別 WIP_OPERATION_RESOURCES.AUTOCHARGE_TYPE l_ResRec.AUTOCHARGE_TYPE := 1; --成本計算 標準費率 預設值為2 l_ResRec.STANDARD_RATE_FLAG := 2; --計劃 起始日期 WIP_OPERATION_RESOURCES.START_DATE l_ResRec.START_DATE := Sysdate; --計劃 完成日期 WIP_OPERATION_RESOURCES.COMPLETION_DATE l_ResRec.COMPLETION_DATE := Sysdate; --計劃 替代組 WIP_OPERATION_RESOURCES.SUBSTITUTE_GROUP_NUM l_ResRec.SUBSTITUTE_GROUP_NUM := Null; --計劃 替換組 WIP_JOB_DTLS_INTERFACE.REPLACEMENT_GROUP_NUM l_ResRec.REPLACEMENT_GROUP_NUM := Null; --計劃 批WIP_JOB_DTLS_INTERFACE.BATCH_ID --計劃 計劃序號 WIP_JOB_DTLS_INTERFACE.SCHEDULE_SEQ_NUM l_ResRec.SCHEDULE_SEQ_NUM := Null; l_ResRec.BATCH_ID := Null; l_ResRec.LOAD_TYPE := 1; --預設值 l_ResRec.PARENT_HEADER_ID := l_iface_rec.Header_Id; l_ResRec.DESCRIPTION := Null; l_ResRec.LAST_UPDATE_DATE := Sysdate; l_ResRec.LAST_UPDATED_BY := l_UserId; l_ResRec.CREATION_DATE := Sysdate; l_ResRec.CREATED_BY := l_UserId; l_ResRec.LAST_UPDATE_LOGIN := fnd_profile.value('LOGIN_ID'); l_ResRec.Process_Phase := 2; --預設值 l_ResRec.Process_Status := 1; --預設值 l_ResRec.Group_Id := l_GroupId; /* 刪除:wip_job_details.WIP_DELETE預設為1 新增:wip_job_details.wip_add預設值為2 修改:wip_job_details.WIP_CHANGEl預設值為3*/ l_ResRec.Substitution_Type := wip_job_details.wip_add; Insert Into WIP.WIP_JOB_DTLS_INTERFACE. Values l_ResRec; --*****End 任務單工序***--- --API介面 wip_massload_pub.massloadjobs(p_groupid => l_iface_rec.group_id, -- Group ID p_validationlevel => 2, -- Validation Level p_commitflag => 0, -- Commit 1 =Yes , 0 ='No' x_returnstatus => x_error_status, x_errormsg => x_error_message); End;
3.或者用SQL提交“WIP 成批裝入”請求建立任務單
Declare l_GroupId Number := 123456; v_ReqID Number; l_phase Varchar(200); l_status Varchar(200); l_dev_phase Varchar(200); l_dev_status Varchar(200); l_message Varchar(2000); l_request_status boolean; l_UserId Number := 0; Begin fnd_global.apps_initialize(user_id => l_UserId, resp_id => 50276, resp_appl_id => 706, security_group_id => 0); v_ReqID := fnd_request.submit_request(application => 'WIP', program => 'WICMLP', description => '', start_time => '', sub_request => FALSE, argument1 => to_char(l_GroupId), --組標識 argument2 => '0', --驗證型別 argument3 => '1', --報表是否列印,1:YES,2.NO argument4 => CHR(0)); If (v_ReqID > 0) Then l_request_status := Fnd_Concurrent.Wait_For_Request(v_ReqID, 5, 0, l_phase, l_status, l_dev_phase, l_dev_status, l_message); IF l_request_status THEN IF l_dev_status = 'NORMAL' Or l_dev_status = 'WARNING' THEN dbms_output.put_line('[WIP 成批裝入]執行成功'); ELSE dbms_output.put_line('[WIP 成批裝入]執行失敗:' || l_dev_status); END IF; ELSE dbms_output.put_line('請求未完成,無法檢視報表內容!'); END IF; End If; End;