需求简介:
随着制造企业对生产销售的控制越来越高,越来越多的制造型企业增加了对物料的批次、序列号的控制。我们可以在库存职责中的:物料 –> 主组织物料/组织产品 -> 库存TAB页:来这只某个库存组织中是否启用序列或者是批次。
启用物料的批次、序列控制后,该无聊在采购入库、销售出库都需要填写相应有效批次序列。
在Ebs中我们经常会碰到要实现自动化的公司间事务处理,比如自动销售出库,自动的采购入库。本文就将讲解如何实现带序列号、批次控制的销售出库。
在Ebs的界面上手工的进行销售出库,我们是去修改物料搬运单的属性,物料搬运单 -> 处理物料搬运单 -> 处理物料搬运单分配。如果启用序列、批次号控制,“序列/批次”按钮将会亮起来。
既然实在处理物料搬运单时修改的批次、序列,我们首先就会想到物料搬运单的API来实现这个功能:(挑库确认之前)可使用的API有:
Ø INV_MOVE_ORDER_PUB.Process_Move_Order
Ø INV_MOVE_ORDER_PUB.Process_Move_Order_Line
该API中的p_trolin_tbl(i).lot_number、p_trolin_tbl(i).serial_number_start、p_trolin_tbl(i).serial_number_end是允许设置和修改。但是让人失望的是,虽然修改了但是挑库发运却看不出任何效果,发出去的物料根本就不是我们指定的批次和序列。
这是因为,库存事务处理是根据下面三个表中的数据进行处理的,而不是根据物料搬运单行。
Ø MTL_MATERIAL_TRANSACTIONS_TEMP (库存事务处理临时表)
Ø MTL_TRANSACTION_LOTS_TEMP (批次临时表)
Ø MTL_SERIAL_NUMBERS_TEMP (序列号临时表)
然而这三个表ORACLE并没有提供API来修改它们。
那么我们想:既然是临时表,为何不直接UPDATE它们?那么我们就试一试。
处理步骤:
1. 创建销售订单
2. 挑库发放(非自动确认)
3. 使用INV_MOVE_ORDER_PUB.Process_Move_Order_Line修改物料搬运单行
4. 更新MMT、MLT、MST表中的相关数据
5. 挑库确认
6. 发运确认
如果你的版本是12.1以后,那么发运过程中的请求将会报错,ERROR_CODE:Serial Mssing(序列号控制的情况下出现,批次中不会出现,MetaLink补丁解决这个BUG)。
但是不管怎么样,去直接UPDATE一个表总让人觉得不好(而且还有BUG),那么如果办呢?