概述
对于制造企业来说,po,inv,wip是比较重要的三个核心模块。其中采购接收即是连接po模块和inv模块的重要操作。
首先介绍一下采购接收常用的数据表, mtl_system_items_B---不用多说了,地球人都知道,物料表 rcv_transactions ---接收交易表,接收,检验,交货,退回至接收,退回至供应商的所有记录 rcv_supply ---接收中,记录处于接收中的事务处理。其中它的数量会随着实际而更新,如果完全交货或退回,则表中将没有数据 po_vendors ---供应商表 po_vendor_sites_all---供应商地点表 po_headers_all ---po头表 po_lines_all ---po行表 po_line_locations_all---po行的发运表,主要记录po行接收多少,开票多少等 rcv_shipment_headers---发运头表,这里有产生的收据号 rcv_shipment_lines--发运行表,具体到发运行 1.空收据号的产生 在正常的业务操作中,有时候接收保存之后,题头也显示了收据号,但再从接收查询那里查,则显示无记录,这有两种可能,要么这笔记录在接口表中,或者这笔记 录为空收据号。空收据号的意思就是,接收的时候只产生了接收的头,即收据号,下面的详细的行没有产生。 在rcv_shipment_headers表中有记录,但是在rcv_shipment_headers没有对应的记录。如果接收的时候接口表没过去, 删除该接口表记录也是产生空收据号的途径。 查空收据号script: select rsh.RECEIPT_NUM "收据号", fu.DESCRIPTION "操作人", rsh.CREATION_DATE "创建日期" from apps.rcv_shipment_headers rsh, apps.fnd_user fu where rsh.SHIP_TO_ORG_ID =库存组织id and fu.USER_ID = rsh.CREATED_BY and rsh.CREATION_DATE >= to_date('2007-02-01', 'yyyy-mm-dd') and rsh.CREATION_DATE <= to_date('2007-02-26', 'yyyy-mm-dd') and NOT EXISTS (SELECT 'X' from apps.rcv_shipment_lines rsl WHERE rsl.to_organization_id = 库存组织id AND rsl.SHIPMENT_HEADER_ID = rsh.SHIPMENT_HEADER_ID) 对于产生的空收据号,只能重新做接收。 -------------------------------------------------- 2.接收的检验控制 这里所说的检验只是INV模块的“接收检验”,是一个品质信息收集的途径。oracle标准功能提供了检验,但是通常在实际操作中,由于仓库的管理和来料 检验是分属于不同部门的,来料检验是不需要在ERP系统中进行检验操作的,这样,ERP系统中的操作就没什么用。 在下达po时,po有个接收控制选项,里面有个接收方式,分为“标准接收”和“要求检验”,可手工进行更改。这个选项是从该供应商的信息的接收选项带过来的。 如果是“要求检验”,必须在接收之后,点击检验,否则,不进行检验而直接交货,虽然显示保存成功,但是实际显示为“转移”,无法交货成功。对于这个po,必须返出之后,更改po的接收控制,重新接收交货。 其实po中的接收方式的要求检验也是从供应商那里带过来的。所以最根本的还是要在供应商设置那里,供应商的接收属性组下的接收方式。标准接收---先接收,再交货。要求检验--接收,检验,交货。直接交货----俺没试过,按字面理解就应该是一步交货吧。 不过对于一些企业,不是很好,因为很多企业是交货的时候才会进行付款,对于有些制造企业,需要实行装机付款,那必须实际上线装配使用的时候,才会进行交货。 -------------------------------------------------- 3.分作业备料和共享备料 这个应该都是客户化来着,主要讲一下概念吧。 分作业备料即对每个作业分别下达相应的物料采购需求,供应商也分别对应作业送货,正常情况下,作业物料都是专属专用的。即A作业的物料不能给B使用,虽然两个用同一个供应商的同一种物料。分作业备料不需要考虑原有库存。 共享备料,一切作业都是从仓库出料,所有物料都是直接交货到仓库,对所有的共享的需求计算缺料,先领先得。 -------------------------------------------------- 4.标准接收与条码接收(客户化) 11i里面系统的标准功能是提供了标准接收,即采购下了po,供应商按照po的要求和时间,一次或多次送货物,同时有供应商自己开出的手工单,仓库 收到货物,根据手工单上的po号,物料编码,数量,在ERP系统中做接收。这对于仓库的存货管理来说是比较危险的。因为如果下给某个供应商只有一次的数 量,供应商多次送货(特别是共享备料,分作业备料可能会记录作业号在手工单上),仓库收货人是无法判别的。且标准接收难以关联到很多信息。 条码接收即为采购员除了下达po,还要下达送货通知,类似po的发运,供应商及时的确认,答应送货,则确认后产生送货单(系统此时产生一个条码号, 此条码号就作为以后的接收号),此送货单自动匹配对应这个供应商的po,接收的时候直接收就可以了。--具体的内部逻辑,还要仔细研究研究。 这一部分主要讲讲INV常见接口表问题的处理,之前也有好多人讲过。 1.ERP系统中,接收有时候未能及时生成相应的接收事务处理,多半原因是相关接收事务(接收,交货,退货)数据异常堵在接口表里,未能正确形成接收事务处理。此时在库存超级用户职责下的“事务处理状态汇总”可以看到相应的记录。 常见接口表的错误: 接收处理处理器的异常,相应的接收记录一直是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 --注意一定要限制时间范围,免得更改到正常数据 相应记录出现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 _interface有时候会出现重复的记录,这应该是bug,对于那些重复的,删除重复的即可。 库存模块异常问题收集: 1.库存对应物料的现有量与物料所有事务处理的总和不符 系统某物料的现有量与该物料所有事务处理的总和不符,究其原因,应该是物料事务处理的时候,发料事务处理等出库操作未扣减现有量表中的数据,导致两边数量 不一致,具体原因还不清楚,现只能做data-fix,发现一笔解决一笔。一般情况是系统漏扣数量,因此做数据修复一般是删除和更新 inv.mtl_onhand_quantities_detail表中对应数据即可。 Script: Delete from inv.mtl_onhand_quantities_detail moq Where moq.inventory_item_id =*** And moq.organization_id =**** And moq.subinventory_code ='*****' And moq.creation_date <= Sysdate and moq.TRANSACTION_QUANTITY=*** and moq.onhand_quantities_id=17894817 -- moq最近的一个发生过变动的记录或最近一个产生的记录 Update mtl_onhand_quantities_detail moq Set moq.primary_transaction_quantity=*** ,moq.transaction_quantity=*** Where moq.organization_id=*** And moq.inventory_item_id=**** And moq.subinventory_code='***' And moq.onhand_quantities_id= ---对应的onhand_quantities_id |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12835335/viewspace-239030/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12835335/viewspace-239030/
最后
以上就是真实钢铁侠为你收集整理的库存讲解一二的全部内容,希望文章能够帮你解决库存讲解一二所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复