Tuesday, 8 September 2015

Configuring OAF Environment Variable
Warning: This is a requirement for JDeveloper. Do not skip this task.
Configure the JDEV_USER_HOME environment variable using Windows XP or Windows 2000:
1.    Go to your desktop and select My Computer, right-click and select Properties.
2.    On the System Properties dialog, select the Advanced tab.
3.    On the Advanced page, select the Environment Variables... button.
4.    On the Environment Variables dialog, select the New... button from the User variables for <username> box.
5.    On the New User Variable dialog, 
   a) enter                   : JDEV_USER_HOME in the Variable Name field. 
   b) Set the Variable : \jdevhome\jdev
6.    Select OK in each of the dialogs you opened to save the new user environment variable.

Exception when oopp error happend 
OAF DEVELOPER 
      Project
        -> Project Settings 
            -> Runtime Connection
change existing what ever u mention 
DBC file name –  <JDEV_USER_HOME>\dbc_files\secure\~.dbc
User Name / Password – a valid apps user who has FWK_TBX_TUTORIAL responsibility
Application Short Name – default is AK
Responsibility Key – FWK_TBX_TUTORIAL

Sunday, 5 October 2014

SCM Modules Table Links



GL AND AP    
GL_CODE_COMBINATIONS    AP_INVOICES_ALL
code_combination_id = acct_pay_code_combination_id

GL_CODE_COMBINATIONS    AP_INVOICES_DISTRIBUTIONS_ALL
code_combination_id = dist_code_combination_id

GL_SETS_OF_BOOKS AP_INVOICES_ALL
set_of_books_id = set_of_books_id

GL AND AR
GL_CODE_COMBINATIONS    RA_CUST_TRX_LINE__GL_DIST_ALL
code_combination_id = code_combination_id


GL AND INV
GL_CODE_COMBINATIONS    MTL_SYSTEM_ITEMS_B
code_combination_id = cost_of_sales_account

GL AND PO
GL_CODE_COMBINATIONS    PO_DISTRIBUTIONS_ALL
code_combination_id = code_combination_id

PO AND AP
PO_DISTRIBUTIONS_ALL      AP_INVOICE_DISTRIBUTIONS_ALL
Po_distribution_id = po_distribution_id

PO_VENDORS           AP_INVOICES_ALL
vendor_id = vendor_id

PO AND SHIPMENTS
PO_HEADERS_ALL     RCV_TRANSACTIONS
Po_header_id = po_header_id

PO_DISTRIBUTIONS_ALL      RCV_TRANSACTIONS
Po_distribution_id = po_distribution_id

SHIPMENTS AND AP INVOICE
RCV_TRANSACTIONS           AP_INVOICE_DISTRIBUTIONS_ALL
RCV_TRANSACTION_ID = RCV_TRANSACTION_ID

PO AND  INV
PO_REQUISITION_LINES_ALL MTL_SYSTEM_ITEMS_B
item_id = inventory_item_id
org_id = organization_id

PO AND HRMS
PO_HEADERS_ALL     HR_EMPLOYEES
Agent_id = employee_id

PO AND REQUISITION
PO_DISTRIBUTIONS_ALL      PO_REQ_DISTRIBUTIONS_ALL
req_distribution_id = distribution_id

SHIPMENTS AND INV
RCV_TRANSACTIONS           MTL_SYSTEM_ITEMS_B
Organization_id         =        organization_id

INV AND HRMS
MTL_SYSTEM_ITEMS_B       HR_EMPLOYEES
buyer_id        =        employee_id

OM  AND  AR
OE_ORDER_HEADERS_ALL              RA_CUSTOMER_TRX_LINES_ALL
TO_CHAR( Order_number)    =        interface_line_attribute1

OE_ORDER_LINES_ALL                   RA_CUSTOMER_TRX_LINES_ALL
TO_CHAR(Line_id)     =        interface_line_attribute6  

OE_ORDER_LINES_ALL                   RA_CUSTOMER_TRX_LINES_ALL
reference_customer_trx_line_id       =        customer_trx_line_id

OM AND SHIPPING
OE_ORDER_HEADERS_ALL               WSH_DELIVARY_DETAILS
HEADER_ID     =        SOURCE_HEADER_ID

OE_ORDER_HEADERS_ALL              WSH_DELIVARY_DETAILS
LINE_ID         =        SOURCE_LINE_ID

