BOM_創建更新物料清單腳本

以下是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;


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章