How To Transact Move Order Using INV_PICK_WAVE_PICK_CONFIRM_PUB.Pick_Confirm API

本文档展示了如何使用API处理Oracle库存管理中的移动订单,包括样例代码、步骤及常见问题解答。涵盖不同类型的移动订单及其处理方式,并提供了解决部分数量交易等特定场景的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

In this Document

Goal
 Solution
 Sample Code:
 Steps:
 FAQ
 References

APPLIES TO:

Oracle Inventory Management - Version 11.5.10.2 to 12.1.3 [Release 11.5.10 to 12.1]
Information in this document applies to any platform.

This document includes 11.5.10, 12.0.1 and later


GOAL

The purpose of this document is to provide a demonstration showing how Move Orders can be transacted using APIs. The demonstration uses the API  INV_PICK_WAVE_PICK_CONFIRM_PUB.Pick_Confirm to transact Move Orders.

There is a document which has sample code for test purposes.

SOLUTION

Sample Code:

Please review the below instructions and sample code document. The API call looks something like this using INV_PICK_WAVE_PICK_CONFIRM_PUB from INVPCPWB.pls. See the sample code for a complete example but here is a snippet of the call:

...
INV_PICK_WAVE_PICK_CONFIRM_PUB.Pick_Confirm
(
p_api_version_number => l_api_version
, p_init_msg_list => l_init_msg_list
, p_commit => l_commit
, x_return_status => x_return_status
, x_msg_count => x_msg_count
, x_msg_data => x_msg_data
, p_move_order_type => l_move_order_type
, p_transaction_mode => l_transaction_mode
, p_trolin_tbl => l_trolin_tbl
, p_mold_tbl => l_mold_tbl
, x_mmtt_tbl => x_mmtt_tbl
, x_trolin_tbl => x_trolin_tbl
, p_transaction_date => l_transaction_date
);
...

 

Note: In 11.5.9, the last parameter (transaction date) was added with  Patch 3438094 in version INVPCPWB.pls 115.47.11590.6.

 

Steps:

1) Create a Move Order and approve it.
2) Query for the move order and allocate quantity for the Move Order lines
3) Run the API to transact material from the allocated subinventory with move order line id as the parameter.

Move Order Type:

Value Move Order Type
1 Requisition
2 Replenishment
3 Pick Wave
4 Receipt
5 Manufacturing Component Pick
6 Put Away

FAQ

#1) How to transact partial qty on a move order line ?

Steps: 
1) Create , book and release the sales order with Auto Allocate = Yes, Auto Pick Confirm = No. 
2) Go to Transact Move Orders, Query for the move order, Click on View/ Update Allocations. 
3) Reduce the allocation qty, and click save. (Note that API INV_REPLPENISH_DETAIL_PUB.Line_Details_Pub does have a limitation where it cannot allocate quantity lesser than requested quantity, so, this can be done only from forms) 
4) Now transact the move order using the same API code as before.
5) See that the reduced qty on the move order line is transacted, and rest on the order line is back ordered.

This needs to be released again, as the current move order would be closed after its transacted.
This is same as front-end functionality, when clicking on 'Transact' button it will try to transact all the lines that are allocated on that form.

Note: If requested_qty = detailed_qty on the Move Order Line, the API would transact all the detailed_qty. If the detailed_qty < requested_qty, only detailed_qty will be transacted, and the rest would be back-ordered.   

#2) Is under-picking supported using API ? 


Under picking is not supported through the api. It can only be done manually via the Transact move orders form. 

#3) Can you split allocations using API ?

The public API INV_PICK_WAVE_PICK_CONFIRM_PUB.PICK_CONFIRM() is only meant
for transacting allocation against the move order. 'Splitting Allocation' kind of functionality through
public API is not supported.

#4) After allocating user-defined serials for a lot-serial controlled item following Note 1332302.1 seeing error "Lot-serial quantity does not match transaction quantity" error while transacting using API ?

Please review if the lot and serial information is correct on the allocation from Transact Move Orders form -> Query for the move order -> Click on View/ Update Allocations. It is more likeky that the lot - serial - subinventory - locator information may be incorrect on the allocation. Please correct the same and then, run the transact API again.

REFERENCES

NOTE:729261.1 - How To Create A Move Order Header Using INV_MOVE_ORDER_PUB.Create_Move_Order_Header API [Video] ?
NOTE:729265.1 - How To Process Move Orders (Create Header and Lines) Using INV_MOVE_ORDER_PUB.Process_Move_Order API [Video] ?
NOTE:729513.1 - How to use APIs for Inventory / Product Information Management [Video] ?
NOTE:729998.1 - Oracle Inventory Management Application Program Interface ( APIs)
NOTE:783521.1 - How to Allocate Move Orders using INV_REPLENISH_DETAIL_PUB.line_details_pub API ?
NOTE:729263.1 - How To Create Move Order Lines Using INV_MOVE_ORDER_PUB.Create_Move_Order_Lines API [Video] ?
NOTE:1900798.1 - INV_Pick_Wave_Pick_Confirm_PUB.Pick_Confirm Return Status Code U

转载于:https://www.cnblogs.com/wanghang/p/6299150.html

### 关于 `inv_quantity_tree_pub.query_quantities` 的必要性分析 在 Oracle E-Business Suite (EBS) 中,`inv_quantity_tree_pub.query_quantities` 是用于查询库存数量的一个公共 API 函数[^3]。此函数允许通过传递特定参数来获取当前可用的库存数量信息,例如可交易的数量 (`available to transact`) 和可保留的数量 (`available to reserve`)。 关于是否需要模拟登录的问题,这取决于调用该 API 的上下文环境以及权限管理机制: 1. **API 调用的安全性和会话管理** 如果是在一个已建立的有效会话中执行此 API,则无需额外进行模拟登录操作。这是因为 Oracle EBS 使用基于会话的身份验证机制,在会话有效期内,用户的权限和身份已经绑定到当前事务中[^5]。 2. **无会话环境下的调用需求** 当尝试在一个未初始化会话或者外部应用程序环境中调用 `query_quantities` 时,可能需要先创建并激活一个有效的应用服务器会话。这种情况下通常涉及使用 FND_GLOBAL 或者其他类似的包来进行用户模拟登录处理[^4]。 以下是实现模拟登录的一般方法示例代码: ```plsql BEGIN fnd_global.apps_initialize( user_id => <your_user_id>, resp_id => <responsibility_id>, resp_appl_id => <application_id> ); inv_quantity_tree_pub.query_quantities ( p_api_version_number => 1.0, p_init_msg_list => 'Y', p_commit => 'N', p_validation_level => NULL, p_organization_id => <organization_id>, p_inventory_item_id => <inventory_item_id>, p_tree_mode => apps.inv_quantity_tree_pub.g_transaction_mode, x_return_status => :l_return_status, x_message_count => :l_message_count, x_message_list => :l_message_list, x_att => :l_available_to_transact, x_atr => :l_available_to_reserve ); END; ``` 上述脚本展示了如何利用 `fnd_global.apps_initialize` 来设置必要的全局变量以便正确运行目标 API 功能[^1]。 综上所述,只有当处于非活动会话状态或跨平台集成场景下才需考虑实施模拟登录逻辑;而在常规内部业务流程里则不必担心此类问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值