AP AND AR (BANKS)
AR_CASH_RECEIPTS_ALL               AP_BANK_ACCOUNTS
REMITTANCE_BANK_ACCOUNT_ID    =        ABA.BANK_ACCOUNT_ID

AP AND AR
HZ_PARTIES                      AP_INVOICES_ALL
PARTY_ID      =        PARTY_ID

OM AND CRM
OE_ORDER_LINES_ALL         CSI_ITEM_INSTANCES(Install Base)
LINE_ID         =        LAST_OE_ORDER_LINE_ID


Fnd Load In Oracle Apps

Functions

FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct /u01/XX_CUSTOM_FUNCTION.ldt FUNCTION FUNCTION_NAME="XX_CUSTOM_FUNCTION"

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afsload.lct /u01/XX_CUSTOM_FUNCTION.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

Menus

FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct /u01/XX_CUSTOM_MENU.ldt MENU MENU_NAME="XX_CUSTOM_MENU"

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afsload.lct /u01/XX_CUSTOM_MENU.ldt UPLOAD_MODE=REPLACE

Messages

FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afmdmsg.lct /u01/XX_CUSTOM_MESG.ldt FND_NEW_MESSAGES APPLICATION_SHORT_NAME="XXCUST" MESSAGE_NAME="XX_CUSTOM_MESG"

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afmdmsg.lct /u01/XX_CUSTOM_MESG.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE


Concurrent Programs

FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct /u01/XX_CUSTOM_CP.ldt PROGRAM APPLICATION_SHORT_NAME="XXCUST" CONCURRENT_PROGRAM_NAME="XX_CUSTOM_CP"

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct /u01/XX_CUSTOM_CP.ldt - WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE


Profile Options

FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afscprof.lct /u01/XX_CUSTOM_PRF.ldt PROFILE PROFILE_NAME="XX_CUSTOM_PRF" APPLICATION_SHORT_NAME="XXCUST"

FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/afscprof.lct /u01/XX_CUSTOM_PRF.ldt


Descriptive Flex Fields 

FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct /u01/XX_PO_REQ_HEADERS_DFF.ldt DESC_FLEX APPLICATION_SHORT_NAME=PO DESCRIPTIVE_FLEXFIELD_NAME='PO_REQUISITION_HEADERS'

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afffload.lct /u01/XX_PO_REQ_HEADERS_DFF.ldt


Forms Personalization

FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct /u01/XX_CUST_PERSONALIZATION.ldt FND_FORM_CUSTOM_RULES function_name="XX_CUST_FUNC"

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.lct /u01/RCVRCERC.ldt

Tuesday, 30 September 2014

Ap Invoice Interface Program in Oracle Apps

