回滚折旧API FA_DEPRN_ROLLBACK_PUB。DO_ROLLBACK在第12版中被引入。
在之前的版本中,有FADRB -回滚折旧程序,
在第12版中,这个程序不再使用,因为引入了一个新特性——自动折旧回滚。
有了这个新功能,在没有结束的账面进行折旧后,如果需要对特定资产进行额外的交易(调整、退休等),用户可以用需要的任何事务来更新这些资产。对于这些特定的资产,折旧数据会自动回滚,并可以对其执行交易。在此之后,用户可以再次运行折旧来折旧这些特定的资产。
如果不需要输入其他事务,您可以通过运行回滚折旧API手动回滚资产的折旧,该API将资产恢复到运行折旧之前的状态。这可能对测试某些设置行为很有用。
下面提供了一个示例脚本。
declare
/* 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;
l_return_status varchar2(1) := FND_API.G_FALSE;
l_mesg_count number := 0;
l_mesg varchar2(512);
begin
dbms_output.enable(1000000);
fnd_global.apps_initialize
( user_id => 2515,
resp_id => 52219,
resp_appl_id => 140
);
fa_srvr_msg.init_server_message;
l_asset_retire_rec.retirement_id :=240083;
FA_RETIREMENT_PUB.undo_retirement(
-- 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_asset_hdr_rec => l_asset_hdr_rec,
px_asset_retire_rec => l_asset_retire_rec
);
--dump messages
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('RETIREMENT_ID' || to_char(l_asset_retire_rec.retirement_id));
end if;
end;
该资产在运行折旧前已恢复到其状态。
根据回滚前的状态,API会采取适当的操作:
将从此资产/帐簿和周期计数器的FA_DEPRN_SUMMARY和FA_DEPRN_DETAIL中删除行。
如果(创建会计科目 - 资产)尚未运行或仅在草案模式下运行,即未处理折旧事件,则直接删除该事件。
如果(创建会计科目 - 资产 )程序最终模式运行,则将处理折旧事件(XLA_EVENTS。EVENT_STATUS_CODE=P)和回滚生成一个ROLLBACK_DEPRECIATION事件,以逆转之前的折旧事件。当运行转移到GL时,一个折旧日记帐条目将被发送到GL,以反转之前的条目。