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;