Oracle EBS INV 释放保留
CREATE or REPPLACE PROCEDURE RelieveReservation
AS
-- Common Declarations
l_api_version NUMBER := 1.0;
l_init_msg_list VARCHAR2(2) := FND_API.G_TRUE;
x_return_status VARCHAR2(2);
x_msg_count NUMBER := 0;
x_msg_data VARCHAR2(255);
x_error_code NUMBER := 0; -- WHO columns
l_user_id NUMBER := -1;
l_resp_id NUMBER := -1;
l_application_id NUMBER := -1;
l_row_cnt NUMBER := 1;
l_user_name VARCHAR2(30) := 'MFG';
l_resp_name VARCHAR2(50) := 'Manufacturing and Distribution Manager'; -- API specific declarations
l_rsv_rec INV_RESERVATION_GLOBAL.MTL_RESERVATION_REC_TYPE;
l_serial_number INV_RESERVATION_GLOBAL.SERIAL_NUMBER_TBL_TYPE; l_validation_flag VARCHAR2(2) := FND_API.G_TRUE;
x_mtl_reservation_tbl INV_RESERVATION_GLOBAL.MTL_RESERVATION_TBL_TYPE;
x_mtl_reservation_tbl_count NUMBER := 0;
x_primary_relieved_qty NUMBER := 0;
x_primary_remain_qty NUMBER := 0; l_primary_reservation_qty NUMBER := 10; -- total qty
l_primary_relieved_qty NUMBER := 2;
l_subinventory_code VARCHAR2(40) := NULL; --'Stores'; -- will create a hard reservation -- Load reservation for this item
CURSOR c_item_reservations IS
SELECT msi.organization_id, msi.inventory_item_id, res.reservation_id, res.reservation_quantity, res.demand_source_name
FROM mtl_system_items_b msi, mtl_parameters mp, mtl_reservations res
WHERE msi.segment1 = 'SU_TEST_STS3'
AND mp.organization_code = 'M1'
AND msi.organization_id = mp.organization_id
AND res.organization_id = msi.organization_id
AND res.inventory_item_id = msi.inventory_item_id; -- Load required serial numbers to be reserved
CURSOR c_serials IS
SELECT msn.inventory_item_id, msn.serial_number
FROM mtl_system_items_b msi, mtl_serial_numbers msn, mtl_parameters mp
WHERE msi.organization_id = mp.organization_id
AND msi.organization_id = msn.current_organization_id
AND msi.inventory_item_id = msn.inventory_item_id
AND msi.segment1 = 'SU_TEST_STS3'
AND mp.organization_code = 'M1'
AND msi.serial_number_control_code not in (1, 6) -- item is not serial controlled / controlled at sales order issue
AND msn.serial_number BETWEEN '' AND ''; -- can leave this NULL if item is not serial controlled BEGIN -- Get the user_id
SELECT user_id
INTO l_user_id
FROM fnd_user
WHERE user_name = l_user_name; -- Get the application_id and responsibility_id
SELECT application_id, responsibility_id
INTO l_application_id, l_resp_id
FROM fnd_responsibility_vl
WHERE responsibility_name = l_resp_name; FND_GLOBAL.APPS_INITIALIZE(l_user_id, l_resp_id, l_application_id);
dbms_output.put_line('Initialized applications context: '|| l_user_id || ' '|| l_resp_id ||' '|| l_application_id ); -- Get the first row
FOR ir IN c_item_reservations LOOP
l_rsv_rec.organization_id := ir.organization_id;
l_rsv_rec.inventory_item_id := ir.inventory_item_id;
EXIT;
END LOOP; -- Get all reservations that exist for this item
-- call API to get all the reservations for this item
DBMS_OUTPUT.PUT_LINE('=======================================================');
DBMS_OUTPUT.PUT_LINE('Calling INV_RESERVATION_PUB.Query_Reservation');
INV_RESERVATION_PUB.QUERY_RESERVATION(
P_API_VERSION_NUMBER => l_api_version
, P_INIT_MSG_LST => l_init_msg_list
, X_RETURN_STATUS => x_return_status
, X_MSG_COUNT => x_msg_count
, X_MSG_DATA => x_msg_data
, P_QUERY_INPUT => l_rsv_rec
, P_LOCK_RECORDS => FND_API.G_FALSE
, P_SORT_BY_REQ_DATE => INV_RESERVATION_GLOBAL.G_QUERY_NO_SORT
, P_CANCEL_ORDER_MODE => INV_RESERVATION_GLOBAL.G_CANCEL_ORDER_NO
, X_MTL_RESERVATION_TBL => x_mtl_reservation_tbl
, X_MTL_RESERVATION_TBL_COUNT => x_mtl_reservation_tbl_count
, X_ERROR_CODE => x_error_code
); DBMS_OUTPUT.PUT_LINE('=======================================================');
DBMS_OUTPUT.PUT_LINE('Return Status: '||x_return_status); IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
DBMS_OUTPUT.PUT_LINE('Error Message :'||x_msg_data);
END IF; IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
FOR i IN 1..x_mtl_reservation_tbl_count LOOP
DBMS_OUTPUT.PUT_LINE('=======================================================');
dbms_output.put_line('reservation_id : '|| TO_CHAR(x_mtl_reservation_tbl(i).reservation_id));
dbms_output.put_line('requirement_date : '|| TO_CHAR(x_mtl_reservation_tbl(i).requirement_date, 'YYYY/MM/DD'));
dbms_output.put_line('organization_id : '|| TO_CHAR(x_mtl_reservation_tbl(i).organization_id));
dbms_output.put_line('inventory_item_id : '|| TO_CHAR(x_mtl_reservation_tbl(i).inventory_item_id));
dbms_output.put_line('demand_source_type_id : '|| TO_CHAR(x_mtl_reservation_tbl(i).demand_source_type_id));
dbms_output.put_line('demand_source_name : '|| x_mtl_reservation_tbl(i).demand_source_name);
dbms_output.put_line('demand_source_header_id : '|| TO_CHAR(x_mtl_reservation_tbl(i).demand_source_header_id));
dbms_output.put_line('demand_source_line_id : '|| TO_CHAR(x_mtl_reservation_tbl(i).demand_source_line_id));
dbms_output.put_line('demand_source_line_detail : '|| TO_CHAR(x_mtl_reservation_tbl(i).demand_source_line_detail));
dbms_output.put_line('primary_uom_code : '|| x_mtl_reservation_tbl(i).primary_uom_code);
dbms_output.put_line('reservation_uom_code : '|| x_mtl_reservation_tbl(i).reservation_uom_code);
dbms_output.put_line('reservation_quantity : '|| TO_CHAR(x_mtl_reservation_tbl(i).reservation_quantity));
dbms_output.put_line('primary_reservation_quantity: '|| TO_CHAR(x_mtl_reservation_tbl(i).primary_reservation_quantity));
dbms_output.put_line('detailed_quantity : '|| TO_CHAR(x_mtl_reservation_tbl(i).detailed_quantity));
dbms_output.put_line('supply_source_type_id : '|| TO_CHAR(x_mtl_reservation_tbl(i).supply_source_type_id));
dbms_output.put_line('supply_source_header_id : '|| TO_CHAR(x_mtl_reservation_tbl(i).supply_source_header_id));
dbms_output.put_line('supply_source_line_id : '|| TO_CHAR(x_mtl_reservation_tbl(i).supply_source_line_id));
dbms_output.put_line('supply_source_name : '|| (x_mtl_reservation_tbl(i).supply_source_name));
dbms_output.put_line('supply_source_line_detail : '|| TO_CHAR(x_mtl_reservation_tbl(i).supply_source_line_detail));
dbms_output.put_line('subinventory_code : '|| x_mtl_reservation_tbl(i).subinventory_code);
dbms_output.put_line('ship_ready_flag : '|| TO_CHAR(x_mtl_reservation_tbl(i).ship_ready_flag));
dbms_output.put_line('staged_flag : '|| x_mtl_reservation_tbl(i).staged_flag);
DBMS_OUTPUT.PUT_LINE('=======================================================');
END LOOP;
END IF; -- call API to relieve all the queried reservations for this item
DBMS_OUTPUT.PUT_LINE('=======================================================');
DBMS_OUTPUT.PUT_LINE('Calling INV_RESERVATION_PUB.Relieve_Reservation');
FOR i IN 1..x_mtl_reservation_tbl_count LOOP BEGIN
-- Initialize Serials to be relieved
FOR ser IN c_serials LOOP
l_serial_number(l_row_cnt).inventory_item_id := ser.inventory_item_id;
l_serial_number(l_row_cnt).serial_number := ser.serial_number;
l_row_cnt := l_row_cnt + 1;
END LOOP; IF (l_serial_number.COUNT > 0) THEN
l_primary_relieved_qty := l_serial_number.COUNT;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Item not serial controlled / serials not provided');
END; -- Call the API to relieve reservations for the provided serial numbers
INV_RESERVATION_PUB.RELIEVE_RESERVATION(
P_API_VERSION_NUMBER => l_api_version
, P_INIT_MSG_LST => l_init_msg_list
, X_RETURN_STATUS => x_return_status
, X_MSG_COUNT => x_msg_count
, X_MSG_DATA => x_msg_data
, P_RSV_REC => x_mtl_reservation_tbl(i)
, P_PRIMARY_RELIEVED_QUANTITY => l_primary_relieved_qty
, P_RELIEVE_ALL => FND_API.G_FALSE -- Relieve ALL -> set to false, relieve partially
, P_ORIGINAL_SERIAL_NUMBER => l_serial_number
, P_VALIDATION_FLAG => l_validation_flag
, X_PRIMARY_RELIEVED_QUANTITY => x_primary_relieved_qty
, X_PRIMARY_REMAIN_QUANTITY => x_primary_remain_qty
); DBMS_OUTPUT.PUT_LINE('=======================================================');
DBMS_OUTPUT.PUT_LINE('Return Status: '||x_return_status); IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
DBMS_OUTPUT.PUT_LINE('Error Message :'||x_msg_data);
END IF; IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
DBMS_OUTPUT.PUT_LINE('Reservation ID:'||x_mtl_reservation_tbl(i).reservation_id);
DBMS_OUTPUT.PUT_LINE('Primary Relieved Quantity: '||x_primary_relieved_qty);
DBMS_OUTPUT.PUT_LINE('Primary Remain Quantity: '||x_primary_remain_qty);
END IF; END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Exception Occured :');
DBMS_OUTPUT.PUT_LINE(SQLCODE ||':'||SQLERRM);
DBMS_OUTPUT.PUT_LINE('=======================================================');
END RelieveReservation;
Oracle EBS INV 释放保留的更多相关文章
- Oracle EBS INV创建保留
CREATE or REPPLACE PROCEDURE CreateReservation AS -- Common Declarations l_api_version NUMBER := 1.0 ...
- Oracle EBS INV更新保留
CREATE or REPPLACE PROCEDURE UpdateReservation AS -- Common Declarations l_api_version NUMBER := 1.0 ...
- Oracle EBS INV 删除保留
DECLARE p_rsv apps.inv_reservation_global.mtl_reservation_rec_type; p_dummy_sn apps.inv_reservation_ ...
- Oracle EBS INV 创建物料搬运单
Create or Replace PROCEDURE ProcessMoveOrder AS -- Common Declarations l_api_version NUMBER := 1.0; ...
- Oracle EBS INV 挑库发放物料搬运单
create or replace PROCEDURE XX_TRANSACT_MO_LINE AS -- Common Declarations l_api_version NUMBER := 1. ...
- Oracle EBS INV 查询物料无值 ECO
查找物料的时候报错 没有输入值 解决方法: 针对FORM做trace 多查看几个生成的trace 搜索 MTL_SYSTEM_ITEMS_b 的信息 查看到最后面的语句(一般可直接查看) 看SQL 哪 ...
- Oracle EBS INV 更新物料慢
失效 ICX SELECT FA.APPLICATION_SHORT_NAME, FA.APPLICATION_ID, PI.STATUS, PI.PRODUCT_VERSION, PI.PATCH_ ...
- Oracle EBS INV 创建物料搬运单头
CREATE OR REPLACE PROCEDURE XX_CreateMoveOrderHeader AS -- Common Declarations l_api_version NUMBER ...
- Oracle EBS INV 创建物料搬运单行
CREATE OR REPLACE PROCEDURE CreateMoveOrderLines AS -- Common Declarations l_api_version NUMBER := 1 ...
随机推荐
- 在自己网站中引入CU3ER/Flash 3D幻灯片效果和照片画框
要求 必备知识 本文要求基本了解 JAVASCRIPT 和 XML基础语法知识. 运行环境 支持Flash Player的浏览器/Flash Player11及以上 演示地址 演示地址 下载地址 ...
- 最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)
导读 1. 什么是序列化? 2. 为什么要序列化?好处在哪里? 3. C++对象序列化的四种方法 4. 最常用的两种序列化方案使用心得 正文 1. 什么是序列化? 程序员在编写应用程序的时候往往需要将 ...
- 【胡思乱想】命令模式 与 Thread Runnable
实现线程任务有两种方式,一种是创建Runnable/Callable对象,传递给Thread.另一种是子类重写Thread的run方法. 我觉得前一种像极了命令模式,或者说应该是命令模式的一个使用案例 ...
- MYSQL查询语句大全集锦
MYSQL查询语句大全集锦 1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2.创建一个数据库MYSQLDATA mysql> C ...
- sql server数据库查看锁表和解锁
--查看锁表: select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys ...
- SPA页面初试
之前一直很好奇,SPA应用到底是怎么实现的,昨天无意间看到了有一篇介绍的文章,就想着来试一下水(以下根据我的理解所写,可能会让你看的云里雾里,如果想加深了解,最好先了解下window.location ...
- 异步消息队列Celery
Celery是异步消息队列, 可以在很多场景下进行灵活的应用.消息中包含了执行任务所需的的参数,用于启动任务执行, suoy所以消息队列也可以称作 在web应用开发中, 用户触发的某些事件需要较长事件 ...
- PHP初级程序员出路
分销系统 微信公众号开发 分销系统 微信小程序
- ASP.NET 之 EntityFramework实体框架搭建
前段时间接触了EntityFramework,对ORM框架也是有了初步的认识,现在对其进行一点小总结. 一.ORM简介 对象关系映射(Object Relational Mapping,简称ORM)模 ...
- C#winform使用进度条
在用c#做WinFrom开发的过程中.我们经常需要用到进度条(ProgressBar)用于显示进度信息.这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口很容易假死(无法适时看到进度信息 ...