CREATE OR REPLACE PACKAGE BODY ap_khr_inv_pkg
IS
   PROCEDURE ap_khr_inv_main (v_errbuff OUT VARCHAR2, v_retcode OUT NUMBER)
   IS
      CURSOR c1
      IS
         SELECT kihs.*, kihs.ROWID rid
           FROM khr_inv_hdr_stg kihs
          WHERE process_flag = 'N';

      CURSOR c2 (p_inv_num VARCHAR2)
      IS
         SELECT kils.*, kils.ROWID rid
           FROM khr_inv_line_stg kils
          WHERE process_flag = 'N' AND invoice_num = p_inv_num;

      CURSOR c3
      IS
         SELECT kihs.*, kihs.ROWID rid
           FROM khr_inv_hdr_stg kihs
          WHERE process_flag = 'V';

      CURSOR c4 (p_inv_num VARCHAR2)
      IS
         SELECT kils.*, kils.ROWID rid
           FROM khr_inv_line_stg kils
          WHERE process_flag = 'V' AND invoice_num = p_inv_num;

      v_process_flag              VARCHAR2 (10)   := 'N';
      v_error_message             VARCHAR2 (1000);
      v_org_id                    NUMBER;
      v_vendor_id                 NUMBER;
      v_vendor_site_id            NUMBER;
      v_term_id                   NUMBER;
      v_inv_curr_code             VARCHAR2 (20);
      v_pay_curr_code             VARCHAR2 (30);
      v_lookup_code               VARCHAR2 (30);
      u_lookup_code               VARCHAR2 (50);
      t_lookup_code               VARCHAR2 (50);
      CONSTANT                    VARCHAR2 (100);
      v_application_id            NUMBER;
      u_org_id                    NUMBER;
      v_code_comb_id              NUMBER;
      u_line_type                 VARCHAR2 (50);
      v_count_hdr_valid_record    NUMBER;
      v_count_line_valid_record   NUMBER;
      v_rec_pros_hdr_count        NUMBER;
      v_rec_prss_line_count       NUMBER;
      v_count_hdr_errors          NUMBER;
      v_count_hdr_insert          NUMBER;
      v_count_line_insert         NUMBER;
      v_count_line_errors         NUMBER;
      v_reject_rcd                NUMBER;
      v_line_rej_rd               NUMBER;
      v_requist_id                NUMBER;
      v_conc_prgm_id              NUMBER;
      v_conc_req_id               NUMBER;
      v_user_id                   NUMBER;
      v_resp_id                   NUMBER;
      v_resp_appl_id              NUMBER;
      v_boolean                   BOOLEAN;
      v_phase                     VARCHAR2 (40);
      v_status                    VARCHAR2 (40);
      v_dev_phase                 VARCHAR2 (40);
      v_dev_status                VARCHAR2 (40);
      v_message                   VARCHAR2 (40);
      v_inv_count                 NUMBER;
   BEGIN
      v_conc_prgm_id := fnd_global.conc_program_id;
      v_conc_req_id := fnd_global.conc_request_id;
      v_user_id := fnd_global.user_id;
      v_resp_id := fnd_global.resp_id;
      v_resp_appl_id := fnd_global.resp_appl_id;
      fnd_global.apps_initialize (v_user_id, v_resp_id, v_resp_appl_id);
      mo_global.init ('SQLAP');
      fnd_file.put_line (fnd_file.LOG, 'ENTER INTO BEGIN BLOCK');

      FOR i IN c1
      LOOP
         v_process_flag := 'N';
         v_rec_pros_hdr_count := c1%ROWCOUNT;
         fnd_file.put_line (fnd_file.LOG, 'ENTER INTO BEGIN LOOP');

         SELECT COUNT (*)
           INTO v_inv_count
           FROM ap_invoices_all aia,
                ap_suppliers ass,
                ap_supplier_sites_all assa
          WHERE aia.invoice_num = i.invoice_num
            AND ass.vendor_id = assa.vendor_id
            AND assa.vendor_site_id = aia.vendor_site_id
            AND ass.vendor_id = aia.vendor_id;

         IF v_inv_count = 0
         THEN
              -----VALIDATIONS START-----
            -----OPERATING UNTIT VALIDATION------
            BEGIN
               SELECT organization_id
                 INTO v_org_id
                 FROM hr_operating_units
                WHERE NAME = i.operating_unit;

               fnd_file.put_line (fnd_file.LOG, 'ORG_ID:' || v_org_id);
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line (fnd_file.LOG, 'ORG_ID not found');
                  v_process_flag := 'E';
                  v_error_message := 'ORGID not found';
               WHEN TOO_MANY_ROWS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'too may rows in OPERATING UNIT..'
                                    );
                  v_process_flag := 'E';
                  v_error_message := 'to many values to ORG ID';
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                             (fnd_file.LOG,
                              'other exceptions in OPERATING UNIT validation'
                             );
                  v_process_flag := 'E';
                  v_error_message :=
                              'in other exception of OPERATING UNIT valiation';
            END;

            -----------------END OPERATING UNIT VALIDATIONS-------------
                -----VENDOR  NAME VALIDATION------
            BEGIN
               SELECT vendor_id
                 INTO v_vendor_id
                 FROM ap_suppliers
                WHERE vendor_name = i.vendor_name;

               fnd_file.put_line (fnd_file.LOG, 'VENDOR ID:' || v_vendor_id);
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line (fnd_file.LOG, 'VENDOR NAME not found');
                  v_process_flag := 'E';
                  v_error_message := 'VENDOR NAME not found';
               WHEN TOO_MANY_ROWS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'too may rows in VENDOR NAME..'
                                    );
                  v_process_flag := 'E';
                  v_error_message := 'to many values to VENDOR NAME';
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                                (fnd_file.LOG,
                                 'other exceptions in VENDOR NAME validation'
                                );
                  v_process_flag := 'E';
                  v_error_message :=
                                 'in other exception of VENDOR NAME valiation';
            END;

            -----------------END VENDOR NAME VALIDATIONS-------------
               -----VENDOR SITE  VALIDATION------
            BEGIN
               SELECT vendor_site_id
                 INTO v_vendor_site_id
                 FROM ap_supplier_sites_all
                WHERE vendor_site_code = i.vendor_site_code
                  AND vendor_id = v_vendor_id
                  AND org_id = v_org_id;

               fnd_file.put_line (fnd_file.LOG,
                                  'VENDOR SITE ID :' || v_vendor_site_id
                                 );
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line (fnd_file.LOG, 'VENDOR SITE  not found');
                  v_process_flag := 'E';
                  v_error_message := 'VENDOR SITE not found';
               WHEN TOO_MANY_ROWS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'too may rows in VENDOR SITE..'
                                    );
                  v_process_flag := 'E';
                  v_error_message := 'to many values to VENDOR SITE';
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                                (fnd_file.LOG,
                                 'other exceptions in VENDOR SITE validation'
                                );
                  v_process_flag := 'E';
                  v_error_message :=
                                 'in other exception of VENDOR SITE valiation';
            END;

             ---------END VENDOR SITE  VALIDATIONS------
            -----TERM NAME  VALIDATION------
            BEGIN
               SELECT term_id
                 INTO v_term_id
                 FROM ap_terms_tl
                WHERE NAME = i.terms_name;

               fnd_file.put_line (fnd_file.LOG, 'TERM ID :' || v_term_id);
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line (fnd_file.LOG, 'TERM NAME  not foUnd');
                  v_process_flag := 'E';
                  v_error_message := 'TERM NAME not found';
               WHEN TOO_MANY_ROWS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'too may rows in TERM NAME..'
                                    );
                  v_process_flag := 'E';
                  v_error_message := 'to many values to TERM NAME';
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                                  (fnd_file.LOG,
                                   'other exceptions in TERM NAME validation'
                                  );
                  v_process_flag := 'E';
                  v_error_message :=
                                   'in other exception of TERM NAME valiation';
            END;

            ---------END TERM NAME  VALIDATIONS------
              -----INVOICE CURRENCY CODE   VALIDATION------
            BEGIN
               SELECT currency_code
                 INTO v_inv_curr_code
                 FROM fnd_currencies
                WHERE currency_code = i.invoice_currency_code;

               fnd_file.put_line (fnd_file.LOG,
                                  'CURRENCY CODE :' || v_inv_curr_code
                                 );
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'CURRENCY CODE  not foUnd');
                  v_process_flag := 'E';
                  v_error_message := 'CURRENCY CODE not found';
               WHEN TOO_MANY_ROWS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'too may rows in CURRENCY CODE..'
                                    );
                  v_process_flag := 'E';
                  v_error_message := 'to many values to CURRENCY CODE';
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                              (fnd_file.LOG,
                               'other exceptions in CURRENCY CODE validation'
                              );
                  v_process_flag := 'E';
                  v_error_message :=
                               'in other exception of CURRENCY CODE valiation';
            END;

            ---------END INVOICE CURRENCY CODE VALIDATIONS-----
               -----PAYMENT  CURRENCY CODE   VALIDATION------
            BEGIN
               SELECT currency_code
                 INTO v_pay_curr_code
                 FROM fnd_currencies
                WHERE currency_code = i.payment_currency_code;

               fnd_file.put_line (fnd_file.LOG,
                                  'PAY CURRENCY CODE :' || v_pay_curr_code
                                 );
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'CURRENCY CODE  not foUnd');
                  v_process_flag := 'E';
                  v_error_message := 'CURRENCY CODE not found';
               WHEN TOO_MANY_ROWS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'too may rows in PAYCURRENCY CODE..'
                                    );
                  v_process_flag := 'E';
                  v_error_message := 'to many values to PAY CURRENCY CODE';
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                          (fnd_file.LOG,
                           'other exceptions in PAY CURRENCY CODE validation'
                          );
                  v_process_flag := 'E';
                  v_error_message :=
                           'in other exception of PAY CURRENCY CODE valiation';
            END;

                ---------END PAYMENT CURRENCY CODE VALIDATIONS----
            -----INVOICE TYPE   VALIDATION------
            BEGIN
               SELECT application_id
                 INTO v_application_id
                 FROM fnd_application
                WHERE application_short_name = 'SQLAP';

               SELECT lookup_code
                 INTO v_lookup_code
                 FROM fnd_lookup_values
                WHERE lookup_type = 'INVOICE TYPE'
                  AND view_application_id = v_application_id
                  AND lookup_code = i.invoice_type_lookup_code;

               fnd_file.put_line (fnd_file.LOG,
                                  'LOOKUP CODE :' || v_lookup_code
                                 );
               fnd_file.put_line (fnd_file.LOG,
                                  'APPLICATION ID :' || v_application_id
                                 );
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line (fnd_file.LOG, 'LOOKUP CODE  not foUnd');
                  v_process_flag := 'E';
                  v_error_message := 'LOOKUP CODE not found';
               WHEN TOO_MANY_ROWS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'too may rows in LOOKUP CODE..'
                                    );
                  v_process_flag := 'E';
                  v_error_message := 'to many values to LOOKUP CODE';
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                                (fnd_file.LOG,
                                 'other exceptions in LOOKUP CODE validation'
                                );
                  v_process_flag := 'E';
                  v_error_message :=
                                 'in other exception of LOOKUP CODE valiation';
            END;

            ---------END INVOICE TYPE VALIDATIONS-----
                   -----PAYMENT METHOD   VALIDATION------
            BEGIN
               SELECT lookup_code
                 INTO u_lookup_code
                 FROM fnd_lookup_values
                WHERE lookup_type = 'PAYMENT METHOD'
                  AND view_application_id = v_application_id
                  AND lookup_code = i.payment_method_lookup_code;

               fnd_file.put_line (fnd_file.LOG,
                                  'PAYMENT METHOD :' || u_lookup_code
                                 );
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'PAY LOOKUP CODE  not foUnd'
                                    );
                  v_process_flag := 'E';
                  v_error_message := 'PAY LOOKUP CODE not found';
               WHEN TOO_MANY_ROWS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'too may rows in PAY LOOKUP CODE..'
                                    );
                  v_process_flag := 'E';
                  v_error_message := 'to many values to PAY LOOKUP CODE';
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                            (fnd_file.LOG,
                             'other exceptions in PAY LOOKUP CODE validation'
                            );
                  v_process_flag := 'E';
                  v_error_message :=
                             'in other exception of PAY LOOKUP CODE valiation';
            END;

            ---------END PAYMENT TYPE VALIDATIONS-----
                  ----SOURCE  VALIDATION------
            BEGIN
               SELECT lookup_code
                 INTO t_lookup_code
                 FROM fnd_lookup_values
                WHERE lookup_type = 'SOURCE'
                  AND lookup_code = i.SOURCE
                  AND view_application_id = v_application_id;

               fnd_file.put_line (fnd_file.LOG, 'SOURCE :' || t_lookup_code);
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line (fnd_file.LOG, 'SOURCE  not foUnd');
                  v_process_flag := 'E';
                  v_error_message := 'SOURCE not found';
               WHEN TOO_MANY_ROWS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'too may rows in SOURCE..');
                  v_process_flag := 'E';
                  v_error_message := 'to many values to SOURCE';
               WHEN OTHERS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'other exceptions in SOURCE validation'
                                    );
                  v_process_flag := 'E';
                  v_error_message := 'in other exception ofSOURCE valiation';
            END;

            ---------END SOURCE VALIDATIONS-----
            IF v_process_flag != 'E'
            THEN
               fnd_file.put_line
                             (fnd_file.LOG,
                              'Inserting Values into Headers Interface Table'
                             );

               UPDATE khr_inv_hdr_stg
                  SET process_flag = 'V',
                      error_message =
                                   'VALID RECORDS INTO HEADER INTERFACE TABLE',
                      vendor_id = v_vendor_id,
                      vendor_site_id = v_vendor_site_id
                WHERE ROWID = i.rid;

               fnd_file.put_line (fnd_file.LOG,
                                  'UPDATE STGING TABLE WITH SUCESS RECORDS'
                                 );
               fnd_file.put_line (fnd_file.LOG,
                                  'STAGING TABLE IS UPDATED WITH VALID RECORD'
                                 );
               fnd_file.put_line (fnd_file.LOG, 'enter into c2 curSor');

               FOR j IN c2 (i.invoice_num)
               LOOP
                  v_rec_prss_line_count := c2%ROWCOUNT;
                  fnd_file.put_line (fnd_file.LOG, 'ENTER INTO LINE LOOP...');

                          ----LINES VALIDATIONS----
                  -----OPERATING UNTIT VALIDATION------
                  BEGIN
                     SELECT organization_id
                       INTO u_org_id
                       FROM hr_operating_units
                      WHERE NAME = j.operating_unit;

                     fnd_file.put_line (fnd_file.LOG, 'ORG_ID:' || v_org_id);
                  EXCEPTION
                     WHEN NO_DATA_FOUND
                     THEN
                        fnd_file.put_line (fnd_file.LOG, 'ORG_ID not found');
                        v_process_flag := 'E';
                        v_error_message := 'ORGID not found';
                     WHEN TOO_MANY_ROWS
                     THEN
                        fnd_file.put_line (fnd_file.LOG,
                                           'too may rows in OPERATING UNIT..'
                                          );
                        v_process_flag := 'E';
                        v_error_message := 'to many values to ORG ID';
                     WHEN OTHERS
                     THEN
                        fnd_file.put_line
                             (fnd_file.LOG,
                              'other exceptions in OPERATING UNIT validation'
                             );
                        v_process_flag := 'E';
                        v_error_message :=
                              'in other exception of OPERATING UNIT valiation';
                  END;

                  -----------------END OPERATING UNIT VALIDATIONS-------------
                           ------- Account Validation -------
                  BEGIN
                     SELECT code_combination_id
                       INTO v_code_comb_id
                       FROM gl_code_combinations_kfv gcc, gl_ledgers gl
                      WHERE gcc.concatenated_segments = j.ACCOUNT
                        AND gcc.chart_of_accounts_id = gl.chart_of_accounts_id
                        AND gl.ledger_id =
                                        fnd_profile.VALUE ('GL_SET_OF_BKS_ID');

                     fnd_file.put_line (fnd_file.LOG,
                                           'Code Combination ID is : '
                                        || v_code_comb_id
                                       );
                  EXCEPTION
                     WHEN NO_DATA_FOUND
                     THEN
                        v_process_flag := 'E';
                        v_error_message :=
                                         'No Data Found for Code Combination';
                     WHEN TOO_MANY_ROWS
                     THEN
                        v_process_flag := 'E';
                        v_error_message :=
                                         'Too Many Rows for Code Combination';
                     WHEN OTHERS
                     THEN
                        v_process_flag := 'E';
                        v_error_message :=
                                   'In Others of Code Combination Validation';
                  END;

                   --------END ACCOUNT VALIDATION---------
                  ------- LINE TYPE Validation -------
                  BEGIN
                     SELECT lookup_code
                       INTO u_line_type
                       FROM fnd_lookup_values
                      WHERE lookup_code = j.line_type_lookup_code
                        AND lookup_type = 'INVOICE LINE TYPE';

                     fnd_file.put_line (fnd_file.LOG,
                                        'LINE TYPE IS:' || u_line_type
                                       );
                  EXCEPTION
                     WHEN NO_DATA_FOUND
                     THEN
                        v_process_flag := 'E';
                        v_error_message :=
                                     v_error_message || 'Line Type not found';
                     WHEN TOO_MANY_ROWS
                     THEN
                        v_process_flag := 'E';
                        v_error_message :=
                            v_error_message || 'Too Many Values to Line Type';
                     WHEN OTHERS
                     THEN
                        v_process_flag := 'E';
                        v_error_message :=
                              v_error_message
                           || 'In OTHERS of Line Type Validation';
                  END;

                  --------END LINE TYPE VALIDATION---------
                  IF v_process_flag != 'E'
                  THEN
                     UPDATE khr_inv_line_stg
                        SET process_flag = 'V',
                            error_message =
                               'VALID RECORD INSERT INTO LINE INTERFACE TABLE'
                      WHERE ROWID = j.rid;

                     fnd_file.put_line (fnd_file.LOG, 'VAILD RECORD ');
                     fnd_file.put_line (fnd_file.LOG,
                                        'LINE STAGING TABLE IS UPDATED'
                                       );
                  ELSE
                     UPDATE khr_inv_line_stg
                        SET process_flag = v_process_flag,
                            error_message = v_error_message
                      WHERE ROWID = i.rid;

                     fnd_file.put_line
                                 (fnd_file.LOG,
                                  'INSERTED INTO ERROR RECORD INTERFACE TABLE'
                                 );
                     fnd_file.put_line (fnd_file.LOG,
                                        'STAGING TABLE IS UPDATED WITH ERRORS'
                                       );
                  END IF;
               END LOOP;                                    ----LINES END LOOP
            ELSE
               UPDATE khr_inv_hdr_stg
                  SET process_flag = 'E',
                      error_message = v_error_message,
                      vendor_id = v_vendor_id,
                      vendor_site_id = v_vendor_site_id
                WHERE ROWID = i.rid;

               fnd_file.put_line (fnd_file.LOG,
                                  'UPDATE STGING TABLE WITH ERROR RECORDS'
                                 );
               fnd_file.put_line (fnd_file.LOG,
                                  'STAGING TABLE IS UPDATED WITH ERRORS'
                                 );
            END IF;
         ELSE
            v_process_flag := 'E';
            v_error_message := 'Invoice num already Exist';
            fnd_file.put_line (fnd_file.LOG, 'Invoice already exist');
         END IF;
      END LOOP;                                                 ---HEADER LOOP

      fnd_file.put_line (fnd_file.LOG, 'inserting into header interface');

      FOR k IN c3
      LOOP
         INSERT INTO ap_invoices_interface
                     (invoice_num, invoice_id,
                      gl_date, last_update_date, last_updated_by,
                      invoice_currency_code, payment_currency_code,
                      payment_cross_rate, invoice_type_lookup_code,
                      vendor_id, vendor_site_id, org_id,
                      invoice_date, invoice_amount, terms_date,
                      terms_id, payment_method_lookup_code, SOURCE
                     )
              VALUES (k.invoice_num, ap_invoices_interface_s.NEXTVAL,
                      k.gl_date, k.last_update_date, k.last_updated_by,
                      v_inv_curr_code, v_pay_curr_code,
                      k.payment_cross_rate, v_lookup_code,
                      v_vendor_id, v_vendor_site_id, v_org_id,
                      k.invoice_date, k.invoice_amount, k.terms_date,
                      v_term_id, k.payment_method_lookup_code, k.SOURCE
                     );

         fnd_file.put_line (fnd_file.LOG, 'inserted into header interface');

         UPDATE khr_inv_hdr_stg
            SET process_flag = 'I',
                error_message = 'INSERT INTO HEADER INTERFACE TABLE',
                invoice_id = ap_invoices_interface_s.CURRVAL
          WHERE ROWID = k.rid;

         fnd_file.put_line (fnd_file.LOG,
                            'INSERT INTO SUCESS RECORD INTO INTERFACE TABLE'
                           );
         fnd_file.put_line (fnd_file.LOG, 'inserting into lines interface');

         FOR l IN c4 (k.invoice_num)
         LOOP
            INSERT INTO ap_invoice_lines_interface
                        (line_number, line_type_lookup_code,
                         accounting_date, invoice_id,
                         invoice_line_id,
                         dist_code_combination_id, org_id, amount
                        )
                 VALUES (l.line_number, l.line_type_lookup_code,
                         l.accounting_date, ap_invoices_interface_s.CURRVAL,
                         ap_invoice_lines_interface_s.NEXTVAL,
                         v_code_comb_id, u_org_id, l.amount
                        );

            fnd_file.put_line (fnd_file.LOG, 'inserted into lines interface');

            UPDATE khr_inv_line_stg
               SET process_flag = 'I',
                   error_message = 'INSERT INTO LINES INTERFACE TABLE'
             WHERE ROWID = l.rid;

            fnd_file.put_line
                       (fnd_file.LOG,
                        'INSERT INTO SUCESS RECORD INTO LINES INTERFACE TABLE'
                       );
         END LOOP;                                      ---------------C4 LOOP
      END LOOP;                                        ----------------C3 LOOP

      SELECT COUNT (*)
        INTO v_reject_rcd
        FROM khr_inv_hdr_stg
       WHERE v_process_flag = 'E';

      SELECT COUNT (*)
        INTO v_line_rej_rd
        FROM khr_inv_line_stg
       WHERE v_process_flag = 'E';

      -------------------SUMMARY INFORMATION-------------------
      SELECT RPAD (LPAD ('SUMMARY INFORMATION', 50, '-'), 80, '-')
        INTO CONSTANT
        FROM DUAL;

      fnd_file.put_line (fnd_file.output, CONSTANT);
      fnd_file.put_line (fnd_file.output,
                            'Total no of hdr processed record is:'
                         || v_rec_pros_hdr_count
                        );
      fnd_file.put_line (fnd_file.output,
                            'total no of lines processed record is :'
                         || v_rec_prss_line_count
                        );
      fnd_file.put_line (fnd_file.output,
                         'Rejectd record  hdr is ' || v_reject_rcd
                        );
      fnd_file.put_line (fnd_file.output,
                         'Rejectd record  line is ' || v_line_rej_rd
                        );

      SELECT COUNT (*)
        INTO v_count_hdr_valid_record
        FROM khr_inv_hdr_stg
       WHERE process_flag = 'N';

      SELECT COUNT (*)
        INTO v_count_line_valid_record
        FROM khr_inv_line_stg
       WHERE process_flag = 'N';

      SELECT COUNT (*)
        INTO v_count_hdr_insert
        FROM khr_inv_hdr_stg
       WHERE process_flag = 'I';

      SELECT COUNT (*)
        INTO v_count_hdr_errors
        FROM khr_inv_hdr_stg
       WHERE process_flag = 'E';

      SELECT COUNT (*)
        INTO v_count_line_insert
        FROM khr_inv_hdr_stg
       WHERE process_flag = 'I';

      SELECT COUNT (*)
        INTO v_count_line_errors
        FROM khr_inv_hdr_stg
       WHERE process_flag = 'E';

      fnd_file.put_line (fnd_file.LOG,
                            'COUNT OF HDR VALID RECORD :'
                         || v_count_hdr_valid_record
                        );
      fnd_file.put_line (fnd_file.LOG,
                            'COUNT OF LINE VALID RECORD :'
                         || v_count_line_valid_record
                        );
      fnd_file.put_line (fnd_file.LOG,
                            'COUNT OF HEADER PROCESS RECORD:'
                         || v_rec_pros_hdr_count
                        );
      fnd_file.put_line (fnd_file.LOG,
                            'COUNT OF LINE PROCESS RECORD:'
                         || v_rec_prss_line_count
                        );
      fnd_file.put_line (fnd_file.LOG,
                            'COUNT OF HEADER INSERT  RECORD:'
                         || v_count_hdr_insert
                        );
      fnd_file.put_line (fnd_file.LOG,
                            'COUNT OF HDR    ERROR   RECORD:'
                         || v_count_hdr_errors
                        );
      fnd_file.put_line (fnd_file.LOG,
                         'COUNT OF LINE  INSERT RECORD:'
                         || v_count_line_insert
                        );
      fnd_file.put_line (fnd_file.LOG,
                            'COUNT OF LINE   ERROR   RECORD:'
                         || v_count_line_errors
                        );
      COMMIT;
      fnd_file.put_line (fnd_file.LOG, 'SUBMITTING THE STANDARD PROGRAM---');
      v_requist_id :=
         fnd_request.submit_request ('SQLAP',         ---APPLICATION SHOT NAME
                                     'APXIIMPT',       ------PROGRAM SHOT NAME
                                     'Payables Open Interface Import',
                                     '14-sep-2013',
                                     FALSE,
                                     204,
                                     'ERS',
                                     NULL,
                                     'N/A',
                                     NULL,
                                     NULL,
                                     NULL,
                                     NULL,
                                     NULL,
                                     NULL,
                                     NULL,
                                     NULL,
                                     NULL,
                                     NULL
                                    );
      COMMIT;
      fnd_file.put_line (fnd_file.LOG, 'REQUIST_ID :' || v_requist_id);
      fnd_file.put_line (fnd_file.LOG, 'CONN REQUEST ID  :' || v_conc_req_id);
      fnd_file.put_line (fnd_file.LOG, 'CON PROGRAM ID  :' || v_conc_prgm_id);
      v_boolean :=
         fnd_concurrent.wait_for_request (request_id      => v_requist_id,
                                          INTERVAL        => 60,
                                          max_wait        => 0,
                                          phase           => v_phase,
                                          status          => v_status,
                                          dev_phase       => v_dev_phase,
                                          dev_status      => v_dev_status,
                                          MESSAGE         => v_message
                                         );
      COMMIT;
      fnd_file.put_line (fnd_file.LOG, 'PHASE          :' || v_phase);
      fnd_file.put_line (fnd_file.LOG, 'STATUS         :' || v_status);
      fnd_file.put_line (fnd_file.LOG, 'DEV_PHASE     :' || v_dev_phase);
      fnd_file.put_line (fnd_file.LOG, 'DEV STATUS     :' || v_dev_status);
      fnd_file.put_line (fnd_file.LOG, 'MESSAGE     :' || v_message);
   EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         fnd_file.put_line (fnd_file.LOG, 'NO DATA FOUND');
      WHEN TOO_MANY_ROWS
      THEN
         fnd_file.put_line (fnd_file.LOG, 'TOO MANY VALUES');
      WHEN OTHERS
      THEN
         fnd_file.put_line (fnd_file.LOG, 'OTHER THAN EXCEPTION');
   END ap_khr_inv_main;
END ap_khr_inv_pkg;