ITPub博客

首页 > 数字化转型 > ERP > Oracle ERP 之PR转PO bug 发现及原因分析

Oracle ERP 之PR转PO bug 发现及原因分析

原创 ERP 作者:moonsoft 时间:2019-07-11 19:18:06 0 删除 编辑

用户在正常输入请购单(PR)的时候, 如果两张相同的请购单, item 一样, 比如都是M.R.O资产购置, 而且同时Description 也是完全一样的,这样转PO的时候会出现bug . EBS版本:11.5.8

这也是我单独发现的第一个bug!

[@more@]

Interface 操作流程分析

  1. 用户在正常输入请购单(PR)的时候, 如果两张相同的请购单, item 一样, 比如都是M.R.O资产购置, 而且同时Description 也是完全一样的,其单号如,1060004110600042. 完成pr的创建
  2. 采购在转PO的时候, 操作过程是先转一张PR PO ,10600041转化为PO:20600025. 接着把第二个相同的PR(除了单号完全相同), 选择add to ,加入第一张转换的那个PO号码,即把10600042也转到20600025里面.完成PO的创建.
  3. 正常流程,点收, 带不出LOCATION, 要自己输入,这个很奇怪,本来请购B单会带出的,如果直接选中保存,那么会在transaction里面有两条记录,正常状态分别是RECEIVE DELIVER,可是这种操作的时候只会有RECEIVE一个.如果要跑单也跑不出来,因为跑不出来单,user通知我才发现的.

整个流程的数据库资料变动分析

查找为异动记录:

/* Formatted on 2006/04/28 11:46 (Formatter Plus v4.8.7) */

SELECT rcvt.attribute1, rcvt.transaction_type, pol.line_type_id,

rcvt.shipment_header_id, rcvt.transaction_id

FROM

--rcv_shipment_headers_all rsh,

po_headers_all poh,

po_lines_all pol,

rcv_transactions rcvt,

po_line_locations_all poll,

rcv_shipment_lines rcvl,

rcv_shipment_headers rcvh

WHERE poh.po_header_id = pol.po_header_id

AND pol.po_line_id = poll.po_line_id

AND poll.line_location_id = rcvl.po_line_location_id --noctice here

AND rcvl.shipment_line_id = rcvt.shipment_line_id

AND rcvh.shipment_header_id = rcvl.shipment_header_id

AND

--rcvh.receipt_num='60001841'

poh.segment1 = '20600025'-- result is 475346

得到transaction_id , 接着根据transaction_id查异动信息

/* Formatted on 2006/04/28 11:47 (Formatter Plus v4.8.7) */

SELECT transaction_id, po_line_id, po_line_location_id, po_distribution_id,

shipment_line_id, parent_transaction_id

FROM rcv_transactions

WHERE transaction_id = 475346 -- the po_distribution_id is null !!!!

这个异动里的po_distribution_id 为空,难怪不正常!

--path 3:

SELECT pod.po_distribution_id

FROM po_headers_all poh,

po_lines_all pol,

po_line_locations_all poll,

po_distributions_all pod

WHERE poh.po_header_id = pol.po_header_id

AND pol.po_line_id = poll.po_line_id

AND poll.line_location_id = pod.line_location_id

AND poh.segment1 = '20600025'

-- PO _distribution_id is 152307 and 152308

为了参考,查找一下20600024

SELECT transaction_id, po_line_id, po_line_location_id, po_distribution_id,

shipment_line_id, parent_transaction_id, deliver_to_person_id , deliver_to_location_id , location_id

FROM rcv_transactions

WHERE transaction_id = 475349

or transaction_id=475348

or transaction_id=475346

发现问题原因是: po_distribution_id , deliver_to_location_id, deliver_to_person_id 皆为null. 这也解释了上面为什么带不出location , 同时为什么没有第二条记录.

解决方法:

做一次验收,transaction_id 查出来update 到正确的资料.

建议:

如果相同名称,相同物品的请购请开在一个PR同一行里,当然可能是USER又有需求所至.如果是这样,请分别转两张PO.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/226700/viewspace-831159/,如需转载,请注明出处,否则将追究法律责任。

下一篇: po in process 解法
请登录后发表评论 登录
全部评论

注册时间:2005-01-20

  • 博文量
    412
  • 访问量
    316692