Monday, 19 March 2018

Mass Additions Interface

                                                         Asset Interface

Data File:

CREATE TABLE APPS.XXORC_ASSETS_INSERT
(
  STG_ID                        NUMBER,
  ASSET_NUMBER                  VARCHAR2(50 BYTE),
  TAG_NUMBER                    VARCHAR2(50 BYTE),
  SERIAL_NUMBER                 VARCHAR2(50 BYTE),
  IN_USE_FLAG                   VARCHAR2(50 BYTE),
  NEW_USED                      VARCHAR2(50 BYTE),
  OWNED_LEASED                  VARCHAR2(50 BYTE),
  CURRENT_UNITS                 NUMBER,
  ASSET_DESCRIPTION             VARCHAR2(50 BYTE),
  ASSET_KEY_CCID                NUMBER,
  CATEGORY_ID                   NUMBER,
  ASSET_TYPE                    VARCHAR2(50 BYTE),
  SET_OF_BOOKS_ID               NUMBER,
  DATE_PLACED_IN_SERVICE        DATE,
  DEPRN_START_DATE              DATE,
  DEPRN_METHOD_CODE             VARCHAR2(50 BYTE),
  PRORATE_CONVENTION_CODE       VARCHAR2(50 BYTE),
  LIFE_IN_MONTHS                NUMBER,
  ORIGINAL_COST                 NUMBER,
  BOOK_TYPE_CODE                VARCHAR2(50 BYTE),
  UNITS_ASSIGNED                NUMBER,
  EXPENSE_CCID                  NUMBER,
  LOCATION_CCID                 NUMBER,
  INVOICE_LINE_NUMBER           NUMBER,
  AP_DISTRIBUTION_LINE_NUMBER   NUMBER,
  DESCRIPTION                   VARCHAR2(50 BYTE),
  PO_VENDOR_ID                  NUMBER,
  PO_NUMBER                     NUMBER,
  EMPLOYEE_NUM                  NUMBER,
  PAYABLES_BATCH_NAME           VARCHAR2(50 BYTE),
  FIXED_ASSETS_COST             NUMBER,
  DELETED_FLAG                  VARCHAR2(50 BYTE),
  BATCH_ID                      NUMBER,
  PAYABLES_CODE_COMBINATION_ID  NUMBER,
  CONCATENATED_SEG              VARCHAR2(50 BYTE),
  FEEDER_SYSTEM_NAME            VARCHAR2(50 BYTE),
  PAYABLES_COST                 NUMBER,
  INV_INDICATOR                 NUMBER,
  CREATION_DATE                 DATE,
  CREATED_BY                    NUMBER,
  LAST_UPDATE_DATE              DATE,
  LAST_UPDATED_BY               NUMBER,
  LAST_UPDATE_LOGIN             NUMBER,
  VENDOR_ID                     NUMBER,
  VENDOR_NAME                   VARCHAR2(50 BYTE),
  INVOICE_ID                    NUMBER,
  INVOICE_NUMBER                VARCHAR2(50 BYTE),
  ATTRIBUT1                     NUMBER,
  ATTRIBUT2                     NUMBER,
  ATTRIBUT3                     NUMBER
)

Insert Data Into Custom Table :

