Monday, January 28, 2019

OAF Profiles / Profiles to Enable OAF Personalizations



==================================================================================================================
Profile Name                               Value
==================================================================================================================
                                          
FND: Personalization Region Link Enabled   Yes
Personalize Self-Service Defn              Yes
Disable Self-Service Personal              No
FND: Diagnostics         Yes @ User level to enable About this page option, if not enabled
FND: Personalization Seeding Mode         
FND: Personalization Document Root Path   
                                          
==================================================================================================================
FND: Debug Log Enabled -                   set to Yes --default to NO
FND: Debug Log Level -                     set to Statement
FND: Debug Log Filename for Middle-Tier -  give a path to a log file on the server. (test.log)
FND: Debug Log Level ---                   %
==================================================================================================================

Wednesday, January 23, 2019

FND_GLOBAL and FND_PROFILE: Import List of System Global values

FND_GLOBAL and FND_PROFILE: Import List of System Global values


FND_PROFILE values:


1  fnd_profile.value('PROFILEOPTION')
2  fnd_profile.value('MFG_ORGANIZATION_ID')
3  fnd_profile.value('ORG_ID')
4  fnd_profile.value('LOGIN_ID')
5  fnd_profile.value('USER_ID')
6  fnd_profile.value('USERNAME')
7  fnd_profile.value('CONCURRENT_REQUEST_ID')
8  fnd_profile.value('GL_SET_OF_BKS_ID')
9  fnd_profile.value('SO_ORGANIZATION_ID')
10 fnd_profile.value('APPL_SHRT_NAME')
11 fnd_profile.value('RESP_NAME')
12 fnd_profile.value('RESP_ID')
13 fnd_profile.value('PER_BUSINESS_GROUP_ID')
14 fnd_profile.value('GL_SET_OF_BKS_ID')
15 fnd_profile.value('CURRENT_ORG_CONTEXT')


FND_GLOBAL values:


1  fnd_global.USER_ID
2  fnd_global.USER_NAME
3  fnd_global.RESP_ID
4  fnd_global.RESP_NAME
5  fnd_global.APPLICATION_NAME
6  fnd_global.APPLICATION_SHORT_NAME
7  fnd_global.RESP_APPL_ID
8  fnd_global.BASE_LANGUAGE
9  fnd_global.CONC_LOGIN_ID
10 fnd_global.CONC_PRIORITY_REQUEST
11 fnd_global.CONC_PROCESS_ID
12 fnd_global.CONC_PROGRAM_ID
13 fnd_global.CONC_QUEUE_ID
14 fnd_global.CONC_REQUEST_ID
15 fnd_global.CURRENT_LANGUAGE
16 fnd_global.CUSTOMER_ID
17 fnd_global.EMPLOYEE_ID
18 fnd_global.FORM_APPL_ID
19 fnd_global.FORM_ID
20 fnd_global.GET_SESSION_CONTEXT
21 fnd_global.LANGUAGE_COUNT
22 fnd_global.LOGIN_ID
23 fnd_global.NEWLINE
24 fnd_global.NLS_DATE_FORMAT
25 fnd_global.NLS_DATE_LANGUAGE
26 fnd_global.NLS_LANGUAGE
27 fnd_global.NLS_NUMERIC_CHARACTERS
28 fnd_global.NLS_SORT
29 fnd_global.NLS_TERRITORY
30 fnd_global.ORG_ID
31 fnd_global.ORG_NAME
32 fnd_global.PARTY_ID
33 fnd_global.PER_BUSINESS_GROUP_ID
34 fnd_global.PER_SECURITY_PROFILE_ID
35 fnd_global.PROG_APPL_ID
36 fnd_global.QUEUE_APPL_ID
37 fnd_global.RT_TEST_ID
38 fnd_global.SECURITY_GROUP_ID
39 fnd_global.SERVER_ID
40 fnd_global.SESSION_ID
41 fnd_global.SUPPLIER_ID
42 fnd_global.TAB


Examples to initialize the application environment:


v_user_id      PLS_INTEGER  :=  fnd_global.user_id;
v_login_id     PLS_INTEGER  :=  fnd_global.login_id;
v_conc_req_id  PLS_INTEGER  :=  fnd_global.conc_request_id;
v_org_id       PLS_INTEGER  :=  fnd_profile.value('ORG_ID');
v_sob_id       PLS_INTEGER  :=  fnd_profile.value('GL_SET_OF_BKS_ID');


v_resp_appl_id  := fnd_global.resp_appl_id;
v_resp_id       := fnd_global.resp_id;
v_user_id       := fnd_global.user_id;
    
FND_GLOBAL.APPS_INITIALIZE(v_user_id,v_resp_id, v_resp_appl_id);

Tuesday, January 22, 2019

GL: Account Segment and Description

Account Segment and Description
===========================


SELECT gl_flexfields_pkg.get_description_sql
         (chart_of_accounts_id,
          1, --segment position
          segment1 -- segment attribute
          )
FROM gl_code_combinations ;

SQL Query to find KEY FLEX FIELDS (KFF) Definitions:

SQL Query to find KEY FLEX FIELDS (KFF) Definitions:


 select  fif.application_id  ,
         fif.id_flex_code    ,
         fif.id_flex_name    ,
         fif.application_table_name ,
         fif.description     ,
         fifs.id_flex_num    ,
         fifs.id_flex_structure_code  ,
         fifse.segment_name,
         fifse.segment_num,
         fifse.flex_value_set_id
 from    fnd_id_flexs fif    ,
         fnd_id_flex_structures fifs ,
         fnd_id_flex_segments fifse
 where   fif.application_id   = fifs.application_id
 and     fif.id_flex_code     = fifs.id_flex_code
 and     fifse.application_id = fif.application_id
 and     fifse.id_flex_code   = fif.id_flex_code
 and     fifse.id_flex_num    = fifs.id_flex_num
 and     fif.id_flex_code     like 'GL#'
 and     fif.id_flex_name     like 'Accounting Flexfield';

Thursday, January 17, 2019

Prepared Statement in Oracle OAF

Prepared Statement in Oracle OAF


import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
 
try 
 

Connection conn = pageContext.getApplicationModule(webBean).getOADBTransaction().getJdbcConnection(); 
 
String Query = "SELECT count(*) count from XX_DAY_V where project_id=:1 and UNIQ_ID is not null"; 
 
PreparedStatement stmt = conn.prepareStatement(Query); 
stmt.setString(1, project_id); 
for(ResultSet resultset = stmt.executeQuery(); resultset.next();) 

