DJ routing --BOM模块的工艺路线
Flow routing -- Flow Manufacturing 模块使用的工艺路线,导入 Flow routing时先导入Line Operation,然后在导入Event.
CREATE OR REPLACE PROCEDURE SU_PROCESS_RTG_TEST AS /* * Note: * bom_rtg_globals.G_OPR_CREATE ==> ‘CREATE‘; * bom_rtg_globals.G_OPR_UPDATE ==> ‘UPDATE‘; * bom_rtg_globals.G_OPR_DELETE ==> ‘DELETE‘; * CFM_Routing_Flag: 1==>Flow Routing,2==>DJ Routing * Operation_Type: 1==>Event,3==>Line Operation 2==>Process * import order: Line Operation => Event =>Process */ -- API input variables l_operation_tbl Bom_Rtg_Pub.Operation_Tbl_Type := Bom_Rtg_Pub.G_MISS_OPERATION_TBL; l_rtg_header_rec Bom_Rtg_Pub.Rtg_Header_Rec_Type := Bom_Rtg_Pub.G_MISS_RTG_HEADER_REC; l_rtg_revision_tbl Bom_Rtg_Pub.Rtg_Revision_Tbl_Type := Bom_Rtg_Pub.G_MISS_RTG_REVISION_TBL; l_op_resource_tbl Bom_Rtg_Pub.Op_Resource_Tbl_Type := Bom_Rtg_Pub.G_MISS_OP_RESOURCE_TBL; l_sub_resource_tbl Bom_Rtg_Pub.Sub_Resource_Tbl_Type := Bom_Rtg_Pub.G_MISS_SUB_RESOURCE_TBL; l_op_network_tbl Bom_Rtg_Pub.Op_Network_Tbl_Type := Bom_Rtg_Pub.G_MISS_OP_NETWORK_TBL; -- API output variables x_rtg_header_rec Bom_Rtg_Pub.Rtg_Header_Rec_Type; -- routing header record x_rtg_revision_tbl Bom_Rtg_Pub.Rtg_Revision_Tbl_Type; -- routing revisions x_operation_tbl Bom_Rtg_Pub.Operation_Tbl_Type; -- routing operations x_op_resource_tbl Bom_Rtg_Pub.Op_Resource_Tbl_Type; -- oepration resources x_sub_resource_tbl Bom_Rtg_Pub.Sub_Resource_Tbl_Type; -- sub operation resources x_op_network_tbl Bom_Rtg_Pub.Op_Network_Tbl_Type; -- operation networks x_message_list Error_Handler.Error_Tbl_Type; -- Other API variables l_return_status VARCHAR2(1) := NULL; l_msg_count NUMBER := 0; l_cnt NUMBER := 1; -- WHO columns l_user_id NUMBER := -1; l_resp_id NUMBER := -1; l_application_id NUMBER := -1; l_row_cnt NUMBER := 1; l_user_name VARCHAR2(30) := ‘xxxxxx‘; l_resp_name VARCHAR2(300) := ‘xxxxx‘; BEGIN -- Get the user_id SELECT user_id INTO l_user_id FROM fnd_user WHERE user_name = l_user_name; -- Get the application_id and responsibility_id SELECT application_id, responsibility_id INTO l_application_id, l_resp_id FROM fnd_responsibility WHERE responsibility_key = l_resp_name; -- Initialize applications information FND_GLOBAL.APPS_INITIALIZE(l_user_id, l_resp_id, l_application_id); -- Mfg / Mfg & Dist Mgr / INV dbms_output.put_line(‘Initialized applications context: ‘ || l_user_id || ‘ ‘ || l_resp_id || ‘ ‘ || l_application_id); -- Create the routing header l_rtg_header_rec.Assembly_Item_Name := ‘TEST20160811‘; l_rtg_header_rec.Organization_Code := ‘HAD‘; l_rtg_header_rec.Alternate_Routing_Code := NULL; l_rtg_header_rec.CFM_Routing_Flag := 1; ---1==>Flow Routing,2==>DJ Routing l_rtg_header_rec.Line_Code := ‘LHA420‘; l_rtg_header_rec.mixed_model_map_flag := 2; --l_rtg_header_rec.Completion_Subinventory := ‘FGI‘; l_rtg_header_rec.Transaction_Type := bom_rtg_globals.G_OPR_CREATE; l_rtg_header_rec.Attribute1 := ‘STD‘; l_rtg_header_rec.eng_routing_flag := 2; -- Create the routing operations --Line operation 1 l_operation_tbl(l_cnt).Assembly_Item_Name := ‘TEST20160811‘; l_operation_tbl(l_cnt).Organization_Code := ‘HAD‘; l_operation_tbl(l_cnt).Alternate_Routing_Code := NULL; l_operation_tbl(l_cnt).Operation_Sequence_Number := ‘10‘; l_operation_tbl(l_cnt).Standard_Operation_Code := ‘5181‘; l_operation_tbl(l_cnt).Operation_Type := 3; ---Operation_Type:1==>Event,3==>Line Operation l_operation_tbl(l_cnt).Start_Effective_Date := SYSDATE - 10; l_operation_tbl(l_cnt).Yield := 0.87; l_operation_tbl(l_cnt).reference_flag :=2; l_operation_tbl(l_cnt).Transaction_Type := bom_rtg_globals.G_OPR_CREATE; --Line operation 2 l_cnt := l_cnt + 1; l_operation_tbl(l_cnt).Assembly_Item_Name := ‘TEST20160811‘; l_operation_tbl(l_cnt).Organization_Code := ‘HAD‘; l_operation_tbl(l_cnt).Alternate_Routing_Code := NULL; l_operation_tbl(l_cnt).Operation_Sequence_Number := ‘20‘; l_operation_tbl(l_cnt).Standard_Operation_Code := ‘5005‘; l_operation_tbl(l_cnt).Operation_Type := 3;---Operation_Type:1==>Event,3==>Line Operation l_operation_tbl(l_cnt).Start_Effective_Date := SYSDATE - 20; -- should match timestamp for UPDATE l_operation_tbl(l_cnt).Yield := 1.0; l_operation_tbl(l_cnt).reference_flag :=2; l_operation_tbl(l_cnt).Transaction_Type := bom_rtg_globals.G_OPR_CREATE; --Event1 l_cnt := l_cnt + 1; l_operation_tbl(l_cnt).Assembly_Item_Name := ‘TEST20160811‘; l_operation_tbl(l_cnt).Organization_Code := ‘HAD‘; l_operation_tbl(l_cnt).Alternate_Routing_Code := NULL; l_operation_tbl(l_cnt).Operation_Sequence_Number := ‘10‘; l_operation_tbl(l_cnt).Standard_Operation_Code := ‘5181‘; l_operation_tbl(l_cnt).Operation_Type := 1; ---Operation_Type:1==>Event,3==>Line Operation l_operation_tbl(l_cnt).Line_Op_Seq_Number := 10; l_operation_tbl(l_cnt).Line_Op_Code := ‘5181‘; l_operation_tbl(l_cnt).Start_Effective_Date := SYSDATE - 10; l_operation_tbl(l_cnt).Yield := 0.87; l_operation_tbl(l_cnt).reference_flag :=2; l_operation_tbl(l_cnt).Transaction_Type := bom_rtg_globals.G_OPR_CREATE; --Event2 l_cnt := l_cnt + 1; l_operation_tbl(l_cnt).Assembly_Item_Name := ‘TEST20160811‘; l_operation_tbl(l_cnt).Organization_Code := ‘HAD‘; l_operation_tbl(l_cnt).Alternate_Routing_Code := NULL; l_operation_tbl(l_cnt).Operation_Sequence_Number := ‘20‘; l_operation_tbl(l_cnt).Standard_Operation_Code := ‘5005‘; l_operation_tbl(l_cnt).Operation_Type := 1; ---Operation_Type:1==>Event,3==>Line Operation l_operation_tbl(l_cnt).Line_Op_Seq_Number := 10; l_operation_tbl(l_cnt).Line_Op_Code := ‘5181‘; l_operation_tbl(l_cnt).Start_Effective_Date := SYSDATE - 10; l_operation_tbl(l_cnt).Yield := 0.87; l_operation_tbl(l_cnt).reference_flag :=2; l_operation_tbl(l_cnt).Transaction_Type := bom_rtg_globals.G_OPR_CREATE; -- initialize error stack for logging errors Error_Handler.initialize; -- call API to create / update routing DBMS_OUTPUT.PUT_LINE(‘=======================================================‘); DBMS_OUTPUT.PUT_LINE(‘Calling Bom_Rtg_Pub.Process_Rtg API‘); BOM_RTG_PUB.PROCESS_RTG(p_bo_identifier => ‘RTG‘, p_api_version_number => ‘1.0‘, p_init_msg_list => TRUE, p_rtg_header_rec => l_rtg_header_rec, p_rtg_revision_tbl => l_rtg_revision_tbl, p_operation_tbl => l_operation_tbl, p_op_resource_tbl => l_op_resource_tbl, p_sub_resource_tbl => l_sub_resource_tbl, p_op_network_tbl => l_op_network_tbl, x_rtg_header_rec => x_rtg_header_rec, x_rtg_revision_tbl => x_rtg_revision_tbl, x_operation_tbl => x_operation_tbl, x_op_resource_tbl => x_op_resource_tbl, x_sub_resource_tbl => x_sub_resource_tbl, x_op_network_tbl => x_op_network_tbl, x_return_status => l_return_status, x_msg_count => l_msg_count, p_debug => ‘N‘, p_output_dir => ‘/usr/tmp/‘, p_debug_filename => ‘rtg_bo_debug.log‘); DBMS_OUTPUT.PUT_LINE(‘=======================================================‘); DBMS_OUTPUT.PUT_LINE(‘Return Status: ‘ || l_return_status); IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN dbms_output.put_line(‘x_msg_count:‘ || l_msg_count); Error_Handler.GET_MESSAGE_LIST(x_message_list => x_message_list); DBMS_OUTPUT.PUT_LINE(‘Error Message Count :‘ || x_message_list.COUNT); FOR i IN 1 .. x_message_list.COUNT LOOP DBMS_OUTPUT.PUT_LINE(to_char(i) || ‘:‘ || x_message_list(i) .entity_index || ‘:‘ || x_message_list(i) .table_name); DBMS_OUTPUT.PUT_LINE(to_char(i) || ‘:‘ || x_message_list(i) .message_text); END LOOP; END IF; DBMS_OUTPUT.PUT_LINE(‘=======================================================‘); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(‘Exception Occured :‘); DBMS_OUTPUT.PUT_LINE(SQLCODE || ‘:‘ || SQLERRM); DBMS_OUTPUT.PUT_LINE(‘=======================================================‘); RAISE; END;
时间: 2024-11-08 18:19:00