Fixed Assets API导入测试

Backdrop:

1.花很长一段时间盘点所有Fixed Assets,我主要处理的是电子产品类,电子产品类在OA上有管理记录,ERP上也有管理记录,但是盘点之后发现实际数据与OA、ERP记录的数据都核对不清。

2.解决方法:将ERP中的固定资产(仅电子产品类)全部报废,将现有资产信息由财务整理好,然后通过API重新导入。

Difficulties:

1.时间:11月25号开始至30号关帐.

2.初涉FA,界面操作都不熟练,且对API不熟悉。

3.在获得FA相关的API后,需时间测试,尤其需要考虑导入是否会影响一些没有注意到的东东。

 Test Script:

  procedure auto_import_info_p(errbuf out varchar2, retcode out number) is
    l_trans_rec           fa_api_types.trans_rec_type;
    l_dist_trans_rec      fa_api_types.trans_rec_type;
    l_asset_hdr_rec       fa_api_types.asset_hdr_rec_type;
    l_asset_desc_rec      fa_api_types.asset_desc_rec_type;
    l_asset_cat_rec       fa_api_types.asset_cat_rec_type;
    l_asset_type_rec      fa_api_types.asset_type_rec_type;
    l_asset_hierarchy_rec fa_api_types.asset_hierarchy_rec_type;
    l_asset_fin_rec       fa_api_types.asset_fin_rec_type;
    l_asset_deprn_rec     fa_api_types.asset_deprn_rec_type;
    l_asset_dist_rec      fa_api_types.asset_dist_rec_type;
    l_asset_dist_tbl      fa_api_types.asset_dist_tbl_type;
    l_inv_tbl             fa_api_types.inv_tbl_type;
    l_inv_rate_tbl        fa_api_types.inv_rate_tbl_type;
 
    l_return_status varchar2(1);
    l_mesg_count    number := 0;
    l_mesg_len      number;
    l_mesg          varchar2(4000);
 
  begin
 
    fnd_profile.put('PRINT_DEBUG', 'Y'); --用于指定相关的配置信息
    errbuf  := null;
    retcode := null;
    fa_srvr_msg.init_server_message; --初始化错误信息堆栈。
    fa_debug_pkg.initialize; --初始化调试信息堆栈
 
    -- desc info
    l_asset_desc_rec.description    := null; --'Dell computer'; --说明
    l_asset_desc_rec.asset_key_ccid := 1; --与资产关键字对应的代码组合标识
 
    -- cat info *** NEED TO CHANGE BASED ON CATEGORY SETUP FOR YOUR BOOK ***
    l_asset_cat_rec.category_id := 3; --类别id    fa_categories_b
 
    --type info
    l_asset_type_rec.asset_type := 'CAPITALIZED'; --资本化
 
    -- fin info
    l_asset_fin_rec.cost                   := 1001; --当前成本
    l_asset_fin_rec.date_placed_in_service := to_date('2009-08-31',
                                                      'yyyy-mm-dd'); --启用日期     --'&DPIS';
    l_asset_fin_rec.depreciate_flag        := 'YES'; --折旧复选框
    l_asset_fin_rec.deprn_method_code      := 'STL'; --方法
    l_asset_fin_rec.life_in_months         := 60; --总月数 
 
    -- deprn info
    l_asset_deprn_rec.ytd_deprn           := 0; --YTD折旧
    l_asset_deprn_rec.deprn_reserve       := 0; --累计折旧
    l_asset_deprn_rec.bonus_ytd_deprn     := 0; --额外折旧???????
    l_asset_deprn_rec.bonus_deprn_reserve := 0; --预计额外折旧????
 
    -- book / trans info
    l_asset_hdr_rec.book_type_code       := '帐簿'; --'&book';  
    l_trans_rec.transaction_date_entered := l_asset_fin_rec.date_placed_in_service; --转移日期
    l_trans_rec.who_info.last_updated_by := fnd_global.user_id; --当前用户*****************
 
    -- distribution info                 --分配信息                          --fa_distribution_history
 
    l_asset_dist_rec.units_assigned := 2; -- select distinct units_assigned from fa_distribution_history;
    l_asset_dist_rec.expense_ccid   := 64157; --是一个组合id
    /*
    select * from fa_distribution_history
    where trunc(last_update_date,'DD') = trunc(to_date('2009-11-20','yyyy-mm-dd'),'DD');  --expense_ccid 实际是code_combination_id
   
    select * from GL_CODE_COMBINATIONS
    where code_combination_id = 64157;
    */
 
    l_asset_dist_rec.location_ccid := 40; --
    --HEK_固定资产超级用户 -> 设置 -> 财务系统 -> 员工    找person_ID
    l_asset_dist_rec.assigned_to := 120; --负责此资产的员工的员工标识
    apps.fnd_file.put_line(apps.fnd_file.log,
                           '员工编号:' || l_asset_dist_rec.assigned_to);
    l_asset_dist_rec.transaction_units := l_asset_dist_rec.units_assigned;
    l_asset_dist_tbl(1) := l_asset_dist_rec;
 
    --l_asset_desc_rec.asset_number :=                                             --资产编号 --自动生成
    --l_asset_desc_rec.property_type_code := 'REAL';
    --l_asset_desc_rec.property_1245_1250_code := '1245';
    --l_asset_desc_rec.in_use_flag := 'YES';
    --l_asset_desc_rec.owned_leased := 'OWNED';
    --l_asset_desc_rec.new_used := 'NEW';
    --l_asset_desc_rec.inventorial := 'YES';
    --l_asset_desc_rec.manufacturer_name :=
    --l_asset_desc_rec.serial_number :=
    --l_asset_desc_rec.model_number :=
    --l_asset_desc_rec.tag_number :=
    --l_asset_desc_rec.parent_asset_id :=
    --l_asset_desc_rec.warranty_id :=
    --l_asset_desc_rec.lease_id :=
 
    -- For tax addition, will need existing asset_id
    --l_asset_hdr_rec.asset_id :=
 
    --l_asset_fin_rec.salvage_value :=
    --l_asset_fin_rec.unrevalued_cost :=
    --l_asset_fin_rec.short_fiscal_year_flag :=
    --l_asset_fin_rec.conversion_date :=
    --l_asset_fin_rec.orig_deprn_start_date :=
    --l_asset_fin_rec.unit_of_measure :=
 
    --l_asset_deprn_rec.reval_deprn_reserve :=
    --l_asset_deprn_rec.reval_amortization_basis :=
 
    -- Accept amort start date for amortize NBV additions
    -- l_trans_rec.amortization_start_date :=
    -- to_date('&amort_start_date', 'DD-MON-YYYY');
 
    -- call the api
    fa_addition_pub.do_addition(p_api_version          => 1.0, --版本                         --内部使用参数,版本信息
                                p_init_msg_list        => fnd_api.g_false, --不初始化消息                 --确定是否应该消息栈初始化和清除。
                                p_commit               => fnd_api.g_false, --是否自动提交处理过的资产
                                p_validation_level     => fnd_api.g_valid_level_full, --检查API是否应该对资产进行验证
                                x_return_status        => l_return_status, --确定是否API的成功完成。
                                x_msg_count            => l_mesg_count, --邮件数堆栈的消息。
                                x_msg_data             => l_mesg, --消息堆栈
                                p_calling_fn           => null, --调用API函数
                                px_trans_rec           => l_trans_rec, --描述的交易发生。
                                px_dist_trans_rec      => l_dist_trans_rec, --描述了交易分布?
                                px_asset_hdr_rec       => l_asset_hdr_rec, --添加资产的唯一标识符。
                                px_asset_desc_rec      => l_asset_desc_rec, --资产说明
                                px_asset_type_rec      => l_asset_type_rec, --资产类型
                                px_asset_cat_rec       => l_asset_cat_rec, --资产分类信息
                                px_asset_hierarchy_rec => l_asset_hierarchy_rec, --资产层次的信息Hierarchy information of the asset
                                px_asset_fin_rec       => l_asset_fin_rec, --资产财务信息
                                px_asset_deprn_rec     => l_asset_deprn_rec, --资产折旧信息
                                px_asset_dist_tbl      => l_asset_dist_tbl, --资产分布信息
                                px_inv_tbl             => l_inv_tbl, --资产发票
                                px_inv_rate_tbl        => l_inv_rate_tbl --对利率表为资产为医学研究委员会的发票
                                );
    apps.fnd_file.put_line(apps.fnd_file.log,
                           'l_return_status : ' || l_return_status);
    apps.fnd_file.put_line(apps.fnd_file.log,
                           'fnd_api.g_ret_sts_success : ' ||
                           fnd_api.g_ret_sts_success);
    if (l_return_status <> fnd_api.g_ret_sts_success) then
      apps.fnd_file.put_line(apps.fnd_file.log, 'FAILED');
      apps.fnd_file.put_line(apps.fnd_file.log, 'error: ' || sqlerrm);
      l_mesg_count := fnd_msg_pub.count_msg;
   
      if l_mesg_count > 0 then
     
        l_mesg := chr(10) || substr(fnd_msg_pub.get(fnd_msg_pub.g_first,
                                                    fnd_api.g_false),
                                    1,
                                    512);
        for i in 1 .. 2
        loop
          l_mesg := l_mesg || chr(10) || substr(fnd_msg_pub.get(fnd_msg_pub.g_next,
                                                                fnd_api.g_false),
                                                1,
                                                512);
       
        end loop;
     
        fnd_msg_pub.delete_msg();
     
        l_mesg_len := length(l_mesg);
        for i in 1 .. ceil(l_mesg_len / 255)
        loop
          apps.fnd_file.put_line(apps.fnd_file.log,
                                 substr(l_mesg, ((i * 255) - 254), 255));
        end loop;
      end if;
   
    else
      apps.fnd_file.put_line(apps.fnd_file.log, 'SUCCESS');
      apps.fnd_file.put_line(apps.fnd_file.log,
                             'THID: ' ||
                             to_char(l_trans_rec.transaction_header_id));
      apps.fnd_file.put_line(apps.fnd_file.log,
                             'ASSET_ID: ' ||
                             to_char(l_asset_hdr_rec.asset_id));
      apps.fnd_file.put_line(apps.fnd_file.log,
                             'ASSET_NUMBER: ' ||
                             l_asset_desc_rec.asset_number);
   
    end if;
 
  end auto_import_info_p;

测试脚本是OK的,测试数据可以顺利导入系统O(∩_∩)O

CCID的获取还有待研究...

原文地址:https://www.cnblogs.com/benio/p/1615914.html