处理RCV_TRANSACTIONS_INTERFACE的数据

本文介绍了解决ERP系统中接收事务处理异常的方法,包括处理pending状态、running状态的接收记录,以及出现ERROR状态的特殊情况,并提供了具体的SQL脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


ERP系统中,接收有时候未能及时生成相应的接收事务处理,多半原因是相关接收事务(接收,交货,退货)数据异常堵在接口表里,未能正确形成接收事务处理。此时在库存超级用户职责下的“事务处理状态汇总”可以看到相应的记录。
常见接口表的错误:
1. 接收处理处理器的异常,相应的接收记录一直是pending或者running状态。
对于一直处于pending状态的,直接在po.rcv_transactions_interface表中查出对应记录的group_id,在接收事务处理处理器重新提交即可(采购超级用户职责下)。
查询group_id的Script:
SELECT rti.group_id,
       rti.to_organization_id,
       rti.processing_mode_code,
       rti.last_update_date
  FROM po.rcv_transactions_interface rti
  WHERE rti.to_organization_id = ** *
   AND rti.processing_status_code = 'PENDING'
   AND rti.transaction_status_code = 'PENDING'

对于一直处于running状态的,需要通过后台更改对应的记录为pending状态后,再重新提交接收事务处理处理器方可。
更新状态script:
UPDATE po.rcv_transactions_interface rti
   SET rti.processing_status_code  = 'PENDING' ,
       rti.transaction_status_code = 'PENDING'
  WHERE rti.to_organization_id = ** *
   AND rti.processing_status_code = 'RUNNING'
   AND rti.transaction_status_code = 'PENDING'
   AND rti.last_update_date < SYSDATE 1

--注意一定要限制时间范围,免得更改到正常数据
2.相应记录出现ERROR状态的,这种情况就要分情况进行区别对待。
一种情况是接收的时候对一笔收据号进行重复操作,主要表现在交货事务,错误记录一般为“RCV_TP_INVALID_QUANTITY”。此时查询相应的收据号会发现相应的事务已经有记录,直接在“事务处理状态汇总”进行删除
另一种情况是ERP系统bug,接收交货报错,正常事务处理,
出现错误:RVTTH-115f:子例行程序 process_transaction() 返回的错误
apps.mtl_txn_request_lines表中的数量与实际shipment_lines的数量不符,需更改对应的数量(例如mtl_txn_request_lines交货数量)
相应脚本:
SELECT *
  FROM apps.rcv_shipment_headers rsh
  WHERE rsh.receipt_num = '14286340' ;
--收据号

SELECT *
  FROM apps.rcv_transactions rt
  WHERE rt.shipment_header_id = 7693315 ;

SELECT *
  FROM apps.mtl_txn_request_lines mtr
  WHERE txn_source_id = 17590718 --rt.transaction_id
<think>嗯,用户遇到了SQL错误,提示列'PMI.material_rcv_id'在on子句中不存在。首先,我需要确定这个问题的可能原因。可能的情况有几种:列名拼写错误、表别名使用错误、或者该列确实不存在于涉及的表中。 首先,用户应该检查列名的拼写是否正确。比如,是否把material_rcv_id错写成material_recv_id或者其他形式。这一步很关键,因为即使是大小写不一致,在某些数据库系统中也可能导致问题,比如MySQL在Linux环境下是区分大小写的。 然后,确认使用的表别名是否正确。比如,PMI这个别名是否正确定义在FROM或JOIN子句中。如果别名写错了,或者对应的表里确实没有这个列,就会报错。例如,如果PMI对应的是purchase_material_info表,但该表并没有material_rcv_id这个字段,那自然会出现问题。 接下来,用户需要确认该列是否真的存在于相关表中。可以通过DESCRIBE命令或者查看表结构来验证。比如在MySQL中使用DESCRIBE purchase_material_info;,或者在Oracle中使用SELECT column_name FROM all_tab_columns WHERE table_name = 'PURCHASE_MATERIAL_INFO';。如果发现该列不存在,可能需要修改SQL语句,使用正确的列名,或者联系DBA添加该列。 此外,用户需要检查JOIN条件中的逻辑是否正确。是否应该使用其他列进行关联,比如material_id或者receipt_id。有时候,可能是因为关联条件写错了列,导致系统找不到对应的字段。 如果用户是在进行多表关联操作,特别是涉及到接收相关的表如rcv_transactions,可能需要参考引用中的信息。例如,引用[4]提到了rcv_lots_interfacercv_serials_interface表,用户可能需要确认是否应该关联这些表中的相关列,比如shipment_header_id或shipment_line_id。 还有,用户需要注意数据库的权限问题,是否有权限访问该列。不过这个可能性较小,通常错误信息会更明确。 最后,如果以上步骤都确认无误,但问题仍未解决,建议用户提供具体的SQL语句和表结构,以便进一步分析。例如,检查是否存在拼写错误或别名错误,或者是否需要使用正确的关联列。 总结一下,解决步骤应该是:检查列名拼写→确认表别名→验证列是否存在→检查JOIN逻辑→参考相关表结构→修正SQL语句。此外,用户可能需要根据业务需求调整关联条件,比如使用正确的接收事务ID或其他相关字段。</think>针对SQL查询中出现的`Unknown column 'PMI.material_rcv_id' in on clause`错误,以下是逐步解决方案: --- ### **1. 检查列名拼写和大小写** - **关键点**:数据库对列名大小写敏感(如MySQL在Linux环境下区分大小写) - **操作**:确认`PMI.material_rcv_id`的拼写与表结构中完全一致 - **示例验证**: ```sql -- 查看表结构(MySQL) DESCRIBE purchase_material_info; -- 或Oracle中查询列名 SELECT column_name FROM all_tab_columns WHERE table_name = 'PURCHASE_MATERIAL_INFO'; ``` --- ### **2. 确认表别名`PMI`的定义** - **常见问题**:表别名未正确定义或与预期表不匹配 - **检查范围**: ```sql SELECT ... FROM purchase_material_info PMI -- 确保别名PMI对应正确的表 JOIN rcv_transactions RT ON PMI.material_rcv_id = RT.transaction_id ``` 若`purchase_material_info`表中无此列,需调整关联逻辑[^4] --- ### **3. 验证列是否存在** - **场景分析**:若列确实不存在,可能需要: - **方案1**:修改SQL语句,使用正确的关联列(如`material_id`或`receipt_id`) - **方案2**:联系DBA添加该列(需业务验证) ```sql -- 示例添加列语句 ALTER TABLE purchase_material_info ADD material_rcv_id NUMBER; ``` --- ### **4. 检查接收事务表关联逻辑** - **参考系统表**:根据引用[1][4],接收事务相关表如`rcv_transactions`包含`transaction_id`、`shipment_header_id`等字段 - **建议调整**: ```sql -- 尝试关联其他接收事务字段 JOIN rcv_transactions RT ON PMI.receipt_id = RT.transaction_id -- 假设存在receipt_id字段 ``` --- ### **5. 权限验证(罕见情况)** - 执行以下语句检查权限: ```sql SHOW GRANTS FOR CURRENT_USER; ``` --- ### **修正示例** 假设实际列名为`material_receipt_id`: ```sql -- 修改前 JOIN rcv_transactions RT ON PMI.material_rcv_id = RT.transaction_id -- 修改后 JOIN rcv_transactions RT ON PMI.material_receipt_id = RT.transaction_id ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值