Direct Org Transfer of LPNs between WMS Enabled Organizations in Oracle apps R12.1.3

 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