pageContext.writeDiagnostics(this, "Query Executed", 1); 
result = resultset.getInt("count");; 
pageContext.writeDiagnostics(this, "Query Executed"+ result, 1); 


 
catch(Exception exception) 
 
{  
throw new OAException("Error in Staffing Query"+exception, OAException.ERROR); 

 
if(result >0) 

throw new OAException("One or more Scope Change Order is existing on this project", OAException.INFORMATION); 
}

FNDLOAD Scripts to Generate LDT Files for various Oracle Database Objects

FNDLOAD Scripts to Generate LDT Files for various Oracle Database Objects




1. Lookups
-- -------------
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/aflvmlu.lct XX_CUSTOM_LKP.ldt FND_LOOKUP_TYPE APPLICATION_SHORT_NAME="XXCUST" LOOKUP_TYPE="XX_LOOKUP_TYPE"


 


FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/aflvmlu.lct XX_CUSTOM_LKP.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE


 


2. Concurrent Program
-- -----------------------------
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_CUSTOM_CP.ldt PROGRAM APPLICATION_SHORT_NAME="XXCUST" CONCURRENT_PROGRAM_NAME="XX_CONCURRENT_PROGRAM"


 


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


 


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


 


$FND_TOP/bin/FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afscprof.lct XX_CUSTOM_PRF.ldt - WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE


 


4. Request Set and Link
-- ------------------------------
FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcprset.lct XX_CUSTOM_RS.ldt REQ_SET REQUEST_SET_NAME='REQUEST_SET_NAME'


 


FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/afcprset.lct  XX_CUSTOM_RS.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE


 


5. FND Message
-- ---------------------
FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afmdmsg.lct XX_CUSTOM_MESG.ldt FND_NEW_MESSAGES APPLICATION_SHORT_NAME="XXCUST" MESSAGE_NAME="MESSAGE_NAME%"


 


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


 


6. D2K FORMS
-- ------------------
$FND_TOP/bin/FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct XX_CUSTOM_FRM.ldt FORM FORM_NAME="FORM_NAME"
      


$FND_TOP/bin/FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afsload.lct XX_CUSTOM_FRM.ldt - WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE


 


7. Form Function
-- ---------------------
FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct XX_CUSTOM_FUNC.ldt FUNCTION FUNCTION_NAME="FORM_FUNCTION_NAME"


 


$FND_TOP/bin/FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afsload.lct XX_CUSTOM_FUNC.ldt - WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE


 


8. Alerts
-- ---------
FNDLOAD apps/apps 0 Y DOWNLOAD $ALR_TOP/patch/115/import/alr.lct XX_CUSTOM_ALR.ldt ALR_ALERTS APPLICATION_SHORT_NAME=XXCUST ALERT_NAME="XX - Alert Name"


 


FNDLOAD apps/apps 0 Y UPLOAD $ALR_TOP/patch/115/import/alr.lct XX_CUSTOM_ALR.ldt CUSTOM_MODE=FORCE


 


9. Value Set
-- --------------
$FND_TOP/bin/FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct XX_CUSTOM_VS.ldt VALUE_SET FLEX_VALUE_SET_NAME="XX Value Set Name"


 


$FND_TOP/bin/FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afffload.lct XX_CUSTOM_VS.ldt - WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE


 


10. Data Definition and Associated Template
--- ----------------------------------------------------------
FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD  $XDO_TOP/patch/115/import/xdotmpl.lct XX_CUSTOM_DD.ldt XDO_DS_DEFINITIONS APPLICATION_SHORT_NAME='XXCUST' DATA_SOURCE_CODE='XX_SOURCE_CODE' TMPL_APP_SHORT_NAME='XXCUST' TEMPLATE_CODE='XX_SOURCE_CODE'


 


FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $XDO_TOP/patch/115/import/xdotmpl.lct XX_CUSTOM_DD.ldt


 


11. DATA_TEMPLATE (Data Source .xml file)
--- ----------------------------------------------------------
java oracle.apps.xdo.oa.util.XDOLoader DOWNLOAD -DB_USERNAME apps -DB_PASSWORD apps -JDBC_CONNECTION '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX_HOST_NAME)(PORT=XX_PORT_NUMBER))(CONNECT_DATA=(SERVICE_NAME=XX_SERVICE_NAME)))' -LOB_TYPE DATA_TEMPLATE -LOB_CODE XX_TEMPLATE -APPS_SHORT_NAME XXCUST -LANGUAGE en -lct_FILE $XDO_TOP/patch/115/import/xdotmpl.lct -LOG_FILE $LOG_FILE_NAME


 


java oracle.apps.xdo.oa.util.XDOLoader UPLOAD -DB_USERNAME apps -DB_PASSWORD apps -JDBC_CONNECTION '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX_HOST_NAME)(PORT=XX_PORT_NUMBER))(CONNECT_DATA=(SERVICE_NAME=XX_SERVICE_NAME)))' -LOB_TYPE DATA_TEMPLATE -LOB_CODE XX_TEMPLATE -XDO_FILE_TYPE XML -FILE_NAME $DATA_FILE_PATH/$DATA_FILE_NAME.xml -APPS_SHORT_NAME XXCUST -NLS_LANG en -TERRITORY US -LOG_FILE $LOG_FILE_NAME


 


12. RTF TEMPLATE (Report Layout .rtf file)
--- -------------------------------------------------------
java oracle.apps.xdo.oa.util.XDOLoader DOWNLOAD -DB_USERNAME apps -DB_PASSWORD apps -JDBC_CONNECTION '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX_HOST_NAME)(PORT=XX_PORT_NUMBER))(CONNECT_DATA=(SERVICE_NAME=XX_SERVICE_NAME)))' -LOB_TYPE TEMPLATE -LOB_CODE XX_TEMPLATE -APPS_SHORT_NAME XXCUST -LANGUAGE en -TERRITORY US -lct_FILE $XDO_TOP/patch/115/import/xdotmpl.lct -LOG_FILE $LOG_FILE_NAME


 


java oracle.apps.xdo.oa.util.XDOLoader UPLOAD -DB_USERNAME apps -DB_PASSWORD apps -JDBC_CONNECTION '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX_HOST_NAME)(PORT=XX_PORT_NUMBER))(CONNECT_DATA=(SERVICE_NAME=SERVICE_NAME)))' -LOB_TYPE TEMPLATE -LOB_CODE XX_TEMPLATE -XDO_FILE_TYPE RTF -FILE_NAME $RTF_FILE_PATH/$RTF_FILE_NAME.rtf -APPS_SHORT_NAME XXCUST -NLS_LANG en -TERRITORY US -LOG_FILE $LOG_FILE_NAME


 

