|
|

楼主 |
发表于 2013/8/12 09:30:10
|
显示全部楼层
本帖最后由 jojoz 于 2013/9/2 09:59 编辑
第二篇 固定资产
一、资产新增API
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_inv_rec FA_API_TYPES.inv_rec_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');
dbms_output.enable(10000000);
FA_SRVR_MSG.Init_Server_Message;
FA_DEBUG_PKG.Initialize;
--资产描述信息
l_asset_desc_rec.description := '电脑';
l_asset_desc_rec.tag_number := 'BZ20120223003';
l_asset_desc_rec.asset_key_ccid := 1001;--2;
l_asset_cat_rec.category_id := 1001;
l_asset_type_rec.asset_type := 'CAPITALIZED';
--l_asset_desc_rec.asset_number :=
--l_asset_desc_rec.property_type_code :=
--l_asset_desc_rec.property_1245_1250_code :=
--l_asset_desc_rec.in_use_flag :=
--l_asset_desc_rec.owned_leased :=
--l_asset_desc_rec.new_used :=
--l_asset_desc_rec.inventorial :=
--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 :=
--资产发票信息
/*
-- invoice info
-- l_inv_rec.fixed_assets_cost := 2500;
-- l_inv_rec.deleted_flag := 'NO';
l_inv_rec.description := l_asset_desc_rec.description;
-- l_inv_rec.unrevalued_cost := 5555;
-- l_inv_rec.create_batch_id := 1000;
--l_inv_rec.payables_code_combination_id := 13528;
l_inv_rec.feeder_system_name := 'BZ';
-- l_inv_rec.payables_cost := 5555;
l_inv_rec.payables_units := 1;
l_inv_rec.po_vendor_id := 1;
--l_inv_rec.inv_indicator := 1;*/
l_inv_tbl(1) := l_inv_rec;
--发票汇率信息
/* l_inv_rate_tbl(1).set_of_books_id := 658; -- first reporting book
l_inv_rate_tbl(1).exchange_rate := .532;
l_inv_rate_tbl(2).inv_indicator := 1;
l_inv_rate_tbl(2).set_of_books_id := 659; -- second reporting book
l_inv_rate_tbl(2).exchange_rate := .233;*/
--资产财务信息
l_asset_fin_rec.date_placed_in_service := to_date('2012-01-31','yyyy-mm-dd');--'DPIS';
l_asset_fin_rec.depreciate_flag := 'YES';
l_asset_fin_rec.cost := 6000;
--资产折旧信息
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;
--资产转移信息
l_asset_hdr_rec.book_type_code := 'ZZ_FA_BOOK';--'book';
l_trans_rec.transaction_date_entered := l_asset_fin_rec.date_placed_in_service;
l_trans_rec.who_info.last_updated_by := 1130;--FND_GLOBAL.USER_ID;
/* distribution info */
-- l_asset_dist_tbl := fa_API_TYPES.asset_dist_tbl_type (null);
l_asset_dist_rec.units_assigned := 1;
l_asset_dist_rec.expense_ccid := 20005;--12975;
l_asset_dist_rec.location_ccid := 6001;--2;
l_asset_dist_rec.assigned_to := null;--81
l_asset_dist_rec.transaction_units := l_asset_dist_rec.units_assigned;
l_asset_dist_tbl(1) := l_asset_dist_rec;
--调用API
fa_addition_pub .do_addition(1.0,
FND_API.G_FALSE,
FND_API.G_FALSE,
FND_API.G_VALID_LEVEL_FULL,
l_return_status,
l_mesg_count,
l_mesg,
null,
--
l_trans_rec,
l_dist_trans_rec,
--
l_asset_hdr_rec,
l_asset_desc_rec,
l_asset_type_rec,
l_asset_cat_rec,
l_asset_hierarchy_rec,
l_asset_fin_rec,
l_asset_deprn_rec,
l_asset_dist_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;
/
二、资产描述信息调整
declare
l_count NUMBER;
l_return_status varchar2(100);
l_msg_count number := 0;
l_msg_data varchar2(4000);
l_request_id number;
reclass_err EXCEPTION;
i number := 0;
l_api_version CONSTANT number := 1.0;
l_msg_list VARCHAR2(5) := FND_API.G_FALSE;
l_commit_flag VARCHAR2(5) := FND_API.G_FALSE;
l_validation_level VARCHAR2(5) := FND_API.G_VALID_LEVEL_FULL;
l_debug_flag VARCHAR2(5) := FND_API.G_FALSE;
l_calling_fn VARCHAR2(50) := 'Update Asset Desc Script';
l_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_type_rec FA_API_TYPES.asset_type_rec_type;
l_asset_cat_rec FA_API_TYPES.asset_cat_rec_type;
l_asset_id number(15) := 64;
l_description varchar2(30) := substr('Description', 1, 30);
l_serial_number varchar2(10) := substr('Serial_number', 1, 10);
l_category_id number(15);
l_transaction_type_code varchar2(20) := null;
l_transaction_date_entered date := null;
l_temp_str varchar2(640);
begin
--初始化
fnd_profile.put('PRINT_DEBUG', 'Y');
dbms_output.enable(10000000);
FA_SRVR_MSG.Init_Server_Message;
FA_DEBUG_PKG.Initialize;
l_trans_rec.who_info.last_updated_by := 1001;
l_trans_rec.who_info.last_update_login := 1001;
l_trans_rec.who_info.last_update_date := sysdate;
l_trans_rec.who_info.creation_date := l_trans_rec.who_info.last_update_date;
l_trans_rec.who_info.created_by := l_trans_rec.who_info.last_updated_by;
l_asset_hdr_rec.asset_id := 64;
l_asset_desc_rec.description := l_description;
l_asset_desc_rec.serial_number := l_serial_number;
l_asset_cat_rec.desc_flex.attribute1 := 'Test Thru API';
l_asset_cat_rec.desc_flex.attribute2 := 'Test2 Thru API';
l_return_status := null;
dbms_output.put_line('calling FA_ASSET_DESC_PUB.update_desc');
FA_ASSET_DESC_PUB.update_desc(
-- std parameters
p_api_version => l_api_version,
p_init_msg_list => l_msg_list,
p_commit => l_commit_flag,
p_validation_level => l_validation_level,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
p_calling_fn => l_calling_fn,
px_trans_rec => l_trans_rec,
px_asset_hdr_rec => l_asset_hdr_rec,
px_asset_desc_rec_new => l_asset_desc_rec,
px_asset_cat_rec_new => l_asset_cat_rec);
-- rollback;
dbms_output.put_line('l_return_status ' || l_return_status);
if l_return_status = 'E' then
l_msg_count := fnd_msg_pub.count_msg;
if (l_msg_count > 0) then
dbms_output.put_line('l_msg_count ' || to_char(l_msg_count));
l_temp_str := substr(fnd_msg_pub.get(fnd_msg_pub.G_FIRST,
fnd_api.G_FALSE),
1,
230);
dbms_output.put_line(l_temp_str);
l_temp_str := null;
for I in 1 .. (l_msg_count - 1) loop
l_temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
dbms_output.put_line(l_temp_str);
end loop;
else
dbms_output.put_line('dump: NO MESSAGE !');
end if;
return;
end if;
fa_srvr_msg.add_message(calling_fn => 'reclass.sql',
name => 'FA_SHARED_END_SUCCESS',
token1 => 'PROGRAM',
value1 => 'FA_ASSET_DESC_PUB.update_desc');
exception
when reclass_err then
ROLLBACK WORK;
fa_srvr_msg.add_message(calling_fn => 'reclass.sql',
name => 'FA_SHARED_PROGRAM_FAILED',
token1 => 'PROGRAM',
value1 => 'FA_ASSET_DESC_PUB.update_desc');
l_msg_count := fnd_msg_pub.count_msg;
if (l_msg_count > 0) then
l_temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || l_temp_str);
for I in 1 .. (l_msg_count - 1) loop
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || l_temp_str);
end loop;
else
dbms_output.put_line('dump: NO MESSAGE !');
end if;
when others then
rollback work;
fa_srvr_msg.add_sql_error(calling_fn => 'fa_asset_desc_pub..update_desc');
raise FND_API.G_EXC_UNEXPECTED_ERROR;
end;
/
三、资产交易信息及财务信息调整
declare
l_trans_rec FA_API_TYPES.trans_rec_type;
l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
l_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type;
l_asset_fin_rec_new FA_API_TYPES.asset_fin_rec_type;
l_asset_fin_mrc_tbl_new FA_API_TYPES.asset_fin_tbl_type;
l_inv_trans_rec FA_API_TYPES.inv_trans_rec_type;
l_inv_tbl FA_API_TYPES.inv_tbl_type;
l_inv_rate_tbl FA_API_TYPES.inv_rate_tbl_type;
l_asset_deprn_rec_adj FA_API_TYPES.asset_deprn_rec_type;
l_asset_deprn_rec_new FA_API_TYPES.asset_deprn_rec_type;
l_asset_deprn_mrc_tbl_new FA_API_TYPES.asset_deprn_tbl_type;
l_inv_rec FA_API_TYPES.inv_rec_type;
l_group_reclass_options_rec FA_API_TYPES.group_reclass_options_rec_type;
l_return_status VARCHAR2(1);
l_mesg_count number := 0;
l_mesg_len number;
l_mesg varchar2(512);
begin
--初始化
fnd_profile.put('PRINT_DEBUG', 'Y');
dbms_output.enable(10000000);
FA_SRVR_MSG.Init_Server_Message;
FA_DEBUG_PKG.Initialize;
l_asset_hdr_rec.asset_id := 64;--asset_id;
l_asset_hdr_rec.book_type_code := 'ZZ_FA_BOOK';
-- invoice trans
l_inv_trans_rec.transaction_type := 'INVOICE ADDITION';
-- invoice info
l_inv_rec.fixed_assets_cost := 3000;
l_inv_rec.DELETED_FLAG := 'NO';
l_inv_rec.description := 'TEST NIV';
l_inv_rec.unrevalued_cost := 0;
l_inv_rec.create_batch_id := 1000;
--l_inv_rec.payables_code_combination_id := 13528;
l_inv_rec.payables_cost := 2500;
l_inv_rec.payables_units := 1;
l_inv_rec.inv_indicator := 1;
-- rate info for mrc
/* l_inv_rate_tbl(1).inv_indicator := 1;
l_inv_rate_tbl(1).set_of_books_id := 425;
l_inv_rate_tbl(1).exchange_rate := 50;*/
-- set up the invoice table
l_inv_tbl(1) := l_inv_rec;
FA_ADJUSTMENT_PUB.do_adjustment(1.0,
FND_API.G_FALSE,
FND_API.G_FALSE,
FND_API.G_VALID_LEVEL_FULL,
null,
l_return_status,
l_mesg_count,
l_mesg,
l_trans_rec,
l_asset_hdr_rec,
l_asset_fin_rec_adj,
l_asset_fin_rec_new,
l_asset_fin_mrc_tbl_new,
l_inv_trans_rec,
l_inv_tbl,
l_asset_deprn_rec_adj,
l_asset_deprn_rec_new,
l_asset_deprn_mrc_tbl_new,
l_group_reclass_options_rec);
dbms_output.put_line(l_return_status);
if (l_return_status <> FND_API.G_RET_STS_SUCCESS) then
fa_debug_pkg.dump_debug_messages(max_mesgs => 0);
l_mesg_count := fnd_msg_pub.count_msg;
if l_mesg_count > 0 then
l_mesg := substr(fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE),
1,
512);
dbms_output.put_line(substr(l_mesg, 1, 255));
for i in 1 .. l_mesg_count - 1 loop
l_mesg := substr(fnd_msg_pub.get(fnd_msg_pub.G_NEXT,
fnd_api.G_FALSE),
1,
512);
dbms_output.put_line(substr(l_mesg, 1, 255));
end loop;
fnd_msg_pub.delete_msg();
end if;
else
dbms_output.put_line('SUCCESS');
dbms_output.put_line('THID' ||
to_char(l_trans_rec.transaction_header_id));
end if;
end;
/
三、资产删除(限刚创建,无折旧,无报废等资产)
declare
l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
l_return_status VARCHAR2(1);
l_mesg_count number := 0;
l_mesg_len number;
l_mesg varchar2(4000);
begin
dbms_output.enable(1000000);
FA_SRVR_MSG.Init_Server_Message;
-- asset header info
l_asset_hdr_rec.asset_id := 64
l_asset_hdr_rec.book_type_code := 'ZZ_FA_BOOK';
FA_DELETION_PUB.do_delete
(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,
x_return_status => l_return_status,
x_msg_count => l_mesg_count,
x_msg_data => l_mesg,
p_calling_fn => null,
px_asset_hdr_rec => l_asset_hdr_rec
);
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, 250);
dbms_output.put_line(l_mesg);
for i in 1..(l_mesg_count - 1) loop
l_mesg :=
substr(fnd_msg_pub.get
(fnd_msg_pub.G_NEXT,
fnd_api.G_FALSE), 1, 250);
dbms_output.put_line(l_mesg);
end loop;
fnd_msg_pub.delete_msg();
end if;
if (l_return_status <> FND_API.G_RET_STS_SUCCESS) then
dbms_output.put_line('FAILURE');
else
dbms_output.put_line('SUCCESS');
dbms_output.put_line('ASSET_ID' || to_char(l_asset_hdr_rec.asset_id));
dbms_output.put_line('BOOK: ' || l_asset_hdr_rec.book_type_code);
end if;
end;
/
四、资产分配
declare
l_return_status varchar2(1);
l_msg_count number := 0;
l_msg_data varchar2(4000);
l_trans_rec fa_api_types.trans_rec_type;
l_asset_hdr_rec fa_api_types.asset_hdr_rec_type;
l_asset_dist_tbl fa_api_types.asset_dist_tbl_type;
temp_str varchar2(512);
begin
fnd_profile.put('PRINT_DEBUG', 'Y');
dbms_output.enable(1000000);
fa_srvr_msg.init_server_message;
fa_debug_pkg.initialize;
-- fill in asset information
l_asset_hdr_rec.asset_id := 49;
l_asset_hdr_rec.book_type_code := 'ZZ_FA_BOOK';
-- transaction date must be filled in if performing
-- prior period transfer
--l_trans_rec.transaction_date_entered := to_date('01-JAN-1999 10:54:22', 'dd-mon-yyyy hh24:mi:ss');
l_asset_dist_tbl.delete;
/*
fill in distribution data for existing distribution lines
affected by this transfer txn. Note: You need to fill in
only affected distribution lines.
For source distribution, you must fill in either existing
distribution id or 2 columns(expense_ccid,location_ccid) or
3-tuple columns(assigned_to,expense_ccid,and location_ccid)
depending on the makeup of the particular distribution
of the asset.
*/
l_asset_dist_tbl(1).distribution_id := 2007;
l_asset_dist_tbl(1).transaction_units := -1;
/*
either above 2 lines or below 4 lines must be provided
for source distribution:
l_asset_dist_tbl(1).transaction_units := -2;
l_asset_dist_tbl(1).assigned_to := 11;
l_asset_dist_tbl(1).expense_ccid :=15338;
l_asset_dist_tbl(1).location_ccid := 3; */
-- fill in dist info for destination distribution
l_asset_dist_tbl(2).transaction_units := 1;
l_asset_dist_tbl(2).assigned_to := 81;
l_asset_dist_tbl(2).expense_ccid := 1013;--15338;
l_asset_dist_tbl(2).location_ccid := 1;--3;
l_trans_rec.who_info.last_updated_by := 1130;--FND_GLOBAL.USER_ID;
l_trans_rec.who_info.last_update_login := 10001;--FND_GLOBAL.LOGIN_ID;
FA_TRANSFER_PUB .do_transfer(1.0,
FND_API.G_FALSE,
FND_API.G_FALSE,
FND_API.G_VALID_LEVEL_FULL,
NULL,
l_return_status,
l_msg_count,
l_msg_data,
l_trans_rec,
l_asset_hdr_rec,
l_asset_dist_tbl);
if (l_return_status != FND_API.G_RET_STS_SUCCESS) then
dbms_output.put_line('TRANSFER failed!.');
l_msg_count := fnd_msg_pub.count_msg;
if (l_msg_count > 0) then
temp_str := substr(fnd_msg_pub.get(fnd_msg_pub.G_FIRST,
fnd_api.G_FALSE),
1,
512);
dbms_output.put_line('Error: ' || temp_str);
for I in 1 .. (l_msg_count - 1) loop
temp_str := substr(fnd_msg_pub.get(fnd_msg_pub.G_NEXT,
fnd_api.G_FALSE),
1,
512);
dbms_output.put_line('Error: ' || temp_str);
end loop;
end if;
else
dbms_output.put_line('TRANSFER completed successfully!');
dbms_output.put_line('THID = ' ||
to_char(l_trans_rec.transaction_header_id));
end if;
fnd_msg_pub.delete_msg();
end;
/
五、资产报废
declare
api_error EXCEPTION;
/* Test asset info */
l_asset_id number;
l_book_type_code varchar2(15) := 'ZZ_FA_BOOK';
l_user_id number := 1130; -- USER_ID must properly be set to run calc gain/loss
--/ define local record types /
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_retire_rec FA_API_TYPES.asset_retire_rec_type;
l_asset_dist_tbl FA_API_TYPES.asset_dist_tbl_type;
l_subcomp_tbl FA_API_TYPES.subcomp_tbl_type;
l_inv_tbl FA_API_TYPES.inv_tbl_type;
--/ misc info /
l_api_version number := 1;
l_init_msg_list varchar2(1) := FND_API.G_FALSE;
l_commit varchar2(1) := FND_API.G_FALSE;
l_validation_level number := FND_API.G_VALID_LEVEL_FULL;
l_calling_fn varchar2(80) := 'Retirement test wrapper';
l_return_status varchar2(1) := FND_API.G_FALSE;
l_msg_count number := 0;
l_msg_data varchar2(512);
l_count number;
l_request_id number;
i number := 0;
temp_str varchar2(512);
mesg_count number;
begin
dbms_output.disable;
dbms_output.enable(1000000);
dbms_output.put_line('begin');
fa_srvr_msg.init_server_message;
fa_debug_pkg.set_debug_flag(debug_flag => 'YES');
-- Get standard who info
l_request_id := fnd_global.conc_request_id;
l_asset_id := 100014573;
--A530000000104
l_trans_rec.who_info.last_updated_by := 1130;
l_trans_rec.who_info.last_update_login := -1;
l_trans_rec.who_info.last_update_date := sysdate;
l_trans_rec.who_info.creation_date := l_trans_rec.who_info.last_update_date;
l_trans_rec.who_info.created_by := l_trans_rec.who_info.last_updated_by;
l_trans_rec.transaction_type_code := NULL; -- this will be determined inside API
l_trans_rec.transaction_date_entered := NULL;
l_asset_hdr_rec.asset_id := l_asset_id;
l_asset_hdr_rec.book_type_code := l_book_type_code;
l_asset_hdr_rec.period_of_addition := NULL;
l_asset_retire_rec.retirement_prorate_convention := null;--'STL';
l_asset_retire_rec.date_retired := null; -- will be current period by default
l_asset_retire_rec.units_retired := 1;
l_asset_retire_rec.cost_retired := 6266806.97;
-- l_asset_retire_rec.proceeds_of_sale := 0;
-- l_asset_retire_rec.cost_of_removal := 0;
-- l_asset_retire_rec.retirement_type_code := 'SALE';
l_asset_retire_rec.trade_in_asset_id := NULL;
l_asset_retire_rec.calculate_gain_loss := FND_API.G_true;--特别注意,如果此处为TRUE,则资产只能进行重建,如果FALSE,则报废可以进行UNDO操作
fnd_profile.put('USER_ID', l_user_id);
l_asset_dist_tbl.delete;
--l_asset_dist_tbl(1).distribution_id := 4003;
FA_RETIREMENT_PUB.do_retirement(p_api_version => l_api_version,
p_init_msg_list => l_init_msg_list,
p_commit => l_commit,
p_validation_level => l_validation_level,
p_calling_fn => l_calling_fn,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
px_trans_rec => l_trans_rec,
px_dist_trans_rec => l_dist_trans_rec,
px_asset_hdr_rec => l_asset_hdr_rec,
px_asset_retire_rec => l_asset_retire_rec,
p_asset_dist_tbl => l_asset_dist_tbl,
p_subcomp_tbl => l_subcomp_tbl,
p_inv_tbl => l_inv_tbl);
if l_return_status = FND_API.G_FALSE then
raise api_error;
end if;
dbms_output.put_line('test wrapper: retirement_id: ' ||
l_asset_retire_rec.retirement_id);
--commit;
-- Dump Debug messages when run in debug mode to log file
if (fa_debug_pkg.print_debug) then
fa_debug_pkg.Write_Debug_Log;
end if;
fa_srvr_msg.add_message(calling_fn => l_calling_fn,
name => 'FA_SHARED_END_SUCCESS',
token1 => 'PROGRAM',
value1 => 'RETIREMENT_API');
mesg_count := fnd_msg_pub.count_msg;
if (mesg_count > 0) then
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
for I in 1 .. (mesg_count - 1) loop
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
end loop;
else
dbms_output.put_line('dump: NO MESSAGE !');
end if;
exception
when api_error then
ROLLBACK WORK;
fa_srvr_msg.add_message(calling_fn => l_calling_fn,
name => 'FA_SHARED_PROGRAM_FAILED',
token1 => 'PROGRAM',
value1 => l_calling_fn);
mesg_count := fnd_msg_pub.count_msg;
if (mesg_count > 0) then
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
for I in 1 .. (mesg_count - 1) loop
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
end loop;
else
dbms_output.put_line('dump: NO MESSAGE !');
end if;
end;
/
六、撤消资产报废(只能撤消未进行“计算损益”的报废)
declare
api_error EXCEPTION;
l_retirement_id number := 2013;
--l_asset_id number := 101027;
--l_book_type_code varchar2(15) := 'ZBOOK';
l_user_id number := 1130; -- USER_ID must properly be set to run calc gain/loss
--/ define local record types /
l_trans_rec FA_API_TYPES.trans_rec_type;
l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
l_asset_retire_rec FA_API_TYPES.asset_retire_rec_type;
l_asset_dist_tbl FA_API_TYPES.asset_dist_tbl_type;
l_subcomp_tbl FA_API_TYPES.subcomp_tbl_type;
l_inv_tbl FA_API_TYPES.inv_tbl_type;
-- / misc info /
l_api_version number := 1;
l_init_msg_list varchar2(1) := FND_API.G_FALSE;
l_commit varchar2(1) := FND_API.G_TRUE;
l_validation_level number := FND_API.G_VALID_LEVEL_FULL;
l_calling_fn varchar2(80) := 'Retirement test wrapper';
l_return_status varchar2(1) := FND_API.G_FALSE;
l_msg_count number := 0;
l_msg_data varchar2(512);
l_count number;
l_request_id number;
i number := 0;
temp_str varchar2(512);
mesg_count number;
begin
dbms_output.disable;
dbms_output.enable(1000000);
dbms_output.put_line('begin');
fa_srvr_msg.init_server_message;
fa_debug_pkg.set_debug_flag(debug_flag => 'YES');
-- Get standard who info
l_request_id := fnd_global.conc_request_id;
l_trans_rec.who_info.last_updated_by := -1;
l_trans_rec.who_info.last_update_login := -1;
l_trans_rec.who_info.last_update_date := sysdate;
l_trans_rec.who_info.creation_date := l_trans_rec.who_info.last_update_date;
l_trans_rec.who_info.created_by := l_trans_rec.who_info.last_updated_by;
l_trans_rec.transaction_type_code := NULL; -- this will be determined inside API
l_trans_rec.transaction_date_entered := NULL;
-- l_asset_hdr_rec.asset_id := l_asset_id;
-- l_asset_hdr_rec.book_type_code := l_book_type_code;
-- l_asset_hdr_rec.period_of_addition := NULL;
l_asset_retire_rec.retirement_id := l_retirement_id;
fnd_profile.put('USER_ID', l_user_id);
FA_RETIREMENT_PUB.undo_retirement(p_api_version => l_api_version,
p_init_msg_list => l_init_msg_list,
p_commit => l_commit,
p_validation_level => l_validation_level,
p_calling_fn => l_calling_fn,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data
,
px_trans_rec => l_trans_rec,
px_asset_hdr_rec => l_asset_hdr_rec,
px_asset_retire_rec => l_asset_retire_rec);
if l_return_status = FND_API.G_FALSE then
raise api_error;
end if;
commit;
-- Dump Debug messages when run in debug mode to log file
if (fa_debug_pkg.print_debug) then
fa_debug_pkg.Write_Debug_Log;
end if;
fa_srvr_msg.add_message(calling_fn => l_calling_fn,
name => 'FA_SHARED_END_SUCCESS',
token1 => 'PROGRAM',
value1 => 'RETIREMENT_API');
mesg_count := fnd_msg_pub.count_msg;
if (mesg_count > 0) then
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
for I in 1 .. (mesg_count - 1) loop
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
end loop;
else
dbms_output.put_line('dump: NO MESSAGE !');
end if;
exception
when api_error then
ROLLBACK WORK;
fa_srvr_msg.add_message(calling_fn => l_calling_fn,
name => 'FA_SHARED_PROGRAM_FAILED',
token1 => 'PROGRAM',
value1 => l_calling_fn);
mesg_count := fnd_msg_pub.count_msg;
if (mesg_count > 0) then
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
for I in 1 .. (mesg_count - 1) loop
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
end loop;
else
dbms_output.put_line('dump: NO MESSAGE !');
end if;
end;
/
七、报废资产重建
declare
api_error EXCEPTION;
--/ Test asset info /
l_retirement_id number := 2012;
--l_asset_id number := 100837;
--l_book_type_code varchar2(15) := 'ZBOOK1';
l_user_id number := 1130; -- USER_ID must properly be set to run calc gain/loss
--/ define local record types /
l_trans_rec FA_API_TYPES.trans_rec_type;
l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
l_asset_retire_rec FA_API_TYPES.asset_retire_rec_type;
l_asset_dist_tbl FA_API_TYPES.asset_dist_tbl_type;
l_subcomp_tbl FA_API_TYPES.subcomp_tbl_type;
l_inv_tbl FA_API_TYPES.inv_tbl_type;
--/ misc info /
l_api_version number := 1;
l_init_msg_list varchar2(1) := FND_API.G_FALSE;
l_commit varchar2(1) := FND_API.G_false;
l_validation_level number := FND_API.G_VALID_LEVEL_FULL;
l_calling_fn varchar2(80) := 'Retirement test wrapper';
l_return_status varchar2(1) := FND_API.G_FALSE;
l_msg_count number := 0;
l_msg_data varchar2(512);
l_count number;
l_request_id number;
i number := 0;
temp_str varchar2(512);
mesg_count number;
begin
dbms_output.disable;
dbms_output.enable(1000000);
dbms_output.put_line('begin');
fa_srvr_msg.init_server_message;
fa_debug_pkg.set_debug_flag(debug_flag => 'YES');
-- Get standard who info
l_request_id := fnd_global.conc_request_id;
l_trans_rec.who_info.last_updated_by := -1;
l_trans_rec.who_info.last_update_login := -1;
l_trans_rec.who_info.last_update_date := sysdate;
l_trans_rec.who_info.creation_date := l_trans_rec.who_info.last_update_date;
l_trans_rec.who_info.created_by := l_trans_rec.who_info.last_updated_by;
l_trans_rec.transaction_type_code := NULL; -- this will be determined inside API
l_trans_rec.transaction_date_entered := NULL;
--l_asset_hdr_rec.asset_id := l_asset_id;
--l_asset_hdr_rec.book_type_code := l_book_type_code;
--l_asset_hdr_rec.period_of_addition := NULL;
--l_asset_retire_rec.date_retired := NULL; -- will be current period by default
--l_asset_retire_rec.units_retired := NULL;
l_asset_retire_rec.calculate_gain_loss := FND_API.G_TRUE;--特别注意,如果此处为TRUE,则资产只能进行重新报废,如果FALSE,则重建可以进行UNDO操作
l_asset_retire_rec.retirement_id := l_retirement_id;
fnd_profile.put('USER_ID', l_user_id);
l_asset_dist_tbl.delete;
--l_asset_dist_tbl(1).distribution_id := 975;
--l_asset_dist_tbl(1).transaction_units := -1;
--l_asset_dist_tbl(1).units_assigned := null;
--l_asset_dist_tbl(1).assigned_to := null;
--l_asset_dist_tbl(1).expense_ccid := null;
--l_asset_dist_tbl(1).location_ccid := null;
FA_RETIREMENT_PUB.do_reinstatement(p_api_version => l_api_version,
p_init_msg_list => l_init_msg_list,
p_commit => l_commit,
p_validation_level => l_validation_level,
p_calling_fn => l_calling_fn,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data
,
px_trans_rec => l_trans_rec,
px_asset_hdr_rec => l_asset_hdr_rec,
px_asset_retire_rec => l_asset_retire_rec,
p_asset_dist_tbl => l_asset_dist_tbl,
p_subcomp_tbl => l_subcomp_tbl,
p_inv_tbl => l_inv_tbl);
if l_return_status = FND_API.G_FALSE then
raise api_error;
end if;
commit;
-- Dump Debug messages when run in debug mode to log file
if (fa_debug_pkg.print_debug) then
fa_debug_pkg.Write_Debug_Log;
end if;
fa_srvr_msg.add_message(calling_fn => l_calling_fn,
name => 'FA_SHARED_END_SUCCESS',
token1 => 'PROGRAM',
value1 => 'RETIREMENT_API');
mesg_count := fnd_msg_pub.count_msg;
if (mesg_count > 0) then
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
for I in 1 .. (mesg_count - 1) loop
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
end loop;
else
dbms_output.put_line('dump: NO MESSAGE !');
end if;
exception
when api_error then
ROLLBACK WORK;
fa_srvr_msg.add_message(calling_fn => l_calling_fn,
name => 'FA_SHARED_PROGRAM_FAILED',
token1 => 'PROGRAM',
value1 => l_calling_fn);
mesg_count := fnd_msg_pub.count_msg;
if (mesg_count > 0) then
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
for I in 1 .. (mesg_count - 1) loop
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
end loop;
else
dbms_output.put_line('dump: NO MESSAGE !');
end if;
end;
/
八、撤消资产重建(限于未进行“计算损益”的重建资产)
declare
api_error EXCEPTION;
/* Test asset info */
l_retirement_id number := 2011;
--l_asset_id number := 100837;
--l_book_type_code varchar2(15) := 'ZBOOK1';
l_user_id number := 1001; -- USER_ID must properly be set to run calc gain/loss
/* define local record types */
l_trans_rec FA_API_TYPES.trans_rec_type;
l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
l_asset_retire_rec FA_API_TYPES.asset_retire_rec_type;
l_asset_dist_tbl FA_API_TYPES.asset_dist_tbl_type;
l_subcomp_tbl FA_API_TYPES.subcomp_tbl_type;
l_inv_tbl FA_API_TYPES.inv_tbl_type;
/* misc info */
l_api_version number := 1;
l_init_msg_list varchar2(1) := FND_API.G_FALSE;
l_commit varchar2(1) := FND_API.G_TRUE;
l_validation_level number := FND_API.G_VALID_LEVEL_FULL;
l_calling_fn varchar2(80) := 'Retirement test wrapper';
l_return_status varchar2(1) := FND_API.G_FALSE;
l_msg_count number := 0;
l_msg_data varchar2(512);
l_count number;
l_request_id number;
i number := 0;
temp_str varchar2(512);
mesg_count number;
begin
dbms_output.disable;
dbms_output.enable(1000000);
dbms_output.put_line('begin');
fa_srvr_msg.init_server_message;
fa_debug_pkg.set_debug_flag(debug_flag => 'YES');
-- Set rollback segment if profile option is set
/*
fnd_profile.get('FA_LARGE_ROLLBACK_SEGMENT', rbs_name);
IF (rbs_name is not NULL) THEN
sql_stmt := 'SET TRANSACTION USE ROLLBACK SEGMENT ' || rbs_name;
execute immediate sql_stmt;
END IF;
*/
-- Get standard who info
l_request_id := fnd_global.conc_request_id;
l_trans_rec.who_info.last_updated_by := -1;
l_trans_rec.who_info.last_update_login := -1;
l_trans_rec.who_info.last_update_date := sysdate;
l_trans_rec.who_info.creation_date := l_trans_rec.who_info.last_update_date;
l_trans_rec.who_info.created_by := l_trans_rec.who_info.last_updated_by;
l_trans_rec.transaction_type_code := NULL; -- this will be determined inside API
l_trans_rec.transaction_date_entered := NULL;
-- l_asset_hdr_rec.asset_id := l_asset_id;
-- l_asset_hdr_rec.book_type_code := l_book_type_code;
-- l_asset_hdr_rec.period_of_addition := NULL;
l_asset_retire_rec.retirement_id := l_retirement_id;
fnd_profile.put('USER_ID', l_user_id);
FA_RETIREMENT_PUB.undo_reinstatement(p_api_version => l_api_version,
p_init_msg_list => l_init_msg_list,
p_commit => l_commit,
p_validation_level => l_validation_level,
p_calling_fn => l_calling_fn,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
px_trans_rec => l_trans_rec,
px_asset_hdr_rec => l_asset_hdr_rec,
px_asset_retire_rec => l_asset_retire_rec);
if l_return_status = FND_API.G_FALSE then
raise api_error;
end if;
commit;
-- Dump Debug messages when run in debug mode to log file
if (fa_debug_pkg.print_debug) then
fa_debug_pkg.Write_Debug_Log;
end if;
fa_srvr_msg.add_message(calling_fn => l_calling_fn,
name => 'FA_SHARED_END_SUCCESS',
token1 => 'PROGRAM',
value1 => 'RETIREMENT_API');
mesg_count := fnd_msg_pub.count_msg;
if (mesg_count > 0) then
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
for I in 1 .. (mesg_count - 1) loop
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
end loop;
else
dbms_output.put_line('dump: NO MESSAGE !');
end if;
exception
when api_error then
ROLLBACK WORK;
fa_srvr_msg.add_message(calling_fn => l_calling_fn,
name => 'FA_SHARED_PROGRAM_FAILED',
token1 => 'PROGRAM',
value1 => l_calling_fn);
mesg_count := fnd_msg_pub.count_msg;
if (mesg_count > 0) then
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
for I in 1 .. (mesg_count - 1) loop
temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
dbms_output.put_line('dump: ' || temp_str);
end loop;
else
dbms_output.put_line('dump: NO MESSAGE !');
end if;
end;
/
|
|