背景:业务设置定时任务【自动开票主程序】请求调起的子请求【自动开票导入程序】全部报错,导致ra_interface_lines_all表数据堆积,后期重跑【自动开票主程序】请求无法调起的子请求【自动开票导入程序】。
【自动开票导入程序】请求异常信息:(暂未找到原因)
org parameter (raamai) = ~401~
raassc()+ 当前的系统时间为 30-10-2024 23:46:42
org parameter (raassc) character = ~401~
org parameter (raassc) numeric = ~401~
raassc()- 当前的系统时间为 30-10-2024 23:46:43
raagsp()+ 当前的系统时间为 30-10-2024 23:46:43
Autoinvoice max memory set below recommended value, defaulted to 1048576 bytes
raagsp()- 当前的系统时间为 30-10-2024 23:46:43
Dumping data fetched from RA_BATCH_SOURCES
batch_source_id = 4004
针对跑【自动开票主程序】请求无法调起的子请求【自动开票导入程序】问题处理:
将AR接口表ra_interface_lines_all的request_id、interface_status刷为空值,重新跑【自动开票主程序】即可调起子请求。
--1、查看AR接口表的处理状态
SELECT t.request_id,
t.interface_status ,
t.header_attribute1, t.header_attribute2, t.header_attribute3,
t.header_attribute_category, t.interface_line_attribute1, t.interface_line_attribute2,
t.interface_line_attribute3, t.interface_line_attribute4, t.interface_line_attribute5,
t.interface_line_attribute6, t.interface_line_attribute7, t.interface_line_attribute8,
t.interface_line_attribute9, t.interface_line_attribute10, t.interface_line_attribute11,
t.interface_line_attribute12, t.interface_line_attribute13, t.interface_line_attribute14
FROM apps.ra_interface_lines_all t
WHERE 1 = 1
AND t.org_id = 401 --业务实体ID
--AND t.request_id IS NOT NULL
AND t.interface_line_attribute1 IN ('21100031913','21100031914' )--销售订单号
;
--2、针对发票接口表无法处理的数据,更新请求ID和处理状态为空值,重跑【自动开票主程序】即可调起子请求【自动开票导入程序】
UPDATE ar.ra_interface_lines_all t
SET t.request_id = NULL,
t.interface_status = NULL
WHERE 1 = 1
AND t.org_id = 401 --业务实体ID
AND t.request_id IS NOT NULL
AND t.interface_line_attribute1 IN ('21100031859', '21100031860')--销售订单号
;
--3、执行过程进行请求监控
--3.1、根据请求查看执行的SQL
SELECT s.*
FROM fnd_concurrent_requests r,
gv$session v,
gv$sql s
WHERE r.oracle_session_id = v.audsid
AND v.sql_id = s.sql_id
AND r.request_id = 20111547 ;
--3.2、查看sql的参数
select b.NAME,
b.POSITION,
b.DATATYPE_STRING,
b.VALUE_STRING,
b.LAST_CAPTURED
from v$sql_bind_capture b
where b.sql_id = '3as1tjywgb18w';
--3.3、查看SQL的执行计划
SELECT id,
lpad(' ', 2 * (LEVEL - 1)) || operation || '' || options || ' ' ||
object_name || ' ' || decode(id, 0, 'Cost=' || cost) "QueryPlan_Table",
t.cost
FROM v$sql_plan t
START WITH id = 0
AND sql_id = '&sql_id'
CONNECT BY PRIOR id = parent_id
AND sql_id = '&sql_id';
--4、监控发现该段SQL查询较慢,
--创建客制化索引后,【自动开票导入程序】执行效率大幅度提升
-- create index CUX.CUX_RA_CUST_TRX_LINES_N3 on AR.RA_CUSTOMER_TRX_LINES_ALL (interface_line_attribute1, interface_line_attribute6);
/*INSERT INTO RA_INTERFACE_ERRORS
(INTERFACE_LINE_ID,
MESSAGE_TEXT,
INVALID_VALUE, ORG_ID)*/
SELECT /*+ ORDERED INDEX(IL) USE_NL(TL,T)
DYNAMIC_SAMPLING(IL,5) DYNAMIC_SAMPLING(TL,5) */
INTERFACE_LINE_ID,
:b_err_msg6,
'trx_number='||T.TRX_NUMBER||','||'customer_trx_id='||TL.CUSTOMER_TRX_ID,
IL.ORG_ID
FROM RA_INTERFACE_LINES_GT IL, RA_CUSTOMER_TRX_LINES TL, RA_CUSTOMER_TRX T
WHERE IL.REQUEST_ID = :b1
AND IL.INTERFACE_LINE_CONTEXT = 'ORDER ENTRY'
AND T.CUSTOMER_TRX_ID =TL.CUSTOMER_TRX_ID
AND IL.INTERFACE_LINE_CONTEXT = TL.INTERFACE_LINE_CONTEXT
AND IL.INTERFACE_LINE_ATTRIBUTE1 = TL.INTERFACE_LINE_ATTRIBUTE1
AND IL.INTERFACE_LINE_ATTRIBUTE2 = TL.INTERFACE_LINE_ATTRIBUTE2
AND IL.INTERFACE_LINE_ATTRIBUTE3 = TL.INTERFACE_LINE_ATTRIBUTE3
AND IL.INTERFACE_LINE_ATTRIBUTE4 = TL.INTERFACE_LINE_ATTRIBUTE4
AND IL.INTERFACE_LINE_ATTRIBUTE5 = TL.INTERFACE_LINE_ATTRIBUTE5
AND IL.INTERFACE_LINE_ATTRIBUTE6 = TL.INTERFACE_LINE_ATTRIBUTE6
AND IL.INTERFACE_LINE_ATTRIBUTE7 = TL.INTERFACE_LINE_ATTRIBUTE7
AND IL.INTERFACE_LINE_ATTRIBUTE8 = TL.INTERFACE_LINE_ATTRIBUTE8
AND IL.INTERFACE_LINE_ATTRIBUTE9 = TL.INTERFACE_LINE_ATTRIBUTE9
AND IL.INTERFACE_LINE_ATTRIBUTE10 = TL.INTERFACE_LINE_ATTRIBUTE10
AND IL.INTERFACE_LINE_ATTRIBUTE11 = TL.INTERFACE_LINE_ATTRIBUTE11
AND IL.INTERFACE_LINE_ATTRIBUTE12 = TL.INTERFACE_LINE_ATTRIBUTE12
AND IL.INTERFACE_LINE_ATTRIBUTE13 = TL.INTERFACE_LINE_ATTRIBUTE13
AND IL.INTERFACE_LINE_ATTRIBUTE14 = TL.INTERFACE_LINE_ATTRIBUTE14;
参考文档:
https://blog.itpub.net/312870/viewspace-157826/
根據提示可能是沒有找到條件下的數據,于是與DB進行查詢:
SQL> select count(*)
2 from apps.ra_interface_lines_all a
3 where interface_status IS NULL;
COUNT(*)
----------
159
也就是還有159行沒有Past,再加個條件:
SQL> select count(*)
2 from apps.ra_interface_lines_all a
3 where interface_status is null
4 and request_id is null;
COUNT(*)
----------
0
可能問題就是在于這里了,要成功處理數據,肯定是要聯系這兩個條件作業的,應該把這些沒有拋出的數據的 request_id欄位清理一下!
測試一筆,成功,直接update
update ra_interface_lines_all
set request_id =null
where interface_status is null;
总结一下,当应收接口失败的时候最少需要注意两点:
一、AR_CONC_PROCESS_REQUESTS记录了当前自动开票和合并客户的请求ID,如果确信系统中无运行中此两类请求,表应该为空;
二、表ra_interface_lines_all的request_id和interface_status应该对应,不对应将导致不能查询出数据;
三、要重新启动该资料的workflow,然后再运行autoinvoice
标签:主程序,id,interface,TL,AR,IL,INTERFACE,LINE,空跑 From: https://blog.csdn.net/weixin_70597203/article/details/143487911