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 释放保留的更多相关文章

  1. Oracle EBS INV创建保留

    CREATE or REPPLACE PROCEDURE CreateReservation AS -- Common Declarations l_api_version NUMBER := 1.0 ...

  2. Oracle EBS INV更新保留

    CREATE or REPPLACE PROCEDURE UpdateReservation AS -- Common Declarations l_api_version NUMBER := 1.0 ...

  3. Oracle EBS INV 删除保留

    DECLARE p_rsv apps.inv_reservation_global.mtl_reservation_rec_type; p_dummy_sn apps.inv_reservation_ ...

  4. Oracle EBS INV 创建物料搬运单

    Create or Replace PROCEDURE ProcessMoveOrder AS -- Common Declarations l_api_version NUMBER := 1.0; ...

  5. Oracle EBS INV 挑库发放物料搬运单

    create or replace PROCEDURE XX_TRANSACT_MO_LINE AS -- Common Declarations l_api_version NUMBER := 1. ...

  6. Oracle EBS INV 查询物料无值 ECO

    查找物料的时候报错 没有输入值 解决方法: 针对FORM做trace 多查看几个生成的trace 搜索 MTL_SYSTEM_ITEMS_b 的信息 查看到最后面的语句(一般可直接查看) 看SQL 哪 ...

  7. Oracle EBS INV 更新物料慢

    失效 ICX SELECT FA.APPLICATION_SHORT_NAME, FA.APPLICATION_ID, PI.STATUS, PI.PRODUCT_VERSION, PI.PATCH_ ...

  8. Oracle EBS INV 创建物料搬运单头

    CREATE OR REPLACE PROCEDURE XX_CreateMoveOrderHeader AS -- Common Declarations l_api_version NUMBER ...

  9. Oracle EBS INV 创建物料搬运单行

    CREATE OR REPLACE PROCEDURE CreateMoveOrderLines AS -- Common Declarations l_api_version NUMBER := 1 ...

随机推荐

  1. 磁盘分区以及Linux目录挂载详解

    一.背景 一直以来,对于磁盘的分区以及Linux目录挂载的概念都不是很清晰,现在趁着春暖花开周末在家没事就研究了下它们,现在来分享我的理解. 二.概念详解 1.磁盘分区 磁盘分区是把物理的磁盘空间按照 ...

  2. js便签笔记(9)——解读jquery源码时记录的一些知识点

    近来一直利用业余时间在看jquery2.1.1源码,大约看了两千行了.平时看的时候,做了一些笔记,贴出来分享. 1. Array.prototype.slice.call 可以将伪数组转化为真正的数组 ...

  3. js便签笔记(8)——js加载XML字符串或文件

    1. 加载XML文件 方法1:ajax方式.代码如下: var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObje ...

  4. mysql-定时对表分区

    1, 分区 具体可见: http://blog.csdn.net/open_data/article/details/46893331 1, 分区类型: RANGE分区:基于属于一个给定连续区间的列值 ...

  5. redis学习(三)redis持久化

    redis持久化 1.redis持久化介绍 我们知道redis性能之所以强悍,是因为redis在运行时将数据都存放在了访问效率远高于硬盘的内存之中.可是这带来了新的问题:在redis或者外部系统重启时 ...

  6. Java 使用pipeline对redis进行批量读写

    code import redis.clients.jedis.Jedis; import redis.clients.jedis.Pipeline; import java.util.List; p ...

  7. 异步上传文件,jquery+ajax,显示进度条

    根据网上的资料,做了很多修改,结果发现使用ajax上传数据时若要监听xhr.upload.addEventListener("progress",functiion(e),fals ...

  8. 获取CheckBox的Text值

    有在网上看到一个问题,就是尝试去获取Checkbox的值.技术难度并不高,不过有时间,还是做做练习.创建一个网页: 写click事件,在CheckBox被选取时,才去获取CheckBox的Text的值 ...

  9. WCF 获取客户端IP

    public class Service2 : IService2 { public User DoWork() { Console.WriteLine(ClientIpAndPort()); }; ...

  10. EPPlus批量插入图片到Excel

    #region 测试EPPlus插入图片        public static void Createsheel2()        {                      WebClien ...