Wednesday, January 16, 2019

SQL Query to find the Concurrent Programs attached Responsibility details / SQL Query to find Concurrent Programs with Responsibilities

SQL Query to find the Concurrent Programs Responsibility details
SELECT frt.responsibility_name
    ,frg.request_group_name
       ,frgu.request_unit_type
    ,frgu.request_unit_id
       ,fcpt.user_concurrent_program_name
FROM   fnd_Responsibility fr, fnd_responsibility_tl frt,
       fnd_request_groups frg, fnd_request_group_units frgu,
       fnd_concurrent_programs_tl fcpt
WHERE  1                                 = 1
AND    frt.responsibility_id             = fr.responsibility_id
AND    frg.request_group_id              = fr.request_group_id
AND    frgu.request_group_id             = frg.request_group_id
AND    fcpt.concurrent_program_id        = frgu.request_unit_id
AND    frt.LANGUAGE                      = USERENV('LANG')
AND    fcpt.LANGUAGE                     = USERENV('LANG')
AND    fcpt.user_concurrent_program_name = :Concurrent_Program_Name ;

Create Credit Memo AR Invoice in Oracle Apps R12 / Creating Credit Memo Invoices in AR Oracle Apps R12

Creating Credit Memo AR Invoices in Oracle Apps R12:


SET SERVEROUTPUT ON;
DECLARE
  
   /* Local Variables declaration */
   l_customer_trx_id               ra_customer_trx.customer_trx_id%TYPE;
   l_line_credits_flag             ra_cm_requests.line_credits_flag%TYPE;
   l_line_amount                   NUMBER;
   l_freight_amount                NUMBER := 0;
   l_cm_lines_tbl                  arw_cmreq_cover.cm_line_tbl_type_cover;
   l_cm_reason_code                VARCHAR2(150);
   l_comments                      VARCHAR2(150);
   l_msg_count                     NUMBER := 0;
   l_msg_data                      VARCHAR2(20000) := NULL;  
   l_return_status                 VARCHAR2(1);
   l_request_id                    NUMBER;
   l_batch_source_name             VARCHAR2(150) DEFAULT NULL;
   ld_ct_trx_id                    NUMBER;
   lc_trx_id                       ra_customer_trx_all.customer_trx_id%TYPE;
  
   CURSOR c_trx_ct_headers
   IS (
      SELECT *
      FROM xxxx.xxxx_trx_headers_interface xxhdr
      WHERE 1          = 1
      AND   xxhdr.record_status IN ('N','D','T','S')
      AND   xxhdr.error_msg is null );
   CURSOR c_trx_ct_lines (P_record_id NUMBER)
   IS (
      SELECT *
      FROM xxxx.xxxx_trx_lines_interface
      WHERE 1          = 1
      AND   record_status IN ('N','D','T','S')
      AND   error_msg is null
      AND   record_id = P_record_id );
   BEGIN
      /* Profiles Initialization */
   BEGIN
      APPS.FND_GLOBAL.APPS_INITIALIZE (APPS.FND_GLOBAL.USER_ID, FND_GLOBAL.RESP_ID, FND_GLOBAL.RESP_APPL_ID);
      APPS.MO_GLOBAL.SET_POLICY_CONTEXT ('S', FND_GLOBAL.ORG_ID);
      APPS.MO_GLOBAL.INIT('AR');
   EXCEPTION
      WHEN OTHERS THEN
         dbms_output.put_line('Undefined Error In - Profiles Initialization '||'==> '||SQLERRM);
   END;
     
   DELETE  FROM ar_trx_errors_gt;
  
   FOR rec_hdr IN c_trx_ct_headers
   LOOP /* Header Loop Starts Here */
      BEGIN
      SELECT customer_trx_id
   INTO   lc_trx_id
   FROM   ra_customer_trx_all
      WHERE  trx_number = rec_hdr.trx_number;
   EXCEPTION
            WHEN NO_DATA_FOUND THEN
               dbms_output.put_line('No Data Found for - TAX ');
            WHEN OTHERS THEN
               dbms_output.put_line('Undefined Error - in finding TAX '||' '||SQLERRM);
   END;
      FOR rec_line IN c_trx_ct_lines (rec_hdr.record_id) 
   LOOP /* Lines Loop Starts Here */
  
  
            BEGIN
               ar_credit_memo_api_pub.create_request (
                                                   p_api_version                => 1.0,
                                                   p_init_msg_list              => fnd_api.g_true,
                                                   p_commit                     => fnd_api.g_false,
                                                   x_return_status              => l_return_status,
                                                   x_msg_count                  => l_msg_count,
                                                   x_msg_data                   => l_msg_data,
                                                   x_request_id                 => l_request_id,
                                                   p_comments                   => rec_line.comments||':'||rec_hdr.trx_number ,
                                                   p_customer_trx_id            => lc_trx_id,
                                                   p_line_credit_flag           => 'N',
                                                   p_line_amount                => ((rec_line.quantity) * (rec_line.unit_price)),
                                                   p_tax_amount                 => rec_line.tax_amount,
                                                   p_cm_reason_code             => 'RETURN',
                                                   p_skip_workflow_flag         => 'Y',
                                                   p_batch_source_name          => 'MANUAL-OTHER',
                                                   p_credit_method_installments => 'LIFO',
                                                   p_credit_method_rules        => 'LIFO',
                                                   p_org_id                     => FND_PROFILE.VALUE('ORG_ID')
                                                   );
               COMMIT;
            FND_MSG_PUB.count_and_get (
                                             p_encoded => fnd_api.g_false,
                                             p_count   => l_msg_count,
                                             p_data    => l_msg_data
                  );
                     dbms_output.put_line('Return Status ==> '||l_return_status);
                     dbms_output.put_line('Credit Memo request_id ==> '||l_request_id);
                     dbms_output.put_line('l_msg_count ==> '||l_msg_count);
     
         FOR I IN 1..L_MSG_COUNT
   LOOP
            dbms_output.put_line(SUBSTR(FND_MSG_PUB.GET(p_msg_index => I, p_encoded => 'F'), 1, 254));
         END LOOP;
         IF l_return_status <> 'S' THEN
  
   UPDATE XXXX_TRX_HEADERS_INTERFACE
   SET record_status = 'E', error_msg = 'Records Not Inserted into Base Tables'||' Validation Errors '||l_msg_data
   WHERE record_id = rec_hdr.record_id;
   
   UPDATE XXXX_TRX_LINES_INTERFACE
   SET record_status = 'E', error_msg = 'Records Not Inserted into Base Tables'||' Validation Errors '||l_msg_data
   WHERE record_id = rec_hdr.record_id;
         ELSE
   BEGIN
               SELECT cm_customer_trx_id           
               INTO   ld_ct_trx_id
               FROM   ra_cm_requests_all
               WHERE  request_id = l_request_id;
     
      UPDATE XXXX_TRX_HEADERS_INTERFACE
      SET record_status = 'S', error_msg = 'Records Inserted into Base Tables '||' Created Customer TRX ID ==> '||ld_ct_trx_id
      WHERE record_id = rec_hdr.record_id;
      
      UPDATE XXXX_TRX_LINES_INTERFACE
      SET record_status = 'S', error_msg = 'Records Inserted into Base Tables '||' = Created Customer TRX ID ==> '||ld_ct_trx_id
      WHERE record_id = rec_hdr.record_id;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         dbms_output.put_line('No Credit Memo Derived');
      WHEN OTHERS THEN
         dbms_output.put_line('Undefined Error - Credit Memo Derivation '||''||SQLERRM);
   END;
         END IF;
      EXCEPTION         
     WHEN NO_DATA_FOUND THEN   
        dbms_output.put_line(' No In Credit Memo Derivation');   
     WHEN OTHERS THEN   
        dbms_output.put_line('Undefined Error - Credit Memo Derivation '||''||SQLERRM);   
      END;
      END LOOP; /* Lines Loop Ends Here */
   END LOOP; /* Header Loop Ends Here */
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         dbms_output.put_line('No Data Found for - in Main Loop ');
      WHEN OTHERS THEN
         dbms_output.put_line('Undefined Error - in Main Loop '||''||SQLERRM); 
   END ;

