FA 新增资产API Demo

DECLARE

  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;
  l_mesg          VARCHAR2(4000);

  l_mesg_len number;

BEGIN
  --初始化
  dbms_output.enable(10000000);

  fa_srvr_msg.init_server_message;--初始化错误信息堆栈。

  --资产基础信息
  -- desc info
  --资产编号(不传值系统会自动将asset_id赋过来)
  --l_asset_desc_rec.asset_number := 'TEST004';
  --资产说明
  l_asset_desc_rec.description := 'TEST1';--说明
  --资产关键字组合代码标识
  l_asset_desc_rec.asset_key_ccid := 102;

  --资产类别信息
  -- cat info
  --资产类别代码组合标识
  l_asset_cat_rec.category_id := 69;

  --资产类型信息
  --type info
  --资产类型
  l_asset_type_rec.asset_type := 'CAPITALIZED';--”资产化“

  --财务信息
  -- fin info
  --资产成本
  l_asset_fin_rec.cost := 1;
  --资产新增日期
  l_asset_fin_rec.date_placed_in_service := to_date('1998-03-02','YYYY/MM/DD');--启用日期

  l_asset_fin_rec.depreciate_flag := 'YES';--折旧复选框

  --折旧信息
  -- deprn info
  --折旧信息
  l_asset_deprn_rec.ytd_deprn           := 0;
  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 := 'ADB CORP';
  --分配日期
  --l_trans_rec.transaction_date_entered := l_asset_fin_rec.date_placed_in_service;
  l_trans_rec.transaction_date_entered := to_date('1998-03-02','YYYY/MM/DD');--转移日期
  -- distribution info
  --分配数量
  l_asset_dist_rec.units_assigned := 1;
  --费用账户id
  l_asset_dist_rec.expense_ccid := 17506;
  --地点组合代码标识id
  l_asset_dist_rec.location_ccid := 3;
  --员工id
  --l_asset_dist_rec.assigned_to := 61;
  --调整数量
  l_asset_dist_rec.transaction_units := l_asset_dist_rec.units_assigned;
  l_asset_dist_tbl(1) := l_asset_dist_rec;

  -- call the api
  fa_addition_pub.do_addition(
                              -- std parameters
                              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,
                              p_calling_fn       => NULL,
                              x_return_status    => l_return_status,
                              x_msg_count        => l_mesg_count,
                              x_msg_data         => l_mesg,
                              -- api parameters
                              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,
                              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);

  dbms_output.put_line(l_return_status);
  if (l_return_status <> FND_API.G_RET_STS_SUCCESS) then
    dbms_output.put_line('FAILED');
    -- dbms_output.put_line(to_char(sqlerr)); 
    dbms_output.put_line(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_count - 1) 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
        dbms_output.put_line(substr(l_mesg, ((i * 255) - 254), 255));
      end loop;
    end if;
  else
    dbms_output.put_line('SUCCESS');
    dbms_output.put_line('THID' ||
                         to_char(l_trans_rec.transaction_header_id));
    dbms_output.put_line('ASSET_ID' || to_char(l_asset_hdr_rec.asset_id));
    dbms_output.put_line('ASSET_NUMBER' || l_asset_desc_rec.asset_number);
  end if;
END;

你可能感兴趣的:(FA)