问题描述
运行并发请求Transfer to GL - Assets出现凭证未生成问题,查看日志内容如下:
<< gllsys() 02-06-2020 10:55:39
SHRD0108: 从 fnd_currencies 中取回 4 记录
>> gllcnt() 02-06-2020 10:55:39
SHRD0118: 已更新表 gl_interface_control 中的 1 个记录
source name = 资产
interface source name = 资产
group id = 1673421
ledger_id = -1
LEZL0001: 找到 1 源以处理。
>> glluch() 02-06-2020 10:55:39
<< glluch() 02-06-2020 10:55:39
>> gl_import_hook_pkg.pre_module_hook() 02-06-2020 10:55:39
<< gl_import_hook_pkg.pre_module_hook() 02-06-2020 10:55:39
>> glusbe() 02-06-2020 10:55:39
<< glusbe() 02-06-2020 10:55:39
<< gllcnt() 02-06-2020 10:55:39
>> gllacc() 02-06-2020 10:55:39
<< gllacc() 02-06-2020 10:55:39
>> gllenc() 02-06-2020 10:55:39
SHRD0108: 从 gl_encumbrance_types 中取回 6 记录
<< gllenc() 02-06-2020 10:55:39
>> gllfss() 02-06-2020 10:55:39
LEZL0005: 成功地完成了建立动态SQL报表
<< gllfss() 02-06-2020 10:55:39
>> gllcje() 02-06-2020 10:55:39
>> gllalb() 02-06-2020 10:55:39
<< gllalb() 02-06-2020 10:55:39
>> glllgr() 02-06-2020 10:55:39
>> gllpst() 02-06-2020 10:55:39
SHRD0108: 从 gl_period_statuses 中取回 182 记录
<< gllpst() 02-06-2020 10:55:39
>> gllbud() 02-06-2020 10:55:39
SHRD0108: 从 GL_BUDGET_VERSIONS 中取回 1 记录
<< gllbud() 02-06-2020 10:55:39
currency = CNY
sus_flag = N
ic_flag = N
bc_flag = N
latest_opened_encumbrance_year = 2012
<< glllgr() 02-06-2020 10:55:39
SHRD0108: 从 gl_je_categories 中取回 183 记录
<< gllged() 02-06-2020 10:55:39
EP01= 1
<< gllged() 02-06-2020 10:55:39
EP01= 2
<< gllged() 02-06-2020 10:55:39
EP01= 3
<< gllged() 02-06-2020 10:55:39
EP01= 4
<< gllged() 02-06-2020 10:55:39
EP01= 5
<< gllged() 02-06-2020 10:55:39
EP01= 6
<< gllged() 02-06-2020 10:55:39
EP01= 7
<< gllged() 02-06-2020 10:55:39
EP01= 8
<< gllged() 02-06-2020 10:55:39
EP01= 9
<< gllged() 02-06-2020 10:55:39
EP01= 10
<< gllged() 02-06-2020 10:55:39
EP01= 11
<< gllged() 02-06-2020 10:55:39
<< gllged() 02-06-2020 10:55:39
.......//中间很多同样的
<< gllged() 02-06-2020 10:55:39
<< gllged() 02-06-2020 10:55:40
EP01= 16
EP01= 17
EP01= 18
EP01= 19
EP01= 20
EP01= 21
EP01= 22
EP01= 23
EP01= 24
EP01= 25
EP01= 26
EP01= 27
EP01= 28
EP01= 29
EP01= 30SHRD0079: 498 记录插入 gl_je_lines
SHRD0118: 已更新表 XLA_GLT_1673421 中的 498 个记录
SHRD0108: 从 XLA_GLT_1673421 中取回 498 记录
>> gllcsv() 02-06-2020 10:55:40
>> gllisv() 02-06-2020 10:55:40
SHRD0079: 10 记录插入 gl_je_segment_values
.......
>> gllisv() 02-06-2020 10:55:40
SHRD0079: 10 记录插入 gl_je_segment_values
>> gllisv() 02-06-2020 10:55:40
SHRD0079: 10 记录插入 gl_je_segment_values
>> gllisv() 02-06-2020 10:55:40
SHRD0079: 9 记录插入 gl_je_segment_values
<< gllcsv() 02-06-2020 10:55:40
<< gllcje() 02-06-2020 10:55:40
>> gllsec() 02-06-2020 10:55:40
<< gllsec() 02-06-2020 10:55:40
>> gllsum() 02-06-2020 10:55:40
<< gllsum() 02-06-2020 10:55:40
>> glldjc() 02-06-2020 10:55:40
LEZL0010: 删除错误je行
LEZL0011: 删除 498 错误 je 行。
LEZL0012: 全部删除的错误JE行: 498。
<< glldjc() 02-06-2020 10:55:40
>> gllchd() 02-06-2020 10:55:40
<< gllchd() 02-06-2020 10:55:40
>> gllcbh() 02-06-2020 10:55:40
<< gllcbh() 02-06-2020 10:55:40
>> gllccl_cross_currency_lines() 02-06-2020 10:55:40
<< gllccl() 02-06-2020 10:55:40
>> gllper() 02-06-2020 10:55:40
Non flex error count 30
<< gllper() 02-06-2020 10:55:40
>> gllups() 02-06-2020 10:55:40
SHRD0118: 已更新表 XLA_GLT_1673421 中的 0 个记录
SHRD0118: 已更新表 XLA_GLT_1673421 中的 0 个记录
......
SHRD0118: 已更新表 XLA_GLT_1673421 中的 2 个记录
SHRD0118: 已更新表 XLA_GLT_1673421 中的 2 个记录
<< gllups() 02-06-2020 10:55:40
>> gllref() 02-06-2020 10:55:40
SHRD0117: 把 0 记录插入 gl_import_references
<< gllref() 02-06-2020 10:55:40
>> glluch() 02-06-2020 10:55:40
<< glluch() 02-06-2020 10:55:40
>> gllseq() 02-06-2020 10:55:40
<< gllseq() 02-06-2020 10:55:40
>> glldhk() 02-06-2020 10:55:40
>> glutbe() 02-06-2020 10:55:40
<< glutbe() 02-06-2020 10:55:40
<< glldhk() 02-06-2020 10:55:40
>> gllaar() 02-06-2020 10:55:40
>> gllric() 02-06-2020 10:55:40
LEZL0014: 1 gl_interface_control 记录重置。
<< gllric() 02-06-2020 10:55:40
<< gllaar() 02-06-2020 10:55:40
SHRD0019: GLLEZL - 成功执行后退出处理。
问题分析
从日志中可以看出:
1 有错误数据,错误代码为EP01, 那些数据是很早以前的错误数据,不应该被传到总账。
2 可能是因为同一个group里有错误数据,所以整个组里的凭证数据回滚,不能传到总账
解决方法
1 打开底层调试日志
2 分析Transfer to GL - Assets的逻辑
3 将错误数据对应的xla_events的状态设置为‘X’,这样这些错误数据不会被提取出来过账。步骤如下:
a 首先先备份xla_events里的数据
CREATE TABLE XLA_EVENTS_BK_0620 AS SELECT * FROM XLA_EVENTS
b 更新xla_events状态
UPDATE xla_events
SET process_status_code = 'X'
WHERE event_id IN
(SELECT reference26 FROM apps.xla_glt_1673421 WHERE status = 'EP01');
commit;
这里的apps.xla_glt_1673420表要根据日志中的表名来确定,错误代码也要根据实际导入过程中日志的错误代码更改
4 运行Transfer to GL - Assets,凭证应该可以生成了
5 为了不影响错误数据以后按正常途径处理,将状态重新置为’P’
UPDATE xla_events
SET process_status_code = 'P'
WHERE event_id IN
(SELECT reference26 FROM apps.xla_glt_1673421 WHERE status = 'EP01');
commit;
小贴士:
接口表中的reference字段对应的含义如下:
reference25 – xla_ae_headers.entity_id
reference26 – xla_ae_lines.event_id
reference27 – xla_ae_lines.ae_heaer_id
reference28 – xla_ae_lines.ae_line_num
reference29 – xla_ae_lines.accounted_dr
reference30 – xla_ae_lines.accounted_cr