以下是EBS創建和更新物料清單API案例,詳細代碼如下,僅供參考。
--以下腳本爲創建物料清單腳本
--transaction_type 爲CREATE 時創建 UPDATE 時候更新
--該腳本經過驗證
--added 2019-10-11
DECLARE
-- API input variables
l_bom_header_rec bom_bo_pub.bom_head_rec_type; --BOM Header Record
l_bom_revision_tbl bom_bo_pub.bom_revision_tbl_type; --BOM Revision Table
l_bom_component_tbl bom_bo_pub.bom_comps_tbl_type; --BOM Compinent table -for component records
l_bom_ref_designator_tbl bom_bo_pub.bom_ref_designator_tbl_type; --BOM Reference Designator table -for reference designators
l_bom_sub_component_tbl bom_bo_pub.bom_sub_component_tbl_type; --BOM Substitute Components table -for substitute components
-- API output variables
x_bom_header_rec bom_bo_pub.bom_head_rec_type := bom_bo_pub.g_miss_bom_header_rec; --Output BOM Header Record
--Other BOM output tables - Each of there records hold a return status value and orther IDs as returned by the API
x_bom_revision_tbl bom_bo_pub.bom_revision_tbl_type := bom_bo_pub.g_miss_bom_revision_tbl;
x_bom_component_tbl bom_bo_pub.bom_comps_tbl_type := bom_bo_pub.g_miss_bom_component_tbl;
x_bom_ref_designator_tbl bom_bo_pub.bom_ref_designator_tbl_type := bom_bo_pub.g_miss_bom_ref_designator_tbl;
x_bom_sub_component_tbl bom_bo_pub.bom_sub_component_tbl_type := bom_bo_pub.g_miss_bom_sub_component_tbl;
x_message_list error_handler.error_tbl_type;
l_error_table error_handler.error_tbl_type;
l_debug VARCHAR2(1) := 'N';
l_output_dir VARCHAR2(240); --'/usr/tmp';
l_debug_filename VARCHAR2(60); -- 'bom_debug_07_16.dbg';
l_return_status VARCHAR2(1);
l_msg_count NUMBER;
l_component_cnt NUMBER;
l_sub_component_cnt NUMBER;
BEGIN
fnd_global.apps_initialize(user_id => 246663
,resp_id => 79178
,resp_appl_id => 20064);
--初始化
l_bom_revision_tbl := bom_bo_pub.g_miss_bom_revision_tbl;
l_bom_ref_designator_tbl := bom_bo_pub.g_miss_bom_ref_designator_tbl;
l_bom_sub_component_tbl := bom_bo_pub.g_miss_bom_sub_component_tbl;
l_bom_component_tbl := bom_bo_pub.g_miss_bom_component_tbl;
--物料清單
l_bom_header_rec := bom_bo_pub.g_miss_bom_header_rec;
l_bom_header_rec.organization_code := 'SWA'; --庫存組織
l_bom_header_rec.assembly_item_name := 'S05502502001574'; --裝配件物料
l_bom_header_rec.assembly_type := 1;
l_bom_header_rec.transaction_type := 'CREATE';
l_bom_header_rec.alternate_bom_code := 'V1078227'; --替代項
l_bom_header_rec.bom_implementation_date := to_date('2019-10-11'
,'YYYY-MM-DD'); --日期
l_bom_header_rec.attribute1 := 'AIRBI_ZYZQ'; --完工子庫存
l_bom_header_rec.attribute2 := '1'; --貨期
l_bom_header_rec.attribute3 := 'BOM_TYPE_PRODUCTION'; --BOM類型
--物料清單組件1
l_component_cnt := 1;
l_bom_component_tbl(l_component_cnt).transaction_type := 'CREATE';
l_bom_component_tbl(l_component_cnt).organization_code := l_bom_header_rec.organization_code;
l_bom_component_tbl(l_component_cnt).assembly_item_name := l_bom_header_rec.assembly_item_name;
l_bom_component_tbl(l_component_cnt).alternate_bom_code := l_bom_header_rec.alternate_bom_code;
l_bom_component_tbl(l_component_cnt).item_sequence_number := '10'; --物料序號
l_bom_component_tbl(l_component_cnt).operation_sequence_number := '1'; --工序
l_bom_component_tbl(l_component_cnt).component_item_name := 'S05502502001484'; --組件物料
l_bom_component_tbl(l_component_cnt).basis_type := NULL; -- 基準 null.物料 2.批次
l_bom_component_tbl(l_component_cnt).wip_supply_type := 1; -- 供應類型 1.推式 3.工序拉式
l_bom_component_tbl(l_component_cnt).quantity_per_assembly := 2; --數量
l_bom_component_tbl(l_component_cnt).supply_subinventory := 'AIRBI_ZYZQ'; --子庫存
l_bom_component_tbl(l_component_cnt).comments := 'Test 12345';
l_bom_component_tbl(l_component_cnt).start_effective_date := SYSDATE; --起始日期
l_bom_component_tbl(l_component_cnt).attribute1 := 'BOM_TYPE_GROUP_BUY'; --組件來源
--物料清單組件1替代項1
l_sub_component_cnt := 1;
l_bom_sub_component_tbl(l_sub_component_cnt).transaction_type := 'CREATE';
l_bom_sub_component_tbl(l_sub_component_cnt).organization_code := l_bom_header_rec.organization_code;
l_bom_sub_component_tbl(l_sub_component_cnt).assembly_item_name := l_bom_header_rec.assembly_item_name;
l_bom_sub_component_tbl(l_sub_component_cnt).alternate_bom_code := l_bom_header_rec.alternate_bom_code;
l_bom_sub_component_tbl(l_sub_component_cnt).operation_sequence_number := l_bom_component_tbl(l_component_cnt).operation_sequence_number;
l_bom_sub_component_tbl(l_sub_component_cnt).component_item_name := l_bom_component_tbl(l_component_cnt).component_item_name;
l_bom_sub_component_tbl(l_sub_component_cnt).substitute_component_name := '01001000100010015'; --替代組件
l_bom_sub_component_tbl(l_sub_component_cnt).substitute_item_quantity := 10;
l_bom_sub_component_tbl(l_sub_component_cnt).start_effective_date := SYSDATE; --起始日期
--物料清單組件2
l_component_cnt := l_component_cnt + 1;
l_bom_component_tbl(l_component_cnt).transaction_type := 'CREATE';
l_bom_component_tbl(l_component_cnt).organization_code := l_bom_header_rec.organization_code;
l_bom_component_tbl(l_component_cnt).assembly_item_name := l_bom_header_rec.assembly_item_name;
l_bom_component_tbl(l_component_cnt).alternate_bom_code := l_bom_header_rec.alternate_bom_code;
l_bom_component_tbl(l_component_cnt).item_sequence_number := '20'; --物料序號
l_bom_component_tbl(l_component_cnt).operation_sequence_number := '1'; --工序
l_bom_component_tbl(l_component_cnt).component_item_name := 'S05502502001583'; --組件物料
l_bom_component_tbl(l_component_cnt).basis_type := NULL; -- 基準 null.物料 2.批次
l_bom_component_tbl(l_component_cnt).wip_supply_type := 1; -- 供應類型 1.推式 3.工序拉式
l_bom_component_tbl(l_component_cnt).quantity_per_assembly := 3; --數量
l_bom_component_tbl(l_component_cnt).supply_subinventory := 'AIRBI_ZYZQ'; --子庫存
l_bom_component_tbl(l_component_cnt).comments := 'Test 12345';
l_bom_component_tbl(l_component_cnt).start_effective_date := SYSDATE; --起始日期
l_bom_component_tbl(l_component_cnt).attribute1 := 'BOM_TYPE_GROUP_BUY'; --組件來源
-- initialize error stack for logging errors
error_handler.initialize;
-- call API to create / update bill
dbms_output.put_line('Calling Bom_Bo_Pub.process_bom API');
bom_bo_pub.process_bom(p_bo_identifier => 'BOM'
,p_api_version_number => 1.0
,p_init_msg_list => TRUE
,p_bom_header_rec => l_bom_header_rec
,p_bom_revision_tbl => l_bom_revision_tbl
,p_bom_component_tbl => l_bom_component_tbl
,p_bom_ref_designator_tbl => l_bom_ref_designator_tbl
,p_bom_sub_component_tbl => l_bom_sub_component_tbl
,x_bom_header_rec => x_bom_header_rec
,x_bom_revision_tbl => x_bom_revision_tbl
,x_bom_component_tbl => x_bom_component_tbl
,x_bom_ref_designator_tbl => x_bom_ref_designator_tbl
,x_bom_sub_component_tbl => x_bom_sub_component_tbl
,x_return_status => l_return_status
,x_msg_count => l_msg_count
,p_debug => l_debug
,p_output_dir => l_output_dir
,p_debug_filename => l_debug_filename);
IF l_return_status <> fnd_api.g_ret_sts_success THEN
dbms_output.put_line('Create Bom Error;');
error_handler.get_message_list(x_message_list => l_error_table);
FOR i IN 1 .. l_error_table.count LOOP
dbms_output.put_line('[' || i || ']' || l_error_table(i).table_name || ' ' || l_error_table(i).message_text);
END LOOP;
ELSE
dbms_output.put_line('Create Bom Success;');
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Exception Occured :' || SQLERRM || dbms_utility.format_error_backtrace);
END;