Move Orders in Oracle provide good functionality for approval based
movement of material with in an inventory organization. Move Order
Approvals use a workflow (INV: Move Order Approval) for approvals and
hence provide flexibility to extend it for approvals.
Move Orders can be created from different sources. These move orders
are identified by Move order type at the header level. Different types
of move orders are:
Move Order Requisitions These are created from the
move order form. Based on the setup at the organization and item level,
move orders require approval before they can be allocated and
transacted. These requisitions can be created to charge an account or
move the material from one subinventory to another.
Replenishment Move Orders These are auto-created
with pre approved status. Depending on the planning type you can
replenish the quantity in a subinventory for an item. Three types of
replenishment plans (in relation to move orders) are available:
- Min-max Replenishment Planning
- Kanban Replenishment Planning
- Replenishing Count planning
Based on these sources, when appropriate programs are run, move orders are automatically created.
Pick Wave Move Order Requisitions These move orders
are specifically for the sales order picking process. When Pick
Releasing program is run move orders are created as preapproved and
allocated. Pick Confirm process transacts these pick wave move orders.
Move orders contain headers and lines. All types of approved move
orders have to be allocated (basically reserved) before they can be
transacted. Depending on the item transaction controls (Subinventory,
Locator, Revision, Lot or Serial number) move order creation and
allocation gets complex.
The process is simple. Create and approve Move orders, allocate move order lines and transact them. Here let us review creating, allocating, and transacting a
move order requisition of first type (requisitions) using APIs. These
move orders will be created in pre approved status and hence do not use
workflow. Move Order Issue transaction type is used in this example. An
account is chosen while creating this move order. When successfully
transacted, this account gets debited, crediting inventory account of
the subinventory. From the user interface, to create Move orders, Move
Orders window is used.
The lines are allocated when allocation step is performed. In this
example the logic for allocation and transaction is borrowed from pick
confirmation code. To allocate and transact same form is used: Transact
Move Orders.
If the item is lot and serial number controlled (as in this example),
you have to pass the lot number and serial number information into the
move order lines table parameter. And also make sure to pass another
parameter (p_suggess_serial) as true. This will automatically take care
of allocating the lot and serial numbers into the appropriate table as
mentioned in the process flow. Also when we allocate the move order from
the user interface, the records in the form are created in the
mtl_material_transactions_temp table with transaction_status as 2, which
allows the user to change the values from user interface. But in order
to perform transaction from SQL, you have to change this value to 3 so
that the transaction manager can pick these records up.