摘自:Document 269144.1 (oracle.com)
How To Allocate and Transact Move Orders using APIs Instead of Using Move Order Forms (Doc ID 269144.1)
APPLIES TO:
Oracle Inventory Management - Version 11.5.3 to 11.5.8 [Release 11.5]
Information in this document applies to any platform.
***Checked for relevance on 18-Aug-2014***
This note applies only through 11.5. For Release 12, review Note 729261.1:
How To Create A Move Order Header Using INV_MOVE_ORDER_PUB.Create_Move_Order_Header API [Video]
GOAL
How can one Allocate and Transact Move Orders using APIs instead of using the normal Move Order forms?
SOLUTION
One can simulate the allocation process using the following APIS: INV_REPLENISH_DETAIL_PUB.Line_details_pub, INV_TROLIN_UTIL.Query_Rows, and INV_PICK_WAVE_PICK_CONFIRM_PUB.Pick_Confirm. More details follow:
1. INV_REPLENISH_DETAIL_PUB.Line_details_pub
Call INV_REPLENISH_DETAIL_PUB.Line_details_pub. This API takes a move order line id (and some other values) and allocates the move order line.
Here are the input values:
p_line_id = the move order line_id
p_transaction_header_id = NULL
p_transaction_mode = NULL
p_serial_flag = fnd_api.g_true
p_move_order_type = Pass in the following value (&LINE_ID is move order line_id):
select move_order_type
from mtl_txn_request_headers
where header_id = (
select header_id
from mtl_txn_request_lines
where line_id = &LINE_ID);
The output variables are fairly self explanatory. The only one the user should really care about is x_number_of_rows. If x_number_of_rows = 0, then no material was found to use for this move order. Also, x_return_status lets the user know whether an error occurred or not ('S' for success, 'U' or 'E' for error).
2. INV_TROLIN_UTIL.Query_Rows
Get move order information (only do this step if x_number_of_rows from above is > 0)
Call the following API INV_TROLIN_UTIL.Query_Rows that is a function returning a table of type INV_MOVE_ORDER_PUB.Trolin_Tbl_Type:
INV_TROLIN_UTIL.Query_Rows(p_line_id => &LINE_ID);
3. INV_PICK_WAVE_PICK_CONFIRM_PUB.Pick_Confirm
Transact the move order (only do this step if x_number_of_rows from above is > 0)
Call INV_PICK_WAVE_PICK_CONFIRM_PUB.Pick_Confirm, passing in the following parameters:
p_api_version_number = 1.0
p_init_msg_list = fnd_api.g_false
p_commit = fnd_api.g_true (or fnd_api.g_false depening on if you want commit to happen)
p_move_order_type = 1
p_transaction_mode = 1
p_trolin_tbl = Table gotten in step 2
p_mold_tbl = Emtpy table of type INV_MO_LINE_DETAIL_UTIL.g_mmtt_tbl_type
Output variables should be understandable, and the user can ignore them for the
most part. If x_return_status = 'S', then the move order was transacted. If x_return_status = 'U' or 'E', there was some error processing the move order. INV_PICK_WAVE_PICK_CONFIRM_PUB.Pick_Confirm returns an error unless user calls
it from a session that has an AOL login.
In summary, with these three APIs, user should be able to allocate and transact move orders.
Note: users should make sure that the Auto Pick Confirm is turned off on Organization setup form.
REFERENCES
BUG:1744207 - NEED TO TRANSACT MOVE ORDERS VIA API