Creating AR Invoice Interface Using API in Oracle R12 / Creating AR InvoiceInterface for Multiple Lines in Oracle R12 / Create AR Invoice Interface for multiple Lines with Separate Tax Line in Oracle R12

Here in this scenario Legacy data dump into my staging table from other platform. Here you can consider other platform means any other technology other than Oracle Apps.


Staging Table Creation:


/*------------------------------------------------------------
Header Columns:
------------------------------------------------------------*/
CREATE TABLE XXXX.XXXX_TRX_HEADERS_INTERFACE
/* +====================================================================+
   |                                                                    |
   |                                                                    |
   |$Id: $                                                              |
   |                                                                    |
   |Description      : XXXX_TRX_HEADERS_INTERFACE                     |
   |                   This table will have AR Invoice Header Legacy    |
   |                   Data                                             |
   |                                                                    |
   |Change History:                                                     |
   |---------------                                                     |
   |Version  Date       Author          Remarks                         |
   |-------  ---------- --------------  --------------------------------|
   |1.0         XX       XX                Initial Version                 |
   |                                                                    |
   +====================================================================+ */
(RECORD_ID                            NUMBER  
,CREATION_DATE                        DATE
,RECORD_STATUS                        VARCHAR2(1)   
,ERROR_MSG                            VARCHAR2(2000)
,BATCH_ID                             NUMBER        
,BATCH_SOURCE                         VARCHAR2(100) 
,TRX_COMMENTS                         VARCHAR2(2000)
,ORIG_SYSTEM_BILL_CUSTOMER_ID         NUMBER        
,ORIG_SYSTEM_BILL_ADDRESS_ID          NUMBER        
,ORIG_SYSTEM_SHIP_CUSTOMER_ID         NUMBER        
,ORIG_SYSTEM_SHIP_ADDRESS_ID          NUMBER        
,CUSTOMER_BANK_ACCOUNT_NAME           VARCHAR2(80)
,CUST_TRX_TYPE_NAME                   VARCHAR2(20)  
,TRX_NUMBER                           VARCHAR2(20)
,LAST_UPDATE_DATE                     DATE          
,CUSTOMER_TRX_ID                      NUMBER        
,DOCUMENT_NUMBER                      NUMBER        
,TRX_DATE                             DATE          
,GL_DATE                              DATE
,ORG_ID                               NUMBER
,TERM_NAME                            VARCHAR2(15) 
,INVOICING_RULE_NAME                  VARCHAR2(30)
,ACCOUNTING_RULE_DURATION             NUMBER  
,PREVIOUSE_CUST_TRX_ID                NUMBER 
,PRIMARY_SALESREP_NUMBER              VARCHAR2(30)
,ATTRIBUTE_CATEGORY                   VARCHAR2(30)  
,ATTRIBUTE1                           VARCHAR2(150) 
,ATTRIBUTE2                           VARCHAR2(150) 
,ATTRIBUTE3                           VARCHAR2(150) 
,ATTRIBUTE4                           VARCHAR2(150) 
,ATTRIBUTE5                           VARCHAR2(150) 
,ATTRIBUTE6                           VARCHAR2(150) 
,ATTRIBUTE7                           VARCHAR2(150) 
,ATTRIBUTE8                           VARCHAR2(150) 
,ATTRIBUTE9                           VARCHAR2(150) 
,ATTRIBUTE10                          VARCHAR2(150) 
,ATTRIBUTE11                          VARCHAR2(150) 
,ATTRIBUTE12                          VARCHAR2(150) 
,ATTRIBUTE13                          VARCHAR2(150) 
,ATTRIBUTE14                          VARCHAR2(150) 
,ATTRIBUTE15                          VARCHAR2(150)
,COMMENTS                             VARCHAR2(240)
,REASON                               VARCHAR2(2000)
);
/
CREATE OR REPLACE PUBLIC SYNONYM XXXX_TRX_HEADERS_INTERFACE
FOR XXIMSF.XXXX_TRX_HEADERS_INTERFACE;
/
/*------------------------------------------------------------
Line Columns:
------------------------------------------------------------*/
CREATE TABLE XXXX.XXXX_TRX_LINES_INTERFACE
/* +====================================================================+
   |                                                                    |
   |                                                                    |
   |$Id: $                                                              |
   |                                                                    |
   |Description      : XXXX_TRX_LINES_INTERFACE                       |
   |                   This table will have AR Invoice Lines Legacy     |
   |                   Data                                             |
   |                                                                    |
   |Change History:                                                     |
   |---------------                                                     |
   |Version  Date       Author          Remarks                         |
   |-------  ---------- --------------  --------------------------------|
   |1.0      XX        XX Initial Version                 |
   |                                                                    |
   +====================================================================+ */
