- Get link
- X
- Other Apps
- Get link
- X
- Other Apps
Below is the script for Direct Org Transfer of LPNs between 2 WMS enabled Organizations.
DECLARE
p_lot_number VARCHAR2(15):= '1F01220012'; --1F01220007
ln_lpn_id NUMBER;
l_item_id NUMBER;
-- p_subinv VARCHAR2(50) := 'FGI'
-- l_uom VARCHAR2(50);
-- l_subinv_code VARCHAR2(50);
-- l_locator_id NUMBER;
-- l_lpn_qty NUMBER;
ln_transaction_interface_id NUMBER;
lv_return_value VARCHAR2 (50);
lv_pt_return_status VARCHAR2 (10);
ln_msg_idx_cnt NUMBER;
lv_pt_msg_data VARCHAR2 (4000);
ln_trans_count NUMBER;
ln_item_id NUMBER;
ln_qty NUMBER;
ln_source_locator_id NUMBER;
lv_uom_code VARCHAR2(20);
lv_lot_number VARCHAR2(15);
ln_status_id NUMBER := 20;
p_new_organization_id NUMBER;
p_new_subinv VARCHAR2(20);
p_new_locator_id NUMBER;
ln_trnasaction_type_id NUMBER; --2 Subinventory Transfer
l_reason_id NUMBER;
re_exception EXCEPTION;
BEGIN
--Subinventory Transfer starts here. From and To Inv orgs same.
DBMS_OUTPUT.PUT_LINE('Starting Subinv Transfer Process');
ln_transaction_interface_id := mtl_material_transactions_s.NEXTVAL;
--------------------Store transaction type id in Any lookup, so that it can be used in future customizations---------
SELECT TRANSACTION_TYPE_ID
INTO ln_trnasaction_type_id
FROM MTL_TRANSACTION_TYPES
WHERE TRANSACTION_TYPE_NAME='Direct Org Transfer'; --Subinventory Transfer
SELECT REASON_ID
INTO l_reason_id
FROM MTL_TRANSACTION_REASONS
WHERE REASON_NAME='LPN Attribute Updated';
/* SELECT inventory_item_id
-- ,segment1
,primary_uom_code
INTO l_item_id
,lv_uom_code
FROM mtl_system_items_b
WHERE 1=1
-- AND SEGMENT1 = 'CF055032102250022ATL111'
AND inventory_item_id = p_item_id
AND ORGANIZATION_ID = 125; */
SELECT INVENTORY_ITEM_ID
,PRIMARY_TRANSACTION_QUANTITY
,LOCATOR_ID
,TRANSACTION_UOM_CODE
,LOT_NUMBER
,LPN_ID
INTO ln_item_id
,ln_qty
,ln_source_locator_id
,lv_uom_code
,lv_lot_number
,ln_lpn_id
FROM MTL_ONHAND_QUANTITIES_DETAIL
WHERE LOT_NUMBER= p_lot_number;
DBMS_OUTPUT.PUT_LINE('Stage 2 Inserting Subinventory - transactions Interface');
BEGIN
INSERT INTO MTL_TRANSACTIONS_INTERFACE (transaction_interface_id,
transaction_header_id,
distribution_account_id,
inventory_item_id,
source_code,
source_header_id,
source_line_id,
-- transaction_source_name,
-- transaction_source_id,
process_flag,
transaction_mode,
transaction_quantity,
organization_id,
subinventory_code,
locator_id,
transfer_organization,
transfer_subinventory,
transfer_locator,
transaction_type_id,
transaction_date,
transaction_uom,
reason_id,
created_by,
creation_date,
last_updated_by,
CONTENT_LPN_ID, -- LPN_ID & TRANSFER_LPN_ID should not be used.
last_update_date)
VALUES (
ln_transaction_interface_id,
ln_transaction_interface_id,
66097,
ln_item_id,
'inv', --lv_source_code,
ln_transaction_interface_id,
ln_transaction_interface_id,
-- '',
-- '',
1,
3,
ln_qty,
125,
'FGI', --'FGI',
ln_source_locator_id, --4826, -- find_location (ln_organization_id,gv_reservation_subinv),
405, --125,
'FGI', --'STAGE', --p_new_subinv,
10918, --p_new_locator_id, -- 4498, -- 207find_location (ln_organization_id, p_subinv),
ln_trnasaction_type_id,
SYSDATE,
lv_uom_code,
l_reason_id, -- REASON_ID
-1,
SYSDATE,
-1,
ln_lpn_id,
SYSDATE);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE('Error in Interface ' || SQLERRM);
END;
DBMS_OUTPUT.PUT_LINE('Stage3 - Inserting data in LoT interface Table');
BEGIN
INSERT
INTO MTL_TRANSACTION_LOTS_INTERFACE (transaction_interface_id,
last_update_date,
last_updated_by,
creation_date,
created_by,
lot_number,
transaction_quantity,
status_id)
VALUES (ln_transaction_interface_id,
SYSDATE,
-1,
SYSDATE,
-1,
lv_lot_number,
ln_qty,
ln_status_id);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE('Error in Lot Interface ' || SQLERRM);
END;
COMMIT;
-- Call the Inventory Transaction Manager for the specific transaction
lv_return_value :=
inv_txn_manager_pub.process_transactions (
p_api_version => 1.0,
x_return_status => lv_pt_return_status,
x_msg_count => ln_msg_idx_cnt,
x_msg_data => lv_pt_msg_data,
x_trans_count => ln_trans_count,
p_table => 1,
p_header_id => ln_transaction_interface_id);
DBMS_OUTPUT.PUT_LINE(' Standard API Starts lv_pt_return_status: ' || lv_pt_return_status);
IF NVL (lv_pt_return_status, 'E') = 'E'
THEN
BEGIN
SELECT error_explanation
INTO lv_pt_msg_data
FROM mtl_transactions_interface
WHERE transaction_interface_id = ln_transaction_interface_id;
DBMS_OUTPUT.PUT_LINE(
' Error in call_subinv_transfer For Lot : '
|| lv_lot_number
|| ' - '
|| lv_pt_msg_data);
END;
-- x_errbuf := 'Error Occurred in inv_txn_manager_pub.process_transactions.. Error Details -' || lv_pt_msg_data;
DBMS_OUTPUT.PUT_LINE('Error in Material Transaction Processor: ');
RAISE re_exception;
END IF;
IF lv_pt_return_status = 'S'
THEN
DBMS_OUTPUT.PUT_LINE(
'Direct Org Transfer is done Successfully');
END IF;
EXCEPTION
WHEN re_exception
THEN
DBMS_OUTPUT.PUT_LINE('Custom exception: ' || SUBSTR(SQLERRM,1,150));
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Others Error: ' || SUBSTR(SQLERRM,1,150));
END;
Comments
Post a Comment