Insert into APPS.XXORC_ASSETS_INSERT
   (STG_ID, ASSET_NUMBER, TAG_NUMBER, SERIAL_NUMBER, IN_USE_FLAG, NEW_USED, OWNED_LEASED, CURRENT_UNITS, ASSET_DESCRIPTION, ASSET_KEY_CCID, CATEGORY_ID, ASSET_TYPE, SET_OF_BOOKS_ID, DATE_PLACED_IN_SERVICE, DEPRN_START_DATE, DEPRN_METHOD_CODE, PRORATE_CONVENTION_CODE, LIFE_IN_MONTHS, ORIGINAL_COST, BOOK_TYPE_CODE, UNITS_ASSIGNED, EXPENSE_CCID, LOCATION_CCID, INVOICE_LINE_NUMBER, AP_DISTRIBUTION_LINE_NUMBER, DESCRIPTION, PO_VENDOR_ID, PO_NUMBER, EMPLOYEE_NUM, PAYABLES_BATCH_NAME, FIXED_ASSETS_COST, DELETED_FLAG, BATCH_ID, PAYABLES_CODE_COMBINATION_ID, CONCATENATED_SEG, FEEDER_SYSTEM_NAME, PAYABLES_COST, INV_INDICATOR, CREATION_DATE, CREATED_BY, LAST_UPDATE_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN, VENDOR_ID, VENDOR_NAME, INVOICE_ID, INVOICE_NUMBER, ATTRIBUT1, ATTRIBUT2, ATTRIBUT3)
 Values
   (1, NULL, '6845412', '87542', 'YES', 
    'NEW', 'OWNED', 2, 'VIVEK CORP', 2, 
    33, 'CAPITALIZED', 1024, TO_DATE('09/30/2007 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('09/30/2007 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 
    'STL', 'MID-MONTH', 240, 50000, 'OPS CORP', 
    1, 17021, 2, 1, 1, 
    'MRF CORP', NULL, 962, NULL, 'SRT CORP', 
    2000, 'NO', 1000, 13528, NULL, 
    'ACK', 9000, 1, TO_DATE('03/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1013497, 
    TO_DATE('03/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1013497, 1013497, 1014, 'Consolidated Supplies', 
    NULL, '1176223', NULL, NULL, NULL);
Insert into APPS.XXORC_ASSETS_INSERT
   (STG_ID, ASSET_NUMBER, TAG_NUMBER, SERIAL_NUMBER, IN_USE_FLAG, NEW_USED, OWNED_LEASED, CURRENT_UNITS, ASSET_DESCRIPTION, ASSET_KEY_CCID, CATEGORY_ID, ASSET_TYPE, SET_OF_BOOKS_ID, DATE_PLACED_IN_SERVICE, DEPRN_START_DATE, DEPRN_METHOD_CODE, PRORATE_CONVENTION_CODE, LIFE_IN_MONTHS, ORIGINAL_COST, BOOK_TYPE_CODE, UNITS_ASSIGNED, EXPENSE_CCID, LOCATION_CCID, INVOICE_LINE_NUMBER, AP_DISTRIBUTION_LINE_NUMBER, DESCRIPTION, PO_VENDOR_ID, PO_NUMBER, EMPLOYEE_NUM, PAYABLES_BATCH_NAME, FIXED_ASSETS_COST, DELETED_FLAG, BATCH_ID, PAYABLES_CODE_COMBINATION_ID, CONCATENATED_SEG, FEEDER_SYSTEM_NAME, PAYABLES_COST, INV_INDICATOR, CREATION_DATE, CREATED_BY, LAST_UPDATE_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN, VENDOR_ID, VENDOR_NAME, INVOICE_ID, INVOICE_NUMBER, ATTRIBUT1, ATTRIBUT2, ATTRIBUT3)
 Values
   (1, NULL, '6845412', '87542', 'YES', 
    'NEW', 'OWNED', 2, 'VIVEK CORP', 2, 
    33, 'CAPITALIZED', 1024, TO_DATE('09/30/2007 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('09/30/2007 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 
    'STL', 'MID-MONTH', 240, 50000, 'OPS CORP', 
    1, 17021, 2, 1, 1, 
    'MRF CORP', NULL, 962, NULL, 'SRT CORP', 
    2000, 'NO', 1000, 13528, NULL, 
    'ACK', 9000, 1, TO_DATE('03/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1013497, 
    TO_DATE('03/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1013497, 1013497, 1014, 'Consolidated Supplies', 

    NULL, '1176223', NULL, NULL, NULL);

Like This U Can As Many Record :

Step 3:


CREATE OR REPLACE PACKAGE BODY APPS.xxHRS_assets_webadi_package
AS
   PROCEDURE xxHRS_load_procedure (
      p_stg_id                         NUMBER,
      p_asset_number                   VARCHAR2,
      p_tag_number                     VARCHAR2,
      p_serial_number                  VARCHAR2,
      p_in_use_flag                    VARCHAR2,
      p_new_used                       VARCHAR2,
      p_owned_leased                   VARCHAR2,
      p_current_units                  NUMBER,
      p_asset_description              VARCHAR2,
      p_asset_key_ccid                 NUMBER,
      p_category_id                    NUMBER,
      p_asset_type                     VARCHAR2,
      p_set_of_books_id                NUMBER,
      p_date_placed_in_service         DATE,
      p_deprn_start_date               DATE,
      p_deprn_method_code              VARCHAR2,
      p_prorate_convention_code        VARCHAR2,
      p_life_in_months                 NUMBER,
      p_original_cost                  NUMBER,
      p_book_type_code                 VARCHAR2,
      p_units_assigned                 NUMBER,
      p_expense_ccid                   NUMBER,
      p_location_ccid                  NUMBER,
      p_invoice_line_number            NUMBER,
      p_ap_distribution_line_number    NUMBER,
      p_description                    VARCHAR2,
      p_po_vendor_id                   NUMBER,
      p_po_number                      NUMBER,
      p_employee_num                   NUMBER,
      p_payables_batch_name            VARCHAR2,
      p_fixed_assets_cost              NUMBER,
      p_deleted_flag                   VARCHAR2,
      p_batch_id                       NUMBER,
      p_payables_code_combination_id   NUMBER,
      p_concatenated_seg               VARCHAR2,
      p_feeder_system_name             VARCHAR2,
      p_payables_cost                  NUMBER,
      p_inv_indicator                  NUMBER,
      creation_date                    DATE,
      created_by                       NUMBER,
      last_update_date                 DATE,
      last_updated_by                  NUMBER,
      last_update_login                NUMBER,
      p_vendor_id                      NUMBER,
      p_vendor_name                    VARCHAR2,
      p_invoice_id                     NUMBER,
      p_invoice_number                 VARCHAR2,
      p_attribut1                      NUMBER,
      p_attribut2                      NUMBER,
      p_attribut3                      NUMBER
      
   )
  
   IS
      l_error_message         VARCHAR2 (3000);
      l_error_code            VARCHAR2 (2) DEFAULT 'V';
      l_org_id                NUMBER;
      l_invoice_num           VARCHAR2 (60);
      l_vendor_id             NUMBER;
      l_code_combination_id   NUMBER;
      l_category_id           NUMBER;
      l_tag_number            NUMBER;
      l_serial_number         NUMBER;
      l_method_code           VARCHAR2 (80);
      l_prorate_convention    VARCHAR2 (80);
      l_life_in_months        NUMBER;
      l_payable_code_id       NUMBER;
      l_in_use_flag           VARCHAR2 (30);
      l_owned_leased          VARCHAR2 (30);
      l_person_id             NUMBER;
      PS_COUNT                          NUMBER;
      l_raise_error           EXCEPTION;
   BEGIN
      l_error_message := '';
      
      --Invoice Number Validations
----------------------------invoice validation-------------------------------------------------
--           BEGIN
--         if p_invoice_number is null then
--         L_ERROR_CODE :='E';
--          l_error_message :=
--                  l_error_message
--               || ','
--               || 'Invoice number Should Not Be Null ';
--            l_error_code := 'E';
--         end if;
--        begin
--         SELECT DISTINCT api.invoice_num
--           INTO l_invoice_num
--           FROM ap_invoices_all api
--          WHERE UPPER (api.invoice_num) = UPPER (p_invoice_number);
--           exception
--       when no_data_found then
--            NULL;
--         WHEN OTHERS
--         THEN
--l_error_code := 'E';
--            l_error_message :=
--                  l_error_message
--               || ','
--               || 'Other Errors with invoice number '
--               || SQLCODE
--               || SQLERRM;
--            
--      END;
--          IF l_invoice_num =p_invoice_number THEN
--- l_error_code := 'E';
--            l_error_message :=
--                  l_error_message
--               || ','
--               || 'Invoice number already exist in oracle ';
--           
--         END IF;
--      END; 
 ----------------invoice validation-------------------------------------------------
     l_invoice_num := NULL;

      BEGIN
         SELECT invoice_num
          INTO l_invoice_num
           FROM ap_invoices_all
          WHERE invoice_num = p_invoice_number
           AND 
            org_id = fnd_profile.VALUE ('ORG_ID');

         IF l_invoice_num IS NULL
         THEN
            l_error_message :=
               l_error_message || ','
               || ' Invoice number Should Not Be Null ';
            l_error_code := 'E';
         END IF;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            l_error_message :=
               l_error_message || ','
               || ' Please enter valid invoice number ';
            l_error_code := 'E';
         WHEN OTHERS
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || ' other exception for given invoice number '
               || SQLCODE
               || SQLERRM;
            l_error_code := 'E';
      END;
-----------------------invoice validation error-------------------------
      --Supplier Name Validation
      l_vendor_id := NULL;

      BEGIN
         SELECT distinct vendor_id
           INTO l_vendor_id
           FROM ap_suppliers aps
          WHERE (   UPPER (aps.vendor_name) = UPPER (p_vendor_name)
                 OR UPPER (aps.segment1) = UPPER (p_vendor_id)
                );
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            l_error_message :=
                            l_error_message || ',' || 'Supplier not defined ';
            l_error_code := 'E';
         WHEN TOO_MANY_ROWS
         THEN
            l_error_message :=
                   l_error_message || ',' || 'Too Many Records for Supplier ';
            l_error_code := 'E';
         WHEN OTHERS
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || 'Other Errors with Supplier '
               || SQLCODE
               || SQLERRM;
            l_error_code := 'E';
      END;

      --Category ID Validations
      l_category_id := NULL;

      BEGIN
         SELECT distinct category_id
          INTO l_category_id
           FROM fa_categories 
            where category_id=p_category_id; 
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || 'no data found for given Asset Category';
            l_error_code := 'E';
         WHEN OTHERS
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || ' others exception for given Asset Category '
               || SQLCODE
               || SQLERRM;
            l_error_code := 'E';
      END;

       --Tag Number Validations
--      BEGIN
--         SELECT tag_number
--           INTO l_tag_number
--           FROM fa_additions_b fab
--          WHERE UPPER (fab.tag_number) = UPPER (p_tag_number);

--         IF l_tag_number > 0
--         THEN
--            RAISE l_raise_error;
--         END IF;
--      EXCEPTION
--         WHEN l_raise_error
--         THEN
--            l_error_message :=
--               l_error_message || ','
--               || 'Tag Number Already Exist in Oracle ';
--            l_error_code := 'E';
--      END;
----------------------tag validation------------------
     begin        
  if p_tag_number is null then
         L_ERROR_CODE :='E';
          l_error_message :=
                  l_error_message
               || ','
               || 'Tag number Should Not Be Null ';
            l_error_code := 'E';
         end if;
         begin
         SELECT distinct tag_number
           INTO l_tag_number
           FROM fa_additions_b 
          WHERE UPPER (tag_number) = UPPER (p_tag_number);
exception
       when no_data_found then
           NULL;
         WHEN OTHERS
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || 'Other Errors with Tag number '
               || SQLCODE
               || SQLERRM;
            l_error_code := 'E';
      END;
          IF l_tag_number =p_tag_number THEN
           l_error_code := 'E';
            l_error_message :=
                  l_error_message
               || ','
               || 'Tag number already exist in oracle ';
         END IF;
         END;
       
      ---------------------tag----------------

      --Serial Number Validations
--      BEGIN
--         SELECT serial_number
--           INTO l_serial_number
--           FROM fa_additions_b fab
--          WHERE UPPER (serial_number) = UPPER (p_serial_number);

--         IF l_serial_number > 0
--         THEN
--            RAISE l_raise_error;
--         END IF;
--      EXCEPTION
--         WHEN l_raise_error
--         THEN
--            l_error_message :=
--                  l_error_message
--               || ','
--               || 'Serial Number Already Exist in Oracle ';
--            l_error_code := 'E';
--      END;  
 BEGIN
  if p_serial_number is null then
         L_ERROR_CODE :='E';
          l_error_message :=
                  l_error_message
               || ','
               || 'Serial number Should Not Be Null ';
            l_error_code := 'E';
            end if;
            begin
         SELECT distinct serial_number
           INTO l_serial_number
           FROM fa_additions_b 
          WHERE UPPER (serial_number) = UPPER (p_serial_number);
exception
       when no_data_found then
           NULL;
         WHEN OTHERS
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || 'Other Errors with Serial number '
               || SQLCODE
               || SQLERRM;
            l_error_code := 'E';
      END;
          IF l_serial_number =p_serial_number THEN
           l_error_code := 'E';
            l_error_message :=
                  l_error_message
               || ','
               || 'Serial number already exist in oracle ';
         END IF;
         END; 

      --validation of  Depreciation Method
      l_method_code := NULL;

      BEGIN
         SELECT DISTINCT method_code
           INTO l_method_code
           FROM fa_methods
          WHERE method_code = p_deprn_method_code;

         IF l_method_code IS NULL
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || ' Please enter valid DEPRN_METHOD_CODE';
            l_error_code := 'E';
         END IF;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            l_error_message :=
                  l_error_message || ',' || ' Please enter DEPRN_METHOD_CODES';
            l_error_code := 'E';
         WHEN OTHERS
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || ' Please enter DEPRN_METHOD_CODE'
               || SQLCODE
               || SQLERRM;
            l_error_code := 'E';
      END;

      --validation of prorate_convention_code
      l_prorate_convention := NULL;

      BEGIN
         SELECT DISTINCT prorate_convention_code
           INTO l_prorate_convention
           FROM fa_books
          WHERE prorate_convention_code = p_prorate_convention_code;

         IF l_prorate_convention IS NULL
         THEN
            l_error_message :=
                  l_error_message || ',' || ' Please PRORATE_CONVENTION_CODES';
            l_error_code := 'E';
         END IF;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            l_error_message :=
                  l_error_message || ',' || ' Please PRORATE_CONVENTION_CODE NO DATA';
            l_error_code := 'E';
         WHEN OTHERS
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || ' Please PRORATE_CONVENTION_CODE'
               || SQLCODE
               || SQLERRM;
            l_error_code := 'E';
      END;

      --Validation for LIFE_IN_MONTHS
      l_life_in_months := NULL;

      BEGIN
         SELECT DISTINCT life_in_months
           INTO l_life_in_months
           FROM fa_books
          WHERE life_in_months = p_life_in_months;

         IF l_life_in_months IS NULL
         THEN
            l_error_message :=
               l_error_message || ','
               || '  LIFE_IN_MONTHS not be null ';
            l_error_code := 'E';
         END IF;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            l_error_message :=
               l_error_message || ',' || ' Please enter valid LIFE_IN_MONTHS';
            l_error_code := 'E';
         WHEN OTHERS
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || ' Please enter valid LIFE_IN_MONTHS'
               || SQLCODE
               || SQLERRM;
            l_error_code := 'E';
      END;

      --Validation of PAYABLES_CODE_COMBINATION_ID
      l_payable_code_id := NULL;

      BEGIN
         SELECT code_combination_id
           INTO l_payable_code_id
           FROM gl_code_combinations_kfv
          WHERE code_combination_id = p_payables_code_combination_id;
           IF l_payable_code_id IS NULL
         THEN
            l_error_message :=
               l_error_message || ','
               || 'payable code not be null ';
            l_error_code := 'E';
         END IF;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            l_error_message :=
                          l_error_message || ',' || 'Enter a Valid Segments ';
            l_error_code := 'E';
         WHEN TOO_MANY_ROWS
         THEN
            l_error_message := l_error_message || ',' || 'Too Many Segments';
            l_error_code := 'E';
         WHEN OTHERS
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || 'Other Errors with Segments'
               || SQLCODE
               || SQLERRM;
            l_error_code := 'E';
      END;

      --Validation of In Use Flag
      l_in_use_flag := NULL;

      BEGIN
         SELECT in_use_flag
           INTO l_in_use_flag
           FROM fa_additions
          WHERE UPPER (in_use_flag) = UPPER (p_in_use_flag) AND ROWNUM <= 1;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || 'no data found for given FLAG';
            l_error_code := 'E';
         WHEN OTHERS
         THEN
            l_error_message :=
                  l_error_message
               || ','
               || ' others exception for given FLAG '
               || SQLCODE
               || SQLERRM;
            l_error_code := 'E';
      END;

--      --Validation of Own Leased
--      l_owned_leased := NULL;

--      BEGIN
--         SELECT owned_leased
--           INTO l_owned_leased
--           FROM fa_additions fa, fa_asset_invoices fai, ap_invoices_all aia
--          WHERE 1 = 1
--            AND fa.asset_id = fai.asset_id
--            AND fai.invoice_id = aia.invoice_id
--            AND aia.invoice_num = l_invoice_num
--            AND owned_leased = p_owned_leased
--            AND ROWNUM <= 1;
--      EXCEPTION
--         WHEN NO_DATA_FOUND
--         THEN
--            l_error_message :=
--                  l_error_message
--               || ','
--               || 'no data found for given owned_leased';
--            l_error_code := 'E';
--         WHEN OTHERS
--         THEN
--            l_error_message :=
--                  l_error_message
--               || ','
--               || ' others exception for given owned_leased '
--               || SQLCODE
--               || SQLERRM;
--            l_error_code := 'E';
--      END;

      l_person_id := NULL;

      --Validations of Employee number
--      BEGIN
--         SELECT papf.person_id
--           INTO l_person_id
--           FROM per_all_people_f papf
--          WHERE papf.employee_number = p_employee_num;
--      EXCEPTION
--         WHEN NO_DATA_FOUND
--         THEN
--            l_error_message :=
--                   l_error_message || ',' || 'Enter a Valid employee number ';
--            l_error_code := 'E';
--         WHEN OTHERS
--         THEN
--            l_error_message :=
--                  l_error_message
--               || ','
--               || 'Other Errors with employee number '
--               || SQLCODE
--               || SQLERRM;
--            l_error_code := 'E';
--            DBMS_OUTPUT.put_line (l_person_id);
--      END;

      --INSERTING RECORDS INTO STAGING TABLE
    BEGIN
    SELECT COUNT(STG_ID) 
    INTO PS_COUNT 
     FROM XXORC_ASSETS_INSERT;
    if l_error_code != 'E' 
    AND PS_COUNT>0 
    then
         INSERT INTO XXORC_ASSETS_INSERT
                   VALUES (p_stg_id                         
                          ,p_asset_number                   
                          ,p_tag_number                     
                          ,p_serial_number                  
                          ,p_in_use_flag                    
                          ,p_new_used                       
                          ,p_owned_leased                   
                          ,p_current_units                  
                          ,p_asset_description              
                          ,p_asset_key_ccid                 
                          ,p_category_id                    
                          ,p_asset_type                     
                          ,p_set_of_books_id                
                          ,p_date_placed_in_service         
                          ,p_deprn_start_date               
                          ,p_deprn_method_code              
                          ,p_prorate_convention_code        
                          ,p_life_in_months                 
                          ,p_original_cost                  
                          ,p_book_type_code                 
                          ,p_units_assigned                 
                          ,p_expense_ccid                   
                          ,p_location_ccid                  
                          ,p_invoice_line_number            
                          ,p_ap_distribution_line_number    
                          ,p_description                    
                          ,p_po_vendor_id                   
                          ,p_po_number                      
                          ,p_employee_num                   
                          ,p_payables_batch_name            
                          ,p_fixed_assets_cost              
                          ,p_deleted_flag                   
                          ,p_batch_id                       
                          ,l_payable_code_id  
                          ,p_concatenated_seg               
                          ,p_feeder_system_name             
                          ,p_payables_cost                  
                          ,p_inv_indicator                  
                          ,creation_date                    
                          ,created_by                       
                          ,last_update_date                 
                          ,last_updated_by                  
                          ,last_update_login                
                          ,p_vendor_id                      
                          ,p_vendor_name                    
                          ,p_invoice_id                     
                          ,l_invoice_num                 
                          ,p_attribut1                      
                          ,p_attribut2                      
                          ,p_attribut3); 
      commit;
      end if;
    EXCEPTION
    WHEN OTHERS
         THEN
            raise_application_error (-20002,
                                     'Error -' || SQLCODE || '-' || SQLERRM
                                    );
                                    END;  
      IF (l_error_code = 'E')
      THEN
         raise_application_error (-20102, SUBSTR (l_error_message, 2));
      end if;
--          IF(l_error_code !='E')
--         THEN
--         UPDATE XXORC_ASSETS_INSERT SET Upl=1;
--         ELSE
--         UPDATE XXORC_ASSETS_INSERT SET Upl=NULL; 
--           
                          
   END;

END;

Step 4: Transfer From Custom table To Base Table 



CREATE OR REPLACE PACKAGE BODY XXHRS_assets_src_line_package
AS
-- +================================================================================+
-- |                           +
-- +================================================================================+
-- | Project        : FIXED ASSET                                                   |
-- | Created By     : Vivek                                                  |
-- | $Id: xx_assets_src_line_package.pkb                                            |
-- |                                                                                |
-- | Description : Package for                                                      |
-- |               Creating a Fixed Asset                                           |
-- |                                                                                |
-- |                                                                                |
-- |                                                                                |
-- |Version   Date         Author           Remarks                                 |
-- +=======   ===========  =============    ========================================+
-- |1.0       21-FEB-2018  Vivek     Initial Version.                        |
-- |                                                                                |
--+=================================================================================+
   PROCEDURE LOG (p_message IN VARCHAR2)
   IS
   BEGIN
      fnd_file.put_line (fnd_file.LOG, p_message);
      DBMS_OUTPUT.put_line (p_message);
   EXCEPTION
      WHEN OTHERS
      THEN
         fnd_file.put_line (fnd_file.LOG, 'Check Error In LOG:' || SQLERRM);
         DBMS_OUTPUT.put_line ('Check Error In LOG:' || SQLERRM);
   END;

   PROCEDURE XXHRS_asset_src_line_procedure (
      p_errbuf    OUT      VARCHAR2,
      p_retcode   OUT      VARCHAR2,
      p_stg_id    IN       NUMBER
   )
   AS
      CURSOR c1
      IS
         SELECT *
           FROM XXORC_ASSETS_INSERT
          WHERE stg_id = p_stg_id;

      l_trans_rec             fa_api_types.trans_rec_type;
      l_dist_trans_rec        fa_api_types.trans_rec_type;
      l_asset_hdr_rec         fa_api_types.asset_hdr_rec_type;
      l_asset_desc_rec        fa_api_types.asset_desc_rec_type;
      l_asset_cat_rec         fa_api_types.asset_cat_rec_type;
      l_asset_type_rec        fa_api_types.asset_type_rec_type;
      l_asset_hierarchy_rec   fa_api_types.asset_hierarchy_rec_type;
      l_asset_fin_rec         fa_api_types.asset_fin_rec_type;
      l_asset_deprn_rec       fa_api_types.asset_deprn_rec_type;
      l_asset_dist_rec        fa_api_types.asset_dist_rec_type;
      l_asset_dist_tbl        fa_api_types.asset_dist_tbl_type;
      l_inv_tbl               fa_api_types.inv_tbl_type;
      l_inv_rate_tbl          fa_api_types.inv_rate_tbl_type;
      l_inv_rec_type          fa_api_types.inv_rec_type;
      l_return_status         VARCHAR2 (1);
      l_mesg_count            NUMBER;
      l_mesg                  VARCHAR2 (4000);
      l_user_id               NUMBER;
      n                       NUMBER                                := 1;
      l_stg_id                NUMBER;
   BEGIN
      fnd_file.put_line (fnd_file.LOG, 'setting the context');
      LOG ('==========PROGRAM STARTS HERE===========');
--         mo_global.init ('FA');
      fnd_global.apps_initialize (user_id           => fnd_global.user_id,
                                  --1013497 ,  --l_user_id
                                  resp_id           => fnd_global.resp_id,
                                  --20563   --l_resp_id = Fixed Asset Manager
                                  resp_appl_id      => fnd_global.resp_appl_id
                                 -- 140    --l_resp_app_id  -- 222);
                                 );
--        mo_global.set_policy_context ('S', 204);
      mo_global.set_policy_context ('S', fnd_profile.VALUE ('ORG_ID'));
      DBMS_OUTPUT.ENABLE (10000000);
      fa_srvr_msg.init_server_message;

      --Stage ID Validations
      BEGIN
         l_stg_id := NULL;

         SELECT COUNT (stg_id)
           INTO l_stg_id
           FROM xx_fixed_assets_stg
          WHERE stg_id = p_stg_id AND status = 'Y';

         IF l_stg_id > 0
         THEN
            LOG (p_stg_id || '  STAGE ID  already Processed');
         END IF;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            LOG (l_stg_id || 'STAGE ID NOT FOUND');
         WHEN OTHERS
         THEN
            LOG ('STAGE ID NOT FOUND' || SQLERRM);
      END;

      BEGIN
         FOR r1 IN c1
         LOOP
            -- desc info
            l_asset_desc_rec.asset_number := r1.asset_number;
            l_asset_desc_rec.tag_number := r1.tag_number;
            l_asset_desc_rec.serial_number := r1.serial_number;
            l_asset_desc_rec.in_use_flag := r1.in_use_flag;
            l_asset_desc_rec.new_used := r1.new_used;
            l_asset_desc_rec.owned_leased := r1.owned_leased;
            l_asset_desc_rec.current_units := r1.current_units;
            l_asset_desc_rec.description := r1.asset_description;
            l_asset_desc_rec.asset_key_ccid := r1.asset_key_ccid;
            -- cat info
            -- Valid Value in FA_CATEGORIES
            l_asset_cat_rec.category_id := r1.category_id;
            --type info
            l_asset_type_rec.asset_type := r1.asset_type;
            -- Asset Financial Information --
            l_asset_fin_rec.date_placed_in_service :=
                                                    r1.date_placed_in_service;
            l_asset_fin_rec.deprn_start_date := r1.deprn_start_date;
            l_asset_fin_rec.life_in_months := r1.life_in_months;
            l_asset_fin_rec.original_cost := r1.original_cost;
            --l_asset_fin_rec.COST := r1.costs;
            -- deprn info
            l_asset_deprn_rec.set_of_books_id := r1.set_of_books_id;
            -- book / trans info
            -- Valid value in FA_BOOK_CONTROLS
            l_asset_hdr_rec.book_type_code := r1.book_type_code;
            -- distribution info
            l_asset_dist_rec.units_assigned := r1.units_assigned;
            -- Valid Record from GL Code cominations with record type = 'E' (Expense)
            l_asset_dist_rec.expense_ccid := r1.expense_ccid;
            -- Valid Value in FA Locations
            l_asset_dist_rec.location_ccid := r1.location_ccid;
           -- l_asset_dist_rec.assigned_to := r1.assigned_to;
            l_asset_dist_tbl (1) := l_asset_dist_rec;
            ----Inv Information
          --  l_inv_rec_type.invoice_number := r1.invoice_num;
           -- l_inv_rec_type.attribute1 := r1.attribute1;
          --  l_inv_rec_type.attribute2 := r1.attribute2;
          --  l_inv_rec_type.attribute3 := r1.attribute3;
            l_inv_rec_type.invoice_id := r1.invoice_id;
            l_inv_rec_type.invoice_line_number := r1.invoice_line_number;
            l_inv_rec_type.ap_distribution_line_number :=
                                               r1.ap_distribution_line_number;
            l_inv_rec_type.description := r1.description;
            l_inv_rec_type.po_vendor_id := r1.po_vendor_id;
            l_inv_rec_type.po_number := r1.po_number;
            l_inv_rec_type.payables_batch_name := r1.payables_batch_name;
            l_inv_rec_type.fixed_assets_cost := r1.fixed_assets_cost;
            l_inv_rec_type.deleted_flag := r1.deleted_flag;
            l_inv_rec_type.create_batch_id := r1.batch_id;
            l_inv_rec_type.payables_code_combination_id :=
                                              r1.payables_code_combination_id;
            l_inv_rec_type.feeder_system_name := r1.feeder_system_name;
            l_inv_rec_type.payables_cost := r1.payables_cost;
            l_inv_rec_type.inv_indicator := r1.inv_indicator;
            l_inv_tbl (n) := l_inv_rec_type;
            n := n + 1;
            LOG ('Invoice_ID: ' || l_inv_rec_type.invoice_id);
            LOG ('Invoice_Number: ' || l_inv_rec_type.invoice_number);
         END LOOP;

         -- call the api
         fa_addition_pub.do_addition
                            (
                             -- std parameters
                             p_api_version               => 1.0,
                             p_init_msg_list             => fnd_api.g_false,
                             p_commit                    => fnd_api.g_false,
                             p_validation_level          => fnd_api.g_valid_level_full,
                             p_calling_fn                => NULL,
                             x_return_status             => l_return_status,
                             x_msg_count                 => l_mesg_count,
                             x_msg_data                  => l_mesg,
                             -- api parameters
                             px_trans_rec                => l_trans_rec,
                             px_dist_trans_rec           => l_dist_trans_rec,
                             px_asset_hdr_rec            => l_asset_hdr_rec,
                             px_asset_desc_rec           => l_asset_desc_rec,
                             px_asset_type_rec           => l_asset_type_rec,
                             px_asset_cat_rec            => l_asset_cat_rec,
                             px_asset_hierarchy_rec      => l_asset_hierarchy_rec,
                             px_asset_fin_rec            => l_asset_fin_rec,
                             px_asset_deprn_rec          => l_asset_deprn_rec,
                             px_asset_dist_tbl           => l_asset_dist_tbl,
                             px_inv_tbl                  => l_inv_tbl
                            );
         DBMS_OUTPUT.put_line (l_return_status);
         --dump messages
         l_mesg_count := fnd_msg_pub.count_msg;

         IF l_mesg_count > 0
         THEN
            l_mesg :=
                  CHR (10)
               || SUBSTR (fnd_msg_pub.get (fnd_msg_pub.g_first,
                                           fnd_api.g_false
                                          ),
                          1,
                          250
                         );
            DBMS_OUTPUT.put_line (l_mesg);

            FOR i IN 1 .. (l_mesg_count - 1)
            LOOP
               l_mesg :=
                  SUBSTR (fnd_msg_pub.get (fnd_msg_pub.g_next,
                                           fnd_api.g_false),
                          1,
                          250
                         );
               DBMS_OUTPUT.put_line (l_mesg);
            END LOOP;

            fnd_msg_pub.delete_msg ();
         END IF;

         IF (l_return_status <> fnd_api.g_ret_sts_success)
         THEN
            LOG ('FAILURE');
         ELSE
            LOG ('SUCCESS');
            LOG ('THID  ' || TO_CHAR (l_trans_rec.transaction_header_id));
            LOG ('STG_ID  ' || p_stg_id);
            LOG ('ASSET_ID  ' || TO_CHAR (l_asset_hdr_rec.asset_id));
            LOG ('ASSET_NUMBER  ' || l_asset_desc_rec.asset_number);

            UPDATE xx_fixed_assets_stg
               SET status = 'Y'
             WHERE stg_id = p_stg_id;
         END IF;

         COMMIT;
      END xx_assets_src_line_procdure;
   END;
END;

Effected Tables:

fa_additions_b
fa_books 
Note :(asset_number,tag_num,serial_num take sequences)

                                                               Any Queries Mail Me vivekexpertize@gmail.com

Monday, 12 March 2018

Query For Drop More Than One Constraint Using Procedure

                             Query For Drop More Than One Constraint Using Procedure


CREATE OR REPLACE PROCEDURE KBR_CONSTRAINT_DROP(L_TABLE_NAME VARCHAR2)
AS
L_ROWNUM NUMBER;
L_CONSTRA VARCHAR2(50);
L_OBJECT_NAME VARCHAR2(50);
L_CONSTRATS VARCHAR2(30);
BEGIN
BEGIN
L_ROWNUM :=1;
L_CONSTRATS :=' CONSTRAINT';
END;
BEGIN
FOR KBR IN 1..5
LOOP
L_ROWNUM :=1;
SELECT CONSTRAINT_NAME INTO L_CONSTRA
 FROM user_cons_columns
WHERE table_name =L_TABLE_NAME 
AND COLUMN_NAME IN ('LAST_UPDATE_DATE' ,'LAST_UPDATED_BY','CREATION_DATE','CREATED_BY','LAST_UPDATE_LOGIN')AND ROWNUM=L_ROWNUM;
EXECUTE IMMEDIATE 'ALTER TABLE '|| L_TABLE_NAME|| ' DROP '||L_CONSTRATS||' '||L_CONSTRA;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('ERROR');
END;
END;



EXEC KBR_CONSTRAINT_DROP('XXHRS_EMP_DATA')

Friday, 9 March 2018

XML Publisher Report from XML Data Template(SQL Query)

                        XML Publisher Report from XML Data Template(SQL Query)




<?xml version="1.0"?><dataTemplate version="1.0" name="XXHRCUSTOMER"><properties></properties><parameters><parameter name="p_customer_id" datatype="NUMBER"> </parameter></parameters><dataQuery><sqlStatement name="XXHRCUSTSLT"><![CDATA[SELECT DISTINCT  (HP.PARTY_ID) CUSTOMER_ID,HCP.CUST_ACCOUNT_ID CUST_ACCOUNT_ID,HP.PARTY_NAME CUSTOMER_NAME,ARCPV.profile_class_name Profile_Name,(HP.ADDRESS1||','||HP.ADDRESS2||','||HP.ADDRESS3||','||HP.ADDRESS4 ||','||HP.CITY||','||HP.STATE||','||HP.COUNTRY||','||HP.POSTAL_CODE)ADDRESS, HP.PRIMARY_PHONE_NUMBER CONTACT_NUMBER,HP.EMAIL_ADDRESS EMAIL,HP.URL CUST_WEBSITE,HCA.ACCOUNT_NAME ACCOUNT_NAME,HCP.DISCOUNT_TERMS DISCOUNT_TERMS,HCP.DUNNING_LETTERS DUNNING_LETTERS,HCP.INTEREST_CHARGES INTEREST_CHARGES,HRS.OBJECT_TYPE OBJECT_TYPE,HPP.PERSON_NAME PERSON_NAME,IEPA.PAYMENT_FUNCTION PAYMENT_FUNCTION,IPIUA.INSTRUMENT_TYPE PAYMENT_TYPE,IEBA.BANK_ACCOUNT_NAME HOLDER_NAME,IEBA.BANK_ACCOUNT_NUM ACCOUNT_NUMBER,IEBA.CURRENCY_CODE BANK_ACCEPT_CURRENCY,HLS.CITY BILL_TO,HLS.CITY SHIP_TOFROM HZ_PARTIES HP,hz_party_sites hps,HZ_LOCATIONS HLS,HZ_CUST_ACCOUNTS HCA,HZ_CUSTOMER_PROFILES HCP,AR_CUSTOMER_PROFILE_CLASSES_V ARCPV,HZ_RELATIONSHIPS HRS,hz_person_profiles HPP,IBY_EXTERNAL_PAYERS_ALL IEPA,IBY_PMT_INSTR_USES_ALL IPIUA,IBY_EXT_BANK_ACCOUNTS IEBAwhere HP.PARTY_ID=HCA.PARTY_IDAND HP.PARTY_ID=HPS.PARTY_IDAND HPS.LOCATION_ID=HLS.LOCATION_IDAND HCA.CUST_ACCOUNT_ID=HCP.CUST_ACCOUNT_IDAND HCP.COLLECTOR_ID=ARCPV.COLLECTOR_IDAND HCA.PARTY_ID=HRS.SUBJECT_IDAND HRS.OBJECT_ID=HPP.PARTY_IDAND HCA.CUST_ACCOUNT_ID=IEPA.CUST_ACCOUNT_IDAND IEPA.EXT_PAYER_ID=IPIUA.EXT_PMT_PARTY_IDAND IPIUA.INSTRUMENT_ID=IEBA.EXT_BANK_ACCOUNT_ID(+)AND HP.party_id=:p_customer_id ]]></sqlStatement></dataQuery><dataStructure><group name="XXHRCUSTSLT" datatype="varchar2" source="XXHRCUSTSLT"><element name="CUSTOMER_ID" value="CUSTOMER_ID"/><element name="CUST_ACCOUNT_ID" value="CUST_ACCOUNT_ID"/><element name="CUSTOMER_NAME" value="CUSTOMER_NAME"/><element name="Profile_Name" value="Profile_Name"/><element name="ADDRESS" value="ADDRESS"/><element name="CONTACT_NUMBER" value="CONTACT_NUMBER"/><element name="EMAIL" value="EMAIL"/><element name="CUST_WEBSITE" value="CUST_WEBSITE"/><element name="ACCOUNT_NAME" value="ACCOUNT_NAME"/><element name="DISCOUNT_TERMS" value="DISCOUNT_TERMS"/><element name="DUNNING_LETTERS" value="DUNNING_LETTERS"/><element name="INTEREST_CHARGES" value="INTEREST_CHARGES"/><element name="OBJECT_TYPE" value="OBJECT_TYPE"/><element name="PERSON_NAME" value="PERSON_NAME"/><element name="PAYMENT_FUNCTION" value="PAYMENT_FUNCTION"/><element name="PAYMENT_TYPE" value="PAYMENT_TYPE"/><element name="HOLDER_NAME" value="HOLDER_NAME"/><element name="ACCOUNT_NUMBER" value="ACCOUNT_NUMBER"/><element name="BANK_ACCEPT_CURRENCY" value="BANK_ACCEPT_CURRENCY"/><element name="BILL_TO" value="BILL_TO"/><element name="SHIP_TO" value="SHIP_TO"/></group></dataStructure></dataTemplate>

Wednesday, 7 March 2018

Concurrent Program WAIT until completion of another Concurrent Program

To make Concurrent Program WAIT until completion of another Concurrent Program:



CREATE OR REPLACE PROCEDURE apps.xxorc_test_backs (
   p_errbuff
               OUT   VARCHAR2,
   p_retcode
               OUT   VARCHAR2,
   f_arg1            NUMBER
                           ,
   s_arg1            VARCHAR2
                             ,
   s_arg2            VARCHAR2
                             ,
   s_arg3            VARCHAR2
                             ,
   s_arg4            VARCHAR2
                             ,
   s_arg5            VARCHAR2


)
AS
   req_id                NUMBER;


   RESULT                BOOLEAN;
   lv_request_id         NUMBER;


   lc_phase              VARCHAR2 (50);
   lc_status             VARCHAR2 (50);
   lc_dev_phase          VARCHAR2 (50);
   lc_dev_status         VARCHAR2 (50);
   lc_message            VARCHAR2 (50);
   l_req_return_status   BOOLEAN;
BEGIN
   fnd_global.apps_initialize (1013497, 50554, 200)

                                                   ;
   RESULT := fnd_request.set_mode (TRUE)

                                        ;
   req_id :=
      fnd_request.submit_request (application      => 'AR',
                                  program          => 'CPRXLS',
                                  start_time       => TO_CHAR (SYSDATE,
                                                               'DD-MON-YYYY'
                                                              ),
                                  sub_request      => FALSE,
                                  argument1        => f_arg1
                                 )

                                  ;
   COMMIT;

   IF lv_request_id = 0
   THEN
      DBMS_OUTPUT.put_line (   'Request Not Submitted due to "'
                            || fnd_message.get

                            || '".'
                           );
   ELSE
      DBMS_OUTPUT.put_line
         (   'The Program VIVEKPROGRAM_1 submitted successfully – Request id :'
          || req_id
         );
   END IF;

   IF req_id > 0
   THEN
      LOOP
         l_req_return_status :=
            fnd_concurrent.wait_for_request
               (request_id      => req_id,
                INTERVAL        => 5
                           --interval Number of seconds to wait between checks
                                    ,
                max_wait        => 60
                --Maximum number of seconds to wait for the request completion
                                     -- out arguments
            ,
                phase           => lc_phase,
                status          => lc_status,
                dev_phase       => lc_dev_phase,
                dev_status      => lc_dev_status,
                MESSAGE         => lc_message
               )

                ;
         EXIT WHEN UPPER (lc_phase) = 'COMPLETED'
               OR UPPER (lc_status) IN ('CANCELLED', 'ERROR', 'TERMINATED');
      END LOOP;

      --

      --
      IF UPPER (lc_phase) = 'COMPLETED' AND UPPER (lc_status) = 'ERROR'
      THEN
         DBMS_OUTPUT.put_line
               (   'The XX_PROGRAM_1 completed in error. Oracle request id: '
                || req_id
                || ' '
                || SQLERRM
               );
      ELSIF UPPER (lc_phase) = 'COMPLETED' AND UPPER (lc_status) = 'NORMAL'
      THEN
         DBMS_OUTPUT.put_line
                   (   'The XX_PROGRAM_1 request successful for request id: '
                    || req_id
                   );

         --
         BEGIN
            fnd_global.apps_initialize (1013497, 50554, 200)

                                                            ;
            RESULT := fnd_request.set_mode (TRUE)

                                                 ;
            lv_request_id :=
               fnd_request.submit_request
                                       (application      => 'AR',
                                        program          => 'XXTFS',
                                        -- description   => 'VIVEK_PROGRAM_2',
                                        start_time       => TO_CHAR
                                                                (SYSDATE,
                                                                 'DD-MON-YYYY'
                                                                ),
                                        sub_request      => FALSE,
                                        argument1        => s_arg1,
                                        argument2        => s_arg2,
                                        argument3        => s_arg3,
                                        argument4        => s_arg4,
                                        argument5        => s_arg5
                                       )

                                        ;
            
            COMMIT;
         EXCEPTION
            WHEN OTHERS
            THEN
               DBMS_OUTPUT.put_line
                    (   'OTHERS exception while submitting VIVEK_PROGRAM_2: '
                     || SQLERRM
                    );

         END;
      ELSE
         DBMS_OUTPUT.put_line
                   (   'The XX_PROGRAM_1 request failed. Oracle request id: '
                    || req_id
                    || ' '
                    || SQLERRM
                   );
      END IF;
   END IF;
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line
                    (   'OTHERS exception while submitting VIVEK_PROGRAM_1: '
                     || SQLERRM
                    );
      COMMIT;

END
   ;


Any Queries Mail Me vivekexpertize@gmail.com

Copy From One directory to another directory In oracle

                            ----Copy From One directory to another directory -----

Two method To Transfer  :

Step 1: Utl_File.Frename

CREATE OR REPLACE DIRECTORY XXHRS_SOURCES_DIR AS '/u01/E-BIS/inst/apps/VISION/logs/appl/conc/out'

CREATE OR REPLACE DIRECTORY XXHRS_TARGET_DIR AS '/HOME/VIVEK'

CREATE OR REPLACE PROCEDURE APPS.XXORC_TRANSFER(ERRBUFF VARCHAR2,RETCODE NUMBER,P_REQUEST_ID NUMBER)
AS
L_FILE_NAME  VARCHAR2(80);
l_format VARCHAR2(60);
BEGIN
SELECT (SUBSTR
         (OUTFILE_NAME,
            INSTR
               (OUTFILE_NAME,
                '/',
                -1
               )
          + 1
         )) INTO L_FILE_NAME
FROM FND_CONCURRENT_REQUESTS WHERE REQUEST_ID=P_REQUEST_ID;
SELECT (SUBSTR(L_FILE_NAME,1,(INSTR(L_FILE_NAME,'.'))-1)||'.xls') into l_format FROM DUAL;
UTL_FILE.FRENAME ('SOURCES_OUT_DIR',
L_FILE_NAME,
'TARGET_DIR',
l_format,
TRUE);
END;

Step 2: Shell Script

Shell Script Code---Click Here to View Sample Code

#Shell Script Code Change Ur Code As Per Ur requiremnet
P_SOURCE_FILE="$5"
P_SOURCE_DIR="$6"
P_TARGET_FILE="$7"
P_TARGET_DIR="$8"
P_TRANSFER_MODE="$9"
SrcFilePath=$P_SOURCE_DIR/$P_SOURCE_FILE
TgtFilePath=$P_TARGET_DIR/$P_TARGET_FILE
#ensure the file exists
if [ ! -f $SrcFilePath ]; then
  echo "ERROR: Source file does not exist: $SrcFilePath" >> $P_LOGFILE
  exit 40
fi
#ensure the target direcotry exists
if [ ! -d $P_TARGET_DIR ]; then
  echo "ERROR: Target directory does not exist: $P_TARGET_DIR"   >> $P_LOGFILE
  exit 50
fi
# copy and rename the file
if [ "$P_TRANSFER_MODE" = "COPY" ]; then
  cp $SrcFilePath $TgtFilePath
elif [ "$P_TRANSFER_MODE" = "MOVE" ]; then
  mv $SrcFilePath $TgtFilePath
else
  echo "ERROR: Invalid transfer type specified: $P_TRANSFER_MODE" >> $P_LOGFILE
  exit 60
fi



Any Queries Mail Me vivekexpertize@gmail.com


Mtl Material Transaction Interface

                              ------Inventory Transaction Interface-------
Step 1.
CREATE  TABLE XXINV_STG1(
SUBINVENTORY_CODE VARCHAR2(10)
,TRANSACTION_DATE DATE
,TRANSACTION_QUANTITY NUMBER
,TRANSACTION_UOM VARCHAR2(3)
,PRIMARY_QUANTITY NUMBER
,SOURCE_CODE VARCHAR2(30)
,SOURCE_LINE_ID NUMBER
,source_header_id NUMBER
,process_flag NUMBER(1)
,lock_flag  NUMBER(1)
,RCV_TRANSACTION_ID NUMBER
,LAST_UPDATE_DATE DATE
,LAST_UPDATED_BY NUMBER
,CREATION_DATE DATE
,CREATED_BY NUMBER
,INVENTORY_ITEM_ID NUMBER
,ORGANIZATION_ID NUMBER
,TRANSACTION_TYPE_ID NUMBER
,TRANSACTION_ACTION_ID NUMBER
,TRANSACTION_SOURCE_TYPE_ID NUMBER
,TRANSACTION_MODE NUMBER);

Load data Into Custom Table From Flat File Using Sql Loader Or Webadi Concept

Step 2. Data File
Heading
SUBINVENTORY_CODE,TRANSACTION_DATE,TRANSACTION_QUANTITY,TRANSACTION_UOM,PRIMARY_QUANTITY,SOURCE_CODE,SOURCE_LINE_ID,source_header_id,process_flag,lock_flag,RCV_TRANSACTION_ID,LAST_UPDATE_DATE,LAST_UPDATED_BY,CREATION_DATE,CREATED_BY,INVENTORY_ITEM_ID,ORGANIZATION_ID,TRANSACTION_TYPE_ID,TRANSACTION_ACTION_ID,TRANSACTION_SOURCE_TYPE_ID,TRANSACTION_MODE
Stores, ,-7,Ea,100,Inventory,90,60,1,2,,,1013497,,1013497,222981,204,32,27,13,3
Stores, ,-7,Ea,100,Inventory,90,60,1,2,,,1013497,,1013497,222981,204,32,27,13,3
Stores, ,-7,Ea,100,Inventory,90,60,1,2,,,1013497,,1013497,222981,204,32,27,13,3
Stores, ,-7,Ea,100,Inventory,90,60,1,2,,,1013497,,1013497,222981,204,32,27,13,3
Stores, ,-7,Ea,100,Inventory,90,60,1,2,,,1013497,,1013497,222981,204,32,27,13,3
Stores, ,-7,Ea,100,Inventory,90,60,1,2,,,1013497,,1013497,222981,204,32,27,13,3

Step 3. Flat File

OPTIONS(SKIP=1)
LOAD DATA
INFILE '/u01/E-BIZ/apps/apps_st/appl/inv/12.0.0/bin/XXORC_Staging_Data_File.txt'
TRUNCATE
INTO TABLE XXORC_Inv_Staging_Tab
FIELDS TERMINATED BY ','
optionally enclosed by '"'
TRAILING NULLCOLS
(
SUBINVENTORY_CODE
,TRANSACTION_DATE  "SYSDATE"
,TRANSACTION_QUANTITY
,TRANSACTION_UOM
,PRIMARY_QUANTITY
,SOURCE_CODE
,SOURCE_LINE_ID
,source_header_id
,process_flag
,lock_flag
,RCV_TRANSACTION_ID
,LAST_UPDATE_DATE "SYSDATE"
,LAST_UPDATED_BY
,CREATION_DATE "SYSDATE"
,CREATED_BY
,INVENTORY_ITEM_ID
,ORGANIZATION_ID
,TRANSACTION_TYPE_ID
,TRANSACTION_ACTION_ID
,TRANSACTION_SOURCE_TYPE_ID
,TRANSACTION_MODE)

Step 4. Validation

CREATE OR REPLACE procedure APPS.XXORC_Proc_Stage_Int_Valid(p_errbuff out varchar2,p_retcode out number)
as
cursor XXC is
SELECT SUBINVENTORY_CODE
,TRANSACTION_DATE
,TRANSACTION_QUANTITY
,TRANSACTION_UOM
,PRIMARY_QUANTITY
,SOURCE_CODE
,SOURCE_LINE_ID
,source_header_id
,process_flag ---MANDATORY
,lock_flag ---MADATORY
,RCV_TRANSACTION_ID
,INVENTORY_ITEM_ID
,ORGANIZATION_ID
,TRANSACTION_TYPE_ID
,TRANSACTION_ACTION_ID
,TRANSACTION_SOURCE_TYPE_ID
,TRANSACTION_MODE---MANDATORY
,LAST_UPDATE_DATE
,LAST_UPDATED_BY
,CREATION_DATE
,CREATED_BY
from XXORC_Inv_Staging_Tab;
l_inv_id number;
l_org_id number;
l_sub_inv_code varchar2(10);
l_process_flag number;
l_uom varchar2(10);
l_transaction_type_id number;
l_error_msg varchar2(50);
l_flag varchar2(50) default 'A';
begin
for XOO in XXC
loop
---start transaction date validation---
if XOO.transaction_date>sysdate then
l_flag :='E';
l_error_msg :='Transaction Date Invalid';
fnd_file.put_line(fnd_file.log,'Error Raised'  ||l_error_msg);
end if;
--- end of transaction date---
-- start SOURCE_LINE_ID validation---
if XOO.SOURCE_LINE_ID is null then
l_flag :='E';
l_error_msg :='Source Line Id Not Be Null';
fnd_file.put_line(fnd_file.log,'Error Raised'  ||l_error_msg);
end if;
-- end of SOURCE_LINE_ID validation---
-- start SOURCE_LINE_ID validation---
if XOO.source_header_id is null then
l_flag :='E';
l_error_msg :='Source Header Id Not Be Null';
fnd_file.put_line(fnd_file.log,'Error Raised'  ||l_error_msg);
end if;
-- end of SOURCE_LINE_ID validation---
----start inventory_item_id validation-----
begin
select inventory_item_id
into l_inv_id from
mtl_system_items_b
where inventory_item_id=XOO.INVENTORY_ITEM_ID;
exception
when others then
l_flag :='E';
l_error_msg :='inventory Item Id Is invalid';
fnd_file.put_line(fnd_file.log,'Error Occured'||l_error_msg);
end;
---end of inventory_item_id validation-----
---start Unit Of Measure Validation--
begin
select UOM_CODE
into l_uom
from MTL_UNITS_OF_MEASURE_TL
where UOM_CODE=XOO.TRANSACTION_UOM;
exception
when others then
l_flag :='E';
l_error_msg :='UOM Is invalid';
fnd_file.put_line(fnd_file.log,'Error Occured '||l_error_msg);
end;
-- start organization validation----
begin
select organization_id
into l_org_id
from org_organization_definitions
where organization_id=XOO.ORGANIZATION_ID;
exception
when others then
l_flag :='E';
l_error_msg :='organization data invalid';
fnd_file.put_line(fnd_file.log,'Error Occured'||l_error_msg);
end;
----end organization validation---
 --start sub inventory code validation---
begin
select  distinct(SUBINVENTORY_CODE)
into l_sub_inv_code
from mtl_onhand_quantities_detail
where SUBINVENTORY_CODE=XOO.SUBINVENTORY_CODE;
exception
when others then
l_flag :='E';
l_error_msg :='Sub Inventory Code Invalid';
fnd_file.put_line(fnd_file.log,'Error Occured'||l_error_msg);
end;
---end of subinventory code validation----
--- start process flag validation---
---end of process flag validations---
--start transaction type id validation---
begin
select transaction_type_id
into l_transaction_type_id
from mtl_transaction_types
where transaction_type_id=XOO.transaction_type_id;
exception
when others then
l_flag:='E';
l_error_msg:='Transaction type Id not matched';
fnd_file.put_line(fnd_file.log,'Error Occured'||l_error_msg);
end;
-- end of transaction type id validation----
if l_flag !='E' then
insert into
mtl_transactions_interface
(TRANSACTION_HEADER_ID
,SUBINVENTORY_CODE
,TRANSACTION_DATE
,TRANSACTION_QUANTITY
,TRANSACTION_UOM
,PRIMARY_QUANTITY
,SOURCE_CODE
,SOURCE_LINE_ID
,source_header_id
,process_flag
,lock_flag
,RCV_TRANSACTION_ID
,INVENTORY_ITEM_ID
,ORGANIZATION_ID
,TRANSACTION_TYPE_ID
,TRANSACTION_ACTION_ID
,TRANSACTION_SOURCE_TYPE_ID
,TRANSACTION_MODE
,LAST_UPDATE_DATE
,LAST_UPDATED_BY
,CREATION_DATE
,CREATED_BY)
values
(MTL_MATERIAL_TRANSACTIONS_S.NEXTVAL
,l_sub_inv_code
,XOO.TRANSACTION_DATE
,XOO.TRANSACTION_QUANTITY
,l_uom
,XOO.PRIMARY_QUANTITY
,XOO.SOURCE_CODE
,XOO.SOURCE_LINE_ID
,XOO.source_header_id
,XOO.process_flag
,XOO.lock_flag
,XOO.RCV_TRANSACTION_ID
,l_inv_id
,l_org_id
,l_transaction_type_id
,XOO.TRANSACTION_ACTION_ID
,XOO.TRANSACTION_SOURCE_TYPE_ID
,XOO.TRANSACTION_MODE
,XOO.LAST_UPDATE_DATE
,XOO.LAST_UPDATED_BY
,XOO.CREATION_DATE
,XOO.CREATED_BY);
commit;
end if;
end loop;
end;

Step 5. Submit Standard Program

Go To Inventory Module Click Clt+L Then Type Lauch interface Manager

after Click Tool menu Click lauch manager
                        OR
Submit Standard Program Process transaction interface after Successful complete of Standard Program
another standard Program will execute Mtl Work load Program act as a temporary Table  Move From one interface To base table.

Other Method Single Insertion concept :

insert into mtl_transactions_interface
(SUBINVENTORY_CODE
,TRANSACTION_DATE
,TRANSACTION_QUANTITY
,TRANSACTION_UOM
,PRIMARY_QUANTITY
,SOURCE_CODE
,SOURCE_LINE_ID
,source_header_id
,process_flag
,lock_flag
,RCV_TRANSACTION_ID
,LAST_UPDATE_DATE
,LAST_UPDATED_BY
,CREATION_DATE
,CREATED_BY
,INVENTORY_ITEM_ID
,ORGANIZATION_ID
,TRANSACTION_TYPE_ID
,TRANSACTION_ACTION_ID
,TRANSACTION_SOURCE_TYPE_ID
,TRANSACTION_MODE)
values
('Mobile B',
SYSDATE,
-20,
'Ea',
100,
'Inventory',
63,
26,
1,
2,
NULL,
SYSDATE,
1013497,
SYSDATE,
1013497,
222976,
204,
32,
27,
13,
3)

commit;

select * from mtl_transactions_interface

delete from mtl_transaction_interface where

select * from mtl_material_transactions where inventory_item_id=222976

delete from mtl_transactions_interface where source_code like 'Inv%'



Any Queries Mail Me vivekexpertize@gmail.com




















Calling Different Language Layout Based On Conditions :

API For Calling Layout : 1.fnd_request.add_layout CREATE OR REPLACE procedure APPSLSPO_Calling_Templates1(ERRBUFF OUT VARCHAR,RETCODE O...