Oracle EBS Create Accounting for Third Party Merge"部分合并"(PARTIAL_MERGE)会计事件产生的来源
Oracle EBS版本:R12.1.3
之前一篇文章"Oracle EBS AR关闭会计期间例外提示:APP-AR-294571: XXX-XXX 因一些未处理的会计事件或未传送的日记帐分录而无法关闭"提到需要提交请求“Create Accounting for Third Party Merge”(为第三方合并创建会计科目)。给客户带来比较大的疑虑,为什么我们没有操作客户合并和供应商合并,却总是会有类似的会计事件自动产生呢?
针对客户的问题,根据该并发请求参数“事件”从后台找出对应的SQL:
SELECT Xe.Event_Id
,Gl.Name "Ledger Name"
,Xe.Event_Date "Merge Date"
,Xtpv1.Third_Party_Number "Original Party Number"
,Xtpsv1.Third_Party_Site_Code "Original Site Code"
,Xtpv2.Third_Party_Number "New Party Number"
,Xtpsv2.Third_Party_Site_Code "New Site Code"
,Hp1.Customer_Name
,Hp2.Customer_Name
,Xte.*
,Xe.*
FROM Xla_Events Xe
,Xla_Transaction_Entities Xte
,Gl_Ledgers Gl
,Xla_Third_Parties_v Xtpv1
,Xla_Third_Parties_v Xtpv2
,Xla_Third_Party_Sites_v Xtpsv1
,Xla_Third_Party_Sites_v Xtpsv2
,Ar_Customers Hp1
,Ar_Customers Hp2
WHERE Xe.Entity_Id = Xte.Entity_Id
AND Xe.Application_Id = 222
AND Xe.Application_Id = Xte.Application_Id
AND Xe.Event_Type_Code IN ('FULL_MERGE', 'PARTIAL_MERGE')
AND Xte.Ledger_Id = Gl.Ledger_Id
AND Xe.Process_Status_Code <> 'F'
AND Xe.Reference_Num_1 = Xtpv1.Third_Party_Id
AND Xe.Reference_Char_1 = Xtpv1.Third_Party_Type
AND Xe.Reference_Num_3 = Xtpv2.Third_Party_Id
AND Xe.Reference_Char_1 = Xtpv2.Third_Party_Type
AND Xe.Reference_Num_1 = Xtpsv1.Third_Party_Id(+)
AND Xe.Reference_Num_2 = Xtpsv1.Third_Party_Site_Id(+)
AND Xe.Reference_Char_1 = Xtpsv1.Third_Party_Type(+)
AND Xe.Reference_Num_3 = Xtpsv2.Third_Party_Id(+)
AND Xe.Reference_Num_4 = Xtpsv2.Third_Party_Site_Id(+)
AND Xe.Reference_Char_1 = Xtpsv2.Third_Party_Type(+)
AND Xtpv1.Third_Party_Id = Hp1.Customer_Id(+)
AND Xtpv2.Third_Party_Id = Hp2.Customer_Id(+)
实例数据如下:客户帐户2337合并至客户新帐户10662。相关来源数据字段全部为空,无法追溯找到相关业务单据。
提交SR官方未给出比较有价值的参考信息。只能通过代码找出业务逻辑,通过从事件类型关键字着查找数据如何产生的,如下SQL:
Select * from dba_source s where s.owner ='APPS' And S.TEXT like '%PARTIAL_MERGE%'
找到数据是由哪包调用产生,如:arp_acct_event_pkg.update_cr_dist>xla_third_party_merge_pub. third_party_merge >XLA_THIRD_PARTY_MERGE.third_party_merge
由于至包时arp_acct_event_pkg.update_cr_dist,根本不知道是哪个功能调用了它。当前猜测有如下几种情况可能会产生合并事件:
1.客户和供应商合并
2.客户帐户A的销售订单被客户帐B退货
3.客户帐户A的AR事务处理被客户帐B收款核销
通过数据检查都未找到这类似业务情况。
最后,检查包arp_acct_event_pkg.update_cr_dist代码:
有段涉及到对表ar_distributions_all数据更新,通过该表的数据初步判断是AR收款生成的数据。
因此,对AR收款进行创建、修改、核销、取消核销、记帐和取消记帐等等测试,最终找到是修改AR收款操作引起的,并且总结如下:
前提条件:
同一个客户必须要有二帐户
重现(EVENT_TYPE_CODE=’PARTIAL_MERGE‘)部分合并事件的方法如下:
1.创建收款CXP_190331,Customer name: 武汉市XXXX限公司 number:10662
2.修改该收款CXP_190331, Customer name: 武汉市XXXX限公司 number:2337,此时,通过后台查找就会产生部分合并会计事件。
同时这也是R12.1.3与R12.1.1之间的差异。