GL-日记账接口导入
1、使用的标准接口表
接口表:gl_interface、控制表:gl_interface_control、错误信息:gl_interface.status
2、总账标准表
gl_je_batches:日记账批表
gl_je_headers:日记账头表
gl_je_lines:日记账行表
gl_balances:科目余额表
gl_code_combinations:科目组合表
gl_je_categories:凭证分类表
gl_je_sources:凭证来源表
3、总账导入组成及导入流程
日记帐的导入包含如下的几个部分的导入:
(1)、 日记帐头信息的导入
(2)、 日记账行信息的导入
2.1、 日记帐行中借项导入
2.2、 日记帐行中贷项导入
(3)、调用标准日记帐请求
日记帐导入流程:
第一步: 获取导入日记帐的来源和类别信息
第二步:根据ou和步骤一获取到的日记帐来源获取本次日记帐导入的组id:group_id、日记帐运行的id:interface_run_id和对应ou的账套
第三步:数据验证,对需要导入的数据进行相应的验证,如:验证期间是否打开、验证币种是否为本位币等
第四步:给公用字段赋值
第五步:给借项赋值,插入接口表
第六步:给贷项赋值,插入接口表
第七步:调用日记帐请求
4、常用检验逻辑
(1)检查期间
检查期间的同时可以将对应的总账日期带出
传入的参数:o_ledger_id:账套id
p_vest_period:期间
SELECT COUNT(1)
INTO l_period_count
FROM gl_period_statuses gps
WHERE gps.application_id = 101
AND gps.ledger_id = o_ledger_id
AND gps.adjustment_period_flag = 'N'
AND trunc(start_date) <= trunc(SYSDATE)
AND trunc(end_date) >= trunc(SYSDATE)
AND gps.closing_status = 'O'
AND gps.period_name = p_vest_period;
(2)检验币种
检查传入的币种是否为当前ou的本位币,如果不是本位币需要提供汇率类型,同时我们需要根据返回出来的count数来对借项和贷项的汇率信息进行赋值。
传入的参数:o_org_id:ou
p_currency_code:币种
SELECT COUNT(1)
INTO l_currency_count
FROM hr_operating_units ou, gl_sets_of_books gsob
WHERE ou.set_of_books_id = gsob.set_of_books_id
AND ou.organization_id = o_org_id
AND gsob.currency_code = p_currency_code;
5、调用的Interface
(1)日记账请求
l_request_id := fnd_request.submit_request
('SQLGL',
'GLLEZL',
'',
to_char(SYSDATE,'YYYY/MM/DD HH24:MI:SS'),
FALSE,
to_char(p_interface_run_id),
to_char(p_set_of_books_id),
'N',
NULL,
NULL,
'N',
'O', --是否导入弹性域字段,三种方式 N(不导入),W(验证导入WITH VALIDATE),O(不验证WITHOUT VALIDATE)
chr(0));
(2)等待请求完成
调用导入日记账的请求后,我们需要等待日记账请求完成,然后根据日记账请求的完成状态来更新对应的数据表的导入状态和回写相应的字段
l_bl_result := fnd_concurrent.wait_for_request(l_request_id, --等待的请求
1, --间隔时间
0, --等待时间
v_phase,
v_status,
v_dev_phase,
v_dev_status,
v_message);
--请求的状态为完成并且为正常
IF v_dev_phase <> 'COMPLETE' OR v_dev_status <> 'NORMAL' THEN
o_return_status := fnd_api.g_ret_sts_error;
o_msg_data := '日记账请求出错';
END IF;