zoukankan      html  css  js  c++  java
  • 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的获取还有待研究...

  • 相关阅读:
    凯立德2015夏季3621J0P4G卡版分区地图
    红山军马场坝上地图全集
    红山军马场坝上地图全集
    “坝上”到底在哪里?
    “坝上”到底在哪里?
    他山之石:OpenGL书籍推荐
    OpenGL3:开头篇 介绍
    Windows开发:WinSDK初始化
    C++03:论类的构造函数和析构函数
    MFC:绘图基础
  • 原文地址:https://www.cnblogs.com/benio/p/1615914.html
Copyright © 2011-2022 走看看