释放保留

SELECT * FROM mtl_system_items_b
WHERE SEGMENT1 = '6610AA002957'
AND ORGANIZATION_ID = 96;

SELECT * FROM MTL_PARAMETERS
WHERE ORGANIZATION_CODE = '125';

SELECT * FROM mtl_reservations
WHERE ORGANIZATION_ID = 242
AND INVENTORY_ITEM_ID = 502383;

SELECT *
FROM mtl_reservations v
WHERE v.RESERVATION_ID = 31408641;

SELECT * FROM cuxbak.mtl_reservations241024;

CREATE TABLE cuxbak.mtl_reservations2412231 AS
SELECT *
FROM mtl_reservations v
WHERE v.RESERVATION_ID In (31419852,31419855);

DECLARE
-- p_reser_id NUMBER := 29584842; --保留ID
x_out_code VARCHAR2(30);
x_out_mes VARCHAR2(2000);
l_reservation_qty NUMBER;
l_out_code VARCHAR2(240);
l_out_mes VARCHAR2(3000);
l_reser_id NUMBER;
l_return_status VARCHAR2(240);
l_msg_count NUMBER;
l_msg_data VARCHAR2(3000);
l_rsv_rec inv_reservation_global.mtl_reservation_rec_type;
l_serial_number inv_reservation_global.serial_number_tbl_type;
lt_reservat_rec inv_reservation_global.mtl_reservation_rec_type;
lt_serial_number_tbl inv_reservation_global.serial_number_tbl_type;
xt_serial_number inv_reservation_global.serial_number_tbl_type;
l_quantity_reserved NUMBER;
l_reservation_id NUMBER;
l_msg_data1 VARCHAR2(3000);
l_primary_relieved_qty NUMBER;
l_primary_remain_qty NUMBER;

cursor cur_a is
SELECT *
FROM mtl_reservations v
WHERE v.RESERVATION_ID In (31419852,31419855);

BEGIN
for rec in cur_a loop
x_out_code := 'S';
x_out_mes := NULL;
lt_reservat_rec := NULL;

lt_reservat_rec.reservation_id := rec.reservation_id;
inv_reservation_pub.relieve_reservation(p_api_version_number => 1.0,
p_init_msg_lst => fnd_api.g_true,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
p_rsv_rec => lt_reservat_rec,
p_primary_relieved_quantity => l_primary_relieved_qty,
p_relieve_all => fnd_api.g_true, -- relieve all -> set to false, relieve partially
p_original_serial_number => lt_serial_number_tbl,
p_validation_flag => fnd_api.g_true,
x_primary_relieved_quantity => l_primary_relieved_qty,
x_primary_remain_quantity => l_primary_remain_qty);
IF (l_return_status <> fnd_api.g_ret_sts_success)
THEN
IF l_msg_count > 0
THEN
FOR k IN 1 .. l_msg_count
LOOP
l_msg_data1 := fnd_msg_pub.get_detail(p_msg_index => k,
p_encoded => fnd_api.g_false);

END LOOP;
x_out_code := 'E';
x_out_mes := l_msg_data1;
RETURN;
END IF;
END IF;

dbms_output.put_line(x_out_code);
dbms_output.put_line(x_out_mes);
end loop;
EXCEPTION
WHEN OTHERS THEN
x_out_code := 'E';
x_out_mes := 'kd_reservation err:' || SQLERRM;
dbms_output.put_line(x_out_code);
dbms_output.put_line(x_out_mes);
END;

posted on 2026-04-03 14:19  miss斯娃  阅读(3)  评论(0)    收藏  举报