Archives for January 2008

通过RCV_TRANSACTION_INTERFACE传交货数据的小问题

通过接口传递采购接收信息时有个小小的陷阱,这个陷阱会导致交货数量匹配混乱,但并没有在Oracle任何公开的文档中说明。

这里假设一个情景:做一个标准采购订单,交货路线为要求检验。分配行1数量为500,分配行2数量为500。可以猜测到做检验后,RCV_SUPPLY中的DESTINATION_TYPE_CODE将可能是SINGLE或者MULTIPLE。

做两笔接收:接收号1数量为400,接收号2数量为600。所有插入接口的数据完全按照《Oracle Manufacturing APIs and Open Interface Manual》中要求的必须字段来。

数据传到RCV_TRANSACTION_INTERFACE后,接收事务处理器(无法看到源码,是个黑盒子)会根据对应的分配行分配数量进行动态判断。

如果先对接收号1做检验,则目的地类型判断为SINGLE,同时该接收数量给分配行1。再对接收号2做检验,则目的地类型判断为MULTIPLE,同时该接收数量给分配行1的数量为100,给分配行2的数量为500。

如果先对接收号2做检验,则目的地类型判断为MULTIPLE,同时该接收数量给分配行1的数量为300,给分配行2的数量为300。再对接收号1做检验,则目的地类型判断为MULTIPLE,同时该接收数量给分配行1的数量为200,给分配行2的数量为200。

也就是说,接收事务处理器是根据PO_LINE_LOCATION_ID来动态计算每个发运行对应分配行此次分配的数量。先计算第一个分配行的数量,再计算第二个分配行的数量。如果第一笔交货和第二笔交货同时插入接口进行处理,则很有可能本来应该SINGLE的交货数量,被后面的MULTIPLE的交货数量给填充了,这按理是不应该发生的。这样就会导致第一笔SINGLE的交货无法被正常处理。造成这个问题的原因估计是,接收事务处理没有判断此次交货是针对哪个接收的。

供应类型 (Supply Types)

供应类型控制着Oracle在制品系统中装配件的物料供应方式。可以在Oracle库存管理系统中创建物料的时候定义供应类型,也可以在创建BOM时定义。总共有7种供应类型:
Image Hosted by ImageShack.us

  1. Push 推式
    推式组件可以直接发到离散任务上去,可自行选择从哪个子库存发料。
  2. Assembly Pull 装配件拉式
    在装配件完工的时候,自动按照BOM清单标准用量产生领料事务处理,无需人为手工录入。物料从指定的供应子库存中获取。该供应方式必须指定给BOM或者没有工序的任务。对于非标的离散任务,如果该任务没有关联的BOM,则无法指定供应类型为装配件推式。
  3. Operation Pull 工序拉式
    在某道工序移动的时候,系统会自动从指定的子库存,按照BOM清单标准用量产生领料事务处理,无需人为手工录入。该供应类型可以指定到没有工艺路线的装配件或者没有工艺路线的非标离散任务上去。也可以指定到有工艺路线但是没有工序,或者该工艺路线含有失效的工序的装配件上。然而,所有该供应类型的组件都会被自动变更为装配件拉式。
  4. Bulk 批量
    批量组件需求可以通过报表来查看。它们主要用于,车间需要这些组件,但是又不必移动的情形。主要是对那些用量不是十分准确或者不好估量的物料的。批量组件无法倒冲[# 根据已生产的装配件产量, 通过展开物料清单, 将用于该装配件或子装配件的零部件或原材料数量从库存中冲减掉]。不过,可以手工将批量组件发到离散任务上去。
  5. Supplier 供应商
    供应商组件也可以包含在BOM中。在创建离散任务的时候会自动创建供应商组件需求。这类组件也可以通过报表查看,它们可以告诉你哪些组件需要供应商提供。供应商组件无法倒冲。
  6. Phantom 虚拟件
    虚拟组件可以指定到BOM的子装配件和子装配件项目上,它们通常用于链接至最顶层的装配件。虚拟件供应类型不能指定到任务上。虚拟件只会带上材料成本,上滚到Oracle成本管理系统,而不会带上routing costs。
  7. Based on Bill 基于清单
    这是WIP的一个特殊的供应类型。当你定义一个离散任务的时候,这会作为默认的供应类型。若是任务的供应类型变更了,则所有的组件的物料需求都会变更。若是尝试将供应类型变更为工序拉式,但是该任务又没有相关的工艺路线或工序,则系统会自动将供应类型变更为装配件拉式。