接口(实例)演示
一下为项目上ATS接口的代码结构,方面之后代码查阅。
一、数据初步准备
1.1 使用check_id初始化凭证大类
将来接口表cux.cux_gl_inter_sx_ats中attribute9进行赋值,值为E时,表明数据来自与表ats_ulic_of_pay_transactions. abstract和ats_ulic_hec_pay_transactions. Abstract相等的check_id下的数据,其它情况取A
1.2 初始化编码映射关系
对原有11i中的7个segment按照映射关系得到新和R12中的segment code
1.3 初始化历史分区
cux_gl_inter_pub.init_partition(p_period_name => p_period_name, p_inter_key => g_source_key)
以期间和来源为限定建立分区
1.4 初始化参数
若此部分出现异常,程序报错结束,
g_run_id := gl_journal_import_s.nextval
g_group_id :=gl_interface_control_s.nextval;
g_ledger_id := fnd_profile.value('GL_SET_OF_BKS_ID');
二、数据插入GL接口表
若此部分出现异常,程序报错结束
若此部分无数据进入,程序报错结束
2.1 检查数据
检查期间和期间是否打开 若此部分出现异常,程序报错结束
①检查是否有数据需要导入 若此部分出现null,程序报错结束
②检查借贷是否相等(单张凭证数据进行校验,若存在不相等的,则该凭证不进行数据插入,其它正常)若存在不相等的外围系统表中attribute8和attribute9分别录入错误信息和错误状态(FAILURE)
并未检查ledger_id
2.2 循环校验失进行映射后段值在键弹性域里是否存在
(1)出现错误的处理
通过upt_t_gl_ats_interface_detail将T_GL_ATS_INTERFACE
的attribute8,attribute9,attribute10分别update为 错误信息,失败状态标识,null;
(2)如果 check_Id下有任何record_id,出现交验错误,则整个check_Id的数据都不能插入接口表,其它正常
2.3 正式数据插入
(1)映射的变换
R12段说明 |
R12段 |
11i段 |
限定条件下 |
R12段取值 |
公司段 |
segment1 |
segment1 |
无 |
cux_old_new_map中取对应值 |
成本中心 |
segment2 |
segment3 |
null |
R12字段对应默认值 |
其它 |
cux_old_new_map中取对应值 |
|||
会计科目段 |
segment3 |
segment4 |
无 |
cux_old_new_map中取对应值 |
明细段 |
segment4 |
Segment5 |
以'B'开头 |
11i中原值 |
00000 |
R12字段对应默认值 |
|||
往来段 |
Segment5 |
无 |
无 |
R12字段对应默认值 |
现金流量段 |
Segment6 |
attribute3 |
null |
R12字段对应默认值 |
其它 |
cux_old_new_map中取对应值 |
|||
渠道段 |
Segment7 |
无 |
无 |
R12字段对应默认值 |
产品 |
Segment8 |
无 |
无 |
R12字段对应默认值 |
预算科目 |
Segment9 |
无 |
无 |
R12字段对应默认值 |
项目段 |
Segment10 |
无 |
无 |
R12字段对应默认值 |
预算中心 |
Segment11 |
segment2 |
null |
R12字段对应默认值 |
其它 |
cux_old_new_map中取对应值 |
2.4 进行回写
t_gl_ats_interface.attribute1 = l_org_id
t_gl_ats_interface.attribute10 = 'R' || l_request_id,
t_gl_ats_interface.attribute9 = c_voucher_status_imported_gli
三、对GL接口表中数据进行验证和导入日记账
数据进入GL接口表后进行校验
cux_gl_inter_pub.validate_data(x_errbuf => v_errbuf,
x_retcode => v_retcode,
p_inter_key => g_source_key,
p_group_id => l_group_id);
若此部分出现异常,更新外围系统表中attribute8 为失败 ,attribute8= nvl(cux_gl_inter_sx_ats.status_description, '因本次请求其他记录出错而置为错误'),程序报错结束,
日记账导入
cux_gl_inter_pub.journal_import(x_errbuf => v_errbuf,
x_retcode => v_retcode,
x_group_id => l_group_id,
x_run_id => g_run_id,
p_source_key => g_source_key,
p_ledger_id => g_ledger_id,
p_user_je_source_name => c_user_je_source_name,
p_autopost_flag => g_autopost_flag);
清除外围系统接口表历史表过期分区
若此部分出现异常,程序报错结束,