(RECORD_ID                            NUMBER
,LINE_NUMBER                          NUMBER        
,RECORD_STATUS                        VARCHAR2(1)   
,ERROR_MSG                            VARCHAR2(2000)
,LINE_TYPE                            VARCHAR2(20)  
,DESCRIPTION                          VARCHAR2(240)
,QUANTITY                             NUMBER        
,UNIT_SELLING_PRICE                   NUMBER        
,UNIT_STANDARD_PRICE                  NUMBER        
,UOM_CODE                             VARCHAR2(3)   
,UOM_NAME                             VARCHAR2(25)  
,CURRENCY_CODE                        VARCHAR2(15)  
,AMOUNT                               NUMBER 
,CONVERSION_TYPE                      VARCHAR2(30)  
,CONVERSION_DATE                      DATE          
,CONVERSION_RATE                      NUMBER
,INTERFACE_LINE_CONTEXT               VARCHAR2(30)  
,INTERFACE_LINE_ATTRIBUTE1            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE2            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE3            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE4            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE5            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE6            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE7            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE8            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE9            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE10           VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE11           VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE12           VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE13           VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE14           VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE15           VARCHAR2(150)
,RULE_START_DATE                      DATE          
,RULE_END_DATE                        DATE
,LINK_TO_LINE_ID                      NUMBER
,CREDIT_METHOD_FOR_ACCT_RULE          VARCHAR2(30)  
,CREDIT_METHOD_FOR_INSTALLMENTS       VARCHAR2(30)
,MEMO_LINE_NAME                       VARCHAR2(50)
,COMMENTS                             VARCHAR2(240)
,COGS_AMOUNT                          NUMBER        
,COGS_PERCENTAGE                      NUMBER        
,COGS_GL_FLAG                         VARCHAR2(1)
,TAX_REGIME_CODE                      VARCHAR2(30)  
,TAX_TYPE                             VARCHAR2(30)  
,TAX_JURISDICATION                    VARCHAR2(50)  
,TAX_REG_STATUS                       VARCHAR2(50)  
,TAX_RATE_CODES                       VARCHAR2(50)
,CREDIT_ALLOCATION_RULE               VARCHAR2(100) 
,UNIT_PRICE                           NUMBER        
,UOM                                  VARCHAR2(30)  
,SUPPLY_DATE                          DATE          
,TAX_AMOUNT                           NUMBER        
,TAX_GL_CODE_COMBINATION              VARCHAR2(500) 
,REV_GL_CODE_COMBINATION              VARCHAR2(500) 
,TAXABLE_AMOUNT                       NUMBER      
,REASON                               VARCHAR2(2000)
,COGS_TAX_REG_STATUS                  VARCHAR2(30)  
,COGS_TAX_RATE_CODES                  VARCHAR2(50)  
,COGS_TAX_AMOUNT                      NUMBER        
,ORA_TRX_DATE                         DATE          
,ORA_GL_DATE                          DATE          
,ORA_CREATION_DATE                    DATE          
,ITEM_CODE                            VARCHAR2(240) 
,TAX_STATUS_CODE                      VARCHAR2(240) 
,TAX_ONLY_ORIGINAL_INVOICE            VARCHAR2(240) 
,TAX_ONLY_INVOICE_DATE                DATE          
,TAX_ONLY_INVOICE_AMOUNT              NUMBER        
,PRODUCT_TYPE                         VARCHAR2(240)
);
/
CREATE OR REPLACE PUBLIC SYNONYM XXXX_TRX_LINES_INTERFACE
FOR XXIMSF.XXXX_TRX_LINES_INTERFACE;
/
Here above tables purpose of creating it will hold the data till validation and periodically data will be flush out from above tables.


Now creating the AR Invoices with Multiple lines and separate Tax Lines:


SET SERVEROUTPUT ON;
DECLARE
   /* Local Variables declaration */
   /* API Output Variables */
   l_return_status                  VARCHAR2(1);
   l_msg_count                      NUMBER;
   l_msg_data                       VARCHAR2(2000);
  
   /* Record Type Variables */
   l_batch_source_rec               ar_invoice_api_pub.batch_source_rec_type;
   l_trx_header_tbl                 ar_invoice_api_pub.trx_header_tbl_type;
   l_trx_lines_tbl                  ar_invoice_api_pub.trx_line_tbl_type;
   l_trx_dist_tbl                   ar_invoice_api_pub.trx_dist_tbl_type;
   l_trx_salescredits_tbl           ar_invoice_api_pub.trx_salescredits_tbl_type;
   l_trx_contingencies_tbl_type     ar_invoice_api_pub.trx_contingencies_tbl_type;
  
   /* Local Variables */
   l_batch_id                       NUMBER;
   l_cnt                            NUMBER := 0;
   l_cntt                            NUMBER:= 1;
   v_sr_id                          VARCHAR2(240);
   v_sr_number                      VARCHAR2(240);
   v_tax_regime_code                VARCHAR2(240);
   v_tax_class_code                 VARCHAR2(240);
   ln_CUSTOMER_ID                   NUMBER;
   l_receipt_id                     NUMBER;
   lh_trx_type_id                   NUMBER;
   l_customer_trx_id                NUMBER;
   l_user_id                        NUMBER;
   l_resp_id                        NUMBER;
   l_resp_appl_id                   NUMBER;
   ln_line_no                       NUMBER;
   lh_term_id                       NUMBER;
   lh_bill_to_customer_id           NUMBER;
   lh_bill_to_site_use_id           NUMBER;
   ll_inventory_item_id    NUMBER;
   l_rec_cnt                        NUMBER:=1;
   l_err_data                       VARCHAR2(2000);
   lc_cnt                           NUMBER := 0;
   ln_inv_item_cnt                  NUMBER := 0;
   lc_error_msg      VARCHAR2(2000);
  
   CURSOR c_trx_headers
   IS
   (SELECT xxhdr.*
    FROM xxxx.xxxx_trx_headers_interface xxhdr,
      xxxx.xxxx_trx_lines_interface xxlines
 WHERE 1          = 1
 AND   xxhdr.record_id = xxlines.record_id
 AND   xxhdr.record_status IN ('N','D','T','S')
 AND   xxhdr.error_msg is null
 AND   xxlines.interface_line_attribute1 NOT IN (SELECT
                                                    interface_line_attribute1
                FROM ra_customer_trx_lines_all
                WHERE 1 = 1) );
   CURSOR c_trx_lines (P_record_id NUMBER)
   IS
   (SELECT *
    FROM xxxx.xxxx_trx_lines_interface
 WHERE 1          = 1
 AND   record_status IN ('N','D','T','S')
 AND   error_msg is null
 AND   record_id = P_record_id );

BEGIN
   BEGIN
      /* Assigning Global Profiles */
      BEGIN
         fnd_global.apps_initialize(12344, 58413, 222);
         apps.mo_global.set_policy_context ('S', 455);
   /*Fnd_Global.APPS_INITIALIZE (Fnd_Global.user_id,
           Fnd_Global.RESP_ID,
           Fnd_Global.RESP_APPL_ID);
           apps.mo_global.set_policy_context ('S', Fnd_Global.org_id);*/
      END;
  
      DELETE  FROM ar_trx_errors_gt;
     
   FOR rec_hdr in c_trx_headers
   LOOP /* Main Loop Start here */
                       
      BEGIN
         SELECT cust_trx_type_id
   INTO   lh_trx_type_id
         FROM   ra_cust_trx_types
         WHERE  name = rec_hdr.cust_trx_type_name;
      EXCEPTION
      WHEN NO_DATA_FOUND THEN
            dbms_output.put_line('No Data Found for - Customer TRX Type '||' : '||rec_hdr.cust_trx_type_name);
   lc_error_msg := 'No Data Found for - Customer TRX Type '||' : '||rec_hdr.cust_trx_type_name ;
         WHEN OTHERS THEN
            dbms_output.put_line('Undefined Error for - Customer TRX Type'||' '||SQLERRM);
   lc_error_msg := 'Undefined Error for - Customer TRX Type'||' '||SQLERRM ;
      END;
  
   BEGIN
      SELECT
               hca.cust_account_id,
               hcsua.site_use_id
         INTO
              lh_bill_to_customer_id,
              lh_bill_to_site_use_id
         FROM
              hz_cust_accounts hca,
              hz_cust_acct_sites hcasa,
              hz_cust_site_uses hcsua,
              apps.hz_parties hp
         WHERE 1                      = 1
         AND  hca.cust_account_id     = hcasa.cust_account_id
         AND  hcsua.SITE_USE_CODE     = 'BILL_TO'
         AND  hcasa.cust_acct_site_id = hcsua.cust_acct_site_id
         AND  hca.party_id            = hp.party_id
         AND  hcsua.PRIMARY_FLAG      = 'Y'
         AND  hp.party_name           IN( SELECT customer_name
                                    FROM   ar_customers
            WHERE  customer_id = rec_hdr.orig_system_bill_customer_id);  --'321 EVENTS DMCC';
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
            dbms_output.put_line('No Data Found for - Customer Account and Customer Bill-To Site Use '||' : '||rec_hdr.orig_system_bill_customer_id);
   lc_error_msg := 'No Data Found for - Customer Account and Customer Bill-To Site Use '||' : '||rec_hdr.orig_system_bill_customer_id ;
         WHEN OTHERS THEN
            dbms_output.put_line('Undefined Error for - Customer Account and Customer Bill-To Site Use '||' : '||rec_hdr.orig_system_bill_customer_id||' : '||SQLERRM);
   lc_error_msg := 'Undefined Error for - Customer Account and Customer Bill-To Site Use '||' : '||rec_hdr.orig_system_bill_customer_id||' : '||SQLERRM ;
   END;
  
   BEGIN
      SELECT batch_source_id
   INTO   l_batch_source_rec.batch_source_id
   FROM   ra_batch_sources
   WHERE  1    = 1
   AND    name = 'MANUAL-OTHER';
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
            dbms_output.put_line('No Data Found for - Batch Source '||' : '||'MANUAL-OTHER');
   lc_error_msg := 'No Data Found for - Batch Source '||' : '||'MANUAL-OTHER' ;
         WHEN OTHERS THEN
            dbms_output.put_line('Undefined Error for - Batch Source '||' : '||'MANUAL-OTHER'||' : '||SQLERRM);
   lc_error_msg := 'Undefined Error for - Batch Source '||' : '||'MANUAL-OTHER'||' : '||SQLERRM ;
   END;
   /* Get the Term Id based on Term name */
   BEGIN
      SELECT term_id
   INTO   lh_term_id
   FROM   RA_TERMS_TL
   WHERE  1    = 1
   AND    name = rec_hdr.term_name;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
            dbms_output.put_line('No Data Found for - Term '||' : '||rec_hdr.term_name);
   lc_error_msg := 'No Data Found for - Term '||' : '||rec_hdr.term_name ;
         WHEN OTHERS THEN
            dbms_output.put_line('Undefined Error for - Term '||' : '||rec_hdr.term_name||' : '||SQLERRM);
   lc_error_msg := 'Undefined Error for - Term '||' : '||rec_hdr.term_name||' : '||SQLERRM ;
   END;
   /* Assigning Header Legacy data with API Record variables */
   l_trx_header_tbl(1).trx_header_id          := rec_hdr.record_id;
   l_trx_header_tbl(1).cust_trx_type_id       := lh_trx_type_id;
   l_trx_header_tbl(1).bill_to_customer_id    := lh_bill_to_customer_id ;
   l_trx_header_tbl(1).bill_to_site_use_id    := lh_bill_to_site_use_id ;
   l_trx_header_tbl(1).trx_date               := rec_hdr.trx_date;
   l_trx_header_tbl(1).gl_date                := rec_hdr.gl_date;
   l_trx_header_tbl(1).org_id                 := rec_hdr.org_id;
   l_trx_header_tbl(1).term_id                := lh_term_id; 
   l_trx_header_tbl(1).attribute_category     := rec_hdr.attribute_category ;
   l_trx_header_tbl(1).attribute1             := rec_hdr.attribute1  ;
   l_trx_header_tbl(1).attribute2             := rec_hdr.attribute2  ;
   l_trx_header_tbl(1).attribute3             := rec_hdr.attribute3  ;
   l_trx_header_tbl(1).attribute4             := rec_hdr.attribute4  ;
   l_trx_header_tbl(1).attribute5             := rec_hdr.attribute5  ;
   l_trx_header_tbl(1).attribute6             := rec_hdr.attribute6  ;
   l_trx_header_tbl(1).attribute7             := rec_hdr.attribute7  ;
   l_trx_header_tbl(1).attribute8             := rec_hdr.attribute8  ;
   l_trx_header_tbl(1).attribute9             := rec_hdr.attribute9  ;
   l_trx_header_tbl(1).attribute10            := rec_hdr.attribute10 ;
   l_trx_header_tbl(1).attribute11            := rec_hdr.attribute11 ;
   l_trx_header_tbl(1).attribute12            := rec_hdr.attribute12 ;
   l_trx_header_tbl(1).attribute13            := rec_hdr.attribute13 ;
   l_trx_header_tbl(1).attribute14            := rec_hdr.attribute14 ;
   l_trx_header_tbl(1).attribute15            := rec_hdr.attribute15 ;
   l_trx_header_tbl(1).comments               := rec_hdr.comments    ;
   l_trx_header_tbl(1).document_creation_date := rec_hdr.creation_date ;
      dbms_output.put_line(' Before Nested Loop : '||''||l_customer_trx_id||''||SQLERRM);
  
   /* Lines Loop Starts here */
      FOR rec_line IN c_trx_lines (rec_hdr.record_id) 
   LOOP
   IF rec_line.line_type = 'TAX' THEN
      l_cnt := l_cnt + 1;

      l_trx_lines_tbl(l_cnt).trx_header_id              := rec_line.record_id;       
   l_trx_lines_tbl(l_cnt).trx_line_id                := rec_hdr.record_id + rec_line.line_number; --1 ;
   l_trx_lines_tbl(l_cnt).description                := rec_line.description ; 
   l_trx_lines_tbl(l_cnt).line_number                := rec_line.line_number ;
--   l_trx_lines_tbl(l_cnt).inventory_item_id          := ll_inventory_item_id ;
  -- l_trx_lines_tbl(l_cnt).quantity_invoiced          := rec_line.quantity ;
  -- l_trx_lines_tbl(l_cnt).unit_selling_price         := rec_line.unit_selling_price ;
   l_trx_lines_tbl(l_cnt).line_type                  := rec_line.line_type;
  -- l_trx_lines_tbl(l_cnt).unit_standard_price        := rec_line.unit_standard_price;
   --l_trx_lines_tbl(l_cnt).uom_code                   := rec_line.uom_code;
   l_trx_lines_tbl(l_cnt).amount                     := (rec_line.quantity * rec_line.unit_selling_price );
   --l_trx_lines_tbl(l_cnt).tax_regime_code            := rec_line.tax_regime_code;
   --l_trx_lines_tbl(l_cnt).tax_status_code            := rec_line.tax_status_code;
            l_trx_lines_tbl(l_cnt).rule_start_date            := rec_line.rule_start_date;
   l_trx_lines_tbl(l_cnt).rule_end_date              := rec_line.rule_end_date;
   l_trx_lines_tbl(l_cnt).product_type               := rec_line.product_type;
   l_trx_lines_tbl(l_cnt).reason_code                := rec_line.reason;
   l_trx_lines_tbl(l_cnt).unit_standard_price        := rec_line.unit_price;
   l_trx_lines_tbl(l_cnt).interface_line_context     := rec_line.interface_line_context ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute1  := rec_line.interface_line_attribute1 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute2  := rec_line.interface_line_attribute2 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute3  := rec_line.interface_line_attribute3 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute4  := rec_line.interface_line_attribute4 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute5  := rec_line.interface_line_attribute5 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute6  := rec_line.interface_line_attribute6 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute7  := rec_line.interface_line_attribute7 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute8  := rec_line.interface_line_attribute8 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute9  := rec_line.interface_line_attribute9 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute10 := rec_line.interface_line_attribute10 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute11 := rec_line.interface_line_attribute11 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute12 := rec_line.interface_line_attribute12 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute13 := rec_line.interface_line_attribute13 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute14 := rec_line.interface_line_attribute14 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute15 := rec_line.interface_line_attribute15 ;
   ELSIF rec_line.line_type = 'LINE' THEN
      l_cnt := l_cnt + 1;
   lc_cnt := lc_cnt + 1;
      dbms_output.put_line(' In Nested Loop : '||' customer trx id : '||l_customer_trx_id||' : '||SQLERRM);
   BEGIN
      SELECT COUNT(inventory_item_id)
      INTO   ln_inv_item_cnt
      FROM   mtl_system_items_b
      WHERE  1        = 1
      AND    segment1 = rec_line.item_code;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
      ln_inv_item_cnt := 0 ;
      dbms_output.put_line('Inventory Item not found: '||' Item Code : '||rec_line.item_code);
      lc_error_msg := 'Inventory Item not found: '||' Item Code : '||rec_line.item_code ;
   WHEN OTHERS THEN
      ln_inv_item_cnt := 0 ;
      dbms_output.put_line('Inventory Item not found: '||' Item Code : '||rec_line.item_code||' : '||SQLERRM);
      lc_error_msg := 'Inventory Item not found: '||' Item Code : '||rec_line.item_code||' : '||SQLERRM ;
   END;
            IF
      ln_inv_item_cnt >0 THEN
      BEGIN
         SELECT inventory_item_id
         INTO   ll_inventory_item_id
         FROM   mtl_system_items_b
         WHERE  1        = 1
         AND    segment1 = rec_line.item_code
      AND    enabled_flag = 'Y';
      EXCEPTION
               WHEN NO_DATA_FOUND THEN
                  ll_inventory_item_id := NULL;
      lc_error_msg := 'Inventory Item Not Enabled '||' : '||'Item Code :'||rec_line.item_code ;
                  dbms_output.put_line('Inventory Item Not Enabled '||' : '||'Item Code :'||rec_line.item_code);
               WHEN OTHERS THEN
                  dbms_output.put_line('Undefined Error for - Inventory Item Code '||' : '||SQLERRM);
      lc_error_msg := 'Undefined Error for - Inventory Item Code '||' : '||SQLERRM ;
      END;
            END IF;

      l_trx_lines_tbl(l_cnt).trx_header_id              := rec_line.record_id;       
   l_trx_lines_tbl(l_cnt).trx_line_id                := rec_hdr.record_id + l_cnt;
   l_trx_lines_tbl(l_cnt).description                := rec_line.description ; 
   l_trx_lines_tbl(l_cnt).line_number                := rec_line.line_number ;
   l_trx_lines_tbl(l_cnt).inventory_item_id          := ll_inventory_item_id ;
   l_trx_lines_tbl(l_cnt).quantity_invoiced          := rec_line.quantity ;
   l_trx_lines_tbl(l_cnt).unit_selling_price         := rec_line.unit_selling_price ;
   l_trx_lines_tbl(l_cnt).line_type                  := rec_line.line_type;
   l_trx_lines_tbl(l_cnt).unit_standard_price        := rec_line.unit_standard_price;
   l_trx_lines_tbl(l_cnt).uom_code                   := rec_line.uom_code;
   l_trx_lines_tbl(l_cnt).amount                     := (rec_line.quantity * rec_line.unit_selling_price );
            l_trx_lines_tbl(l_cnt).rule_start_date            := rec_line.rule_start_date;
   l_trx_lines_tbl(l_cnt).rule_end_date              := rec_line.rule_end_date;
   l_trx_lines_tbl(l_cnt).product_type               := rec_line.product_type;
   l_trx_lines_tbl(l_cnt).reason_code                := rec_line.reason;
   l_trx_lines_tbl(l_cnt).unit_standard_price        := rec_line.unit_price;
   l_trx_lines_tbl(l_cnt).interface_line_context     := rec_line.interface_line_context ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute1  := rec_line.interface_line_attribute1 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute2  := rec_line.interface_line_attribute2 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute3  := rec_line.interface_line_attribute3 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute4  := rec_line.interface_line_attribute4 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute5  := rec_line.interface_line_attribute5 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute6  := rec_line.interface_line_attribute6 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute7  := rec_line.interface_line_attribute7 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute8  := rec_line.interface_line_attribute8 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute9  := rec_line.interface_line_attribute9 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute10 := rec_line.interface_line_attribute10 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute11 := rec_line.interface_line_attribute11 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute12 := rec_line.interface_line_attribute12 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute13 := rec_line.interface_line_attribute13 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute14 := rec_line.interface_line_attribute14 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute15 := rec_line.interface_line_attribute15 ;
   l_trx_lines_tbl(l_cnt).taxable_flag               := 'N';

   /* TAX Lines Starts here */
     l_cntt := l_cnt + 1 ;
                    dbms_output.put_line(' Start Tax Lines Count : '||' Lines Count : '||l_cnt||' Tax Lines Count : '||l_cntt||' lc_cnt : '||lc_cnt);
                                  l_trx_lines_tbl(l_cntt).trx_line_id := rec_hdr.record_id + l_cntt;  
                         l_trx_lines_tbl(l_cntt).trx_header_id :=   rec_line.record_id;    
                                  l_trx_lines_tbl(l_cntt).line_number := rec_line.line_number ;
                                  l_trx_lines_tbl(l_cntt).description := 'Test Tax';
                                  l_trx_lines_tbl(l_cntt).amount := 100;
                                  l_trx_lines_tbl(l_cntt).line_type := 'TAX';
                                  l_trx_lines_tbl(l_cntt).tax_rate_code := 'AE_VAT_AR_09';
                                  l_trx_lines_tbl(l_cntt).tax_status_code := 'AE_VAT_STANDARD';
                                  l_trx_lines_tbl(l_cntt).link_to_trx_line_id := rec_hdr.record_id + l_cnt;
                                  l_trx_lines_tbl(l_cntt).tax_regime_code := 'AE_VAT'; 
                                  l_trx_lines_tbl(l_cntt).tax := 'AE_VAT';
         -- l_trx_lines_tbl(2).taxable_flag               := 'Y';
                 dbms_output.put_line(' End Tax Lines Count : '||' Lines Count : '||l_cnt||' Tax Lines Count : '||l_cntt||''||SQLERRM);
                     l_cnt := l_cnt + 1;          
   /* TAX Lines Ends here */
   END IF;
   END LOOP; /* Lines Loop Ends here */
      dbms_output.put_line(' After Nested loop end : '||' '||l_cnt);
   /* API Calling to Create AR Single Invoices with Multiple Lines and Tax Line for each Invoice Line */
   AR_INVOICE_API_PUB.create_single_invoice(
                                  p_api_version           => 1.0,
                                  p_batch_source_rec      => l_batch_source_rec,
                                  p_trx_header_tbl        => l_trx_header_tbl,
                                  p_trx_lines_tbl         => l_trx_lines_tbl,
                                  p_trx_dist_tbl          => l_trx_dist_tbl,
                                  p_trx_salescredits_tbl  => l_trx_salescredits_tbl,
                                  p_trx_contingencies_tbl => l_trx_contingencies_tbl_type,
                                  x_customer_trx_id       => l_customer_trx_id,
                                  x_return_status         => l_return_status,
                                  x_msg_count             => l_msg_count,
                                  x_msg_data              => l_msg_data
                              );
           
        dbms_output.put_line('********************************************');
                                dbms_output.put_line(' Am in API Calling End : '||'Customer Trx ID : '||l_customer_trx_id||' Oracle Message : '||SQLERRM||' API MSG : '||l_msg_data);
                                dbms_output.put_line(' API Return Status : '||''||l_return_status||' : '||SQLERRM);
                                dbms_output.put_line(' Record Count before addition : '||''||l_cnt);
        l_err_data := l_msg_data||''||SQLERRM;
                               
         IF l_return_status = 'S' AND l_customer_trx_id is not null THEN
     
   UPDATE XXIMSF_TRX_HEADERS_INTERFACE
   SET record_status = 'S', error_msg = 'Records Inserted into Base Tables '||' = Created Customer TRX ID ='||l_customer_trx_id
   WHERE record_id = rec_hdr.record_id;

   UPDATE XXXX_TRX_LINES_INTERFACE
   SET record_status = 'S', error_msg = 'Records Inserted into Base Tables '||' = Created Customer TRX ID ='||l_customer_trx_id
   WHERE record_id = rec_hdr.record_id;
   ELSE
   UPDATE XXXX_TRX_HEADERS_INTERFACE
   SET record_status = 'E', error_msg = 'Records Not Inserted into Base Tables'||' Validation Errors '||lc_error_msg||' '||l_err_data
   WHERE record_id = rec_hdr.record_id;

   UPDATE XXXX_TRX_LINES_INTERFACE
   SET record_status = 'E', error_msg = 'Records Not Inserted into Base Tables'||' Validation Errors '||lc_error_msg||' '||l_err_data
   WHERE record_id = rec_hdr.record_id;
   END IF;
   END LOOP; /* Main Loop Ends here */
      commit;
EXCEPTION
   WHEN NO_DATA_FOUND THEN
      dbms_output.put_line('No Data Found for - in Main Loop '||' '||SQLERRM);
   WHEN OTHERS THEN
      dbms_output.put_line('Undefined Error - in Main Loop '||''||SQLERRM);
END;

END;




=============== Thanks for referring my blog, keep view my blog will get latest updates. ========================

SQL Query to find Customer, Customer Account and Customer Sites Information

/****************************************************************************** *PURPOSE: Query to Customer, Customer Account and Customer...