Documente Academic
Documente Profesional
Documente Cultură
Requirement: Web ADI interface needed to be developed to import Invoices, Layout to be designed
--> ====================================================================
CREATE OR REPLACE PACKAGE XXAA_APINV_IFACE_PKG
IS
PROCEDURE XXAA_APINV_IFACE_LOAD_PRC
(
P_SOURCE VARCHAR2
,P_ORGANIZATION VARCHAR2
,P_INVOICE_TYPE VARCHAR2
,P_SUPPLIER_NAME VARCHAR2
,P_SUPPLIER_NUM VARCHAR2
,P_SUPPLIER_SITE VARCHAR2
,P_INVOICE_DATE DATE
,P_INVOICE_NUMBER VARCHAR2
,P_INVOICE_AMOUNT NUMBER
,P_TERMS VARCHAR2
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
,P_INVOICE_CURRENCY VARCHAR2
,P_GL_DATE DATE
,P_PAYMENT_CURRENCY VARCHAR2
,P_PAYMENT_METHOD VARCHAR2
,P_LINE_NUM NUMBER
,P_LINE_TYPE VARCHAR2
,P_LINE_AMOUNT NUMBER
,P_LINE_DESCRIPTION VARCHAR2
,P_SEGMENT1 VARCHAR2
,P_SEGMENT2 VARCHAR2
,P_SEGMENT3 VARCHAR2
,P_SEGMENT4 VARCHAR2
,P_SEGMENT5 VARCHAR2
);
PROCEDURE XXAA_APINV_IFACE_IMPORT_PRC;
END XXAA_APINV_IFACE_PKG;
/
--> ====================================================================
CREATE OR REPLACE PACKAGE XXAA_APINV_IFACE_PKG
IS
PROCEDURE XXAA_APINV_IFACE_LOAD_PRC
(
P_SOURCE VARCHAR2
,P_ORGANIZATION VARCHAR2
,P_INVOICE_TYPE VARCHAR2
,P_SUPPLIER_NAME VARCHAR2
,P_SUPPLIER_NUM VARCHAR2
,P_SUPPLIER_SITE VARCHAR2
,P_INVOICE_DATE DATE
,P_INVOICE_NUMBER VARCHAR2
,P_INVOICE_AMOUNT NUMBER
,P_TERMS VARCHAR2
,P_INVOICE_CURRENCY VARCHAR2
,P_GL_DATE DATE
,P_PAYMENT_CURRENCY VARCHAR2
,P_PAYMENT_METHOD VARCHAR2
,P_LINE_NUM NUMBER
,P_LINE_TYPE VARCHAR2
,P_LINE_AMOUNT NUMBER
,P_LINE_DESCRIPTION VARCHAR2
,P_SEGMENT1 VARCHAR2
,P_SEGMENT2 VARCHAR2
,P_SEGMENT3 VARCHAR2
,P_SEGMENT4 VARCHAR2
,P_SEGMENT5 VARCHAR2
);
PROCEDURE XXAA_APINV_IFACE_IMPORT_PRC;
END XXAA_APINV_IFACE_PKG;
/
--> ====================================================================
CREATE OR REPLACE PACKAGE body XXAA_APINV_IFACE_PKG
IS
PROCEDURE XXAA_APINV_IFACE_LOAD_PRC
(
P_SOURCE VARCHAR2
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
,P_ORGANIZATION VARCHAR2
,P_INVOICE_TYPE VARCHAR2
,P_SUPPLIER_NAME VARCHAR2
,P_SUPPLIER_NUM VARCHAR2
,P_SUPPLIER_SITE VARCHAR2
,P_INVOICE_DATE DATE
,P_INVOICE_NUMBER VARCHAR2
,P_INVOICE_AMOUNT NUMBER
,P_TERMS VARCHAR2
,P_INVOICE_CURRENCY VARCHAR2
,P_GL_DATE DATE
,P_PAYMENT_CURRENCY VARCHAR2
,P_PAYMENT_METHOD VARCHAR2
,P_LINE_NUM NUMBER
,P_LINE_TYPE VARCHAR2
,P_LINE_AMOUNT NUMBER
,P_LINE_DESCRIPTION VARCHAR2
,P_SEGMENT1 VARCHAR2
,P_SEGMENT2 VARCHAR2
,P_SEGMENT3 VARCHAR2
,P_SEGMENT4 VARCHAR2
,P_SEGMENT5 VARCHAR2
)
IS
l_error_message VARCHAR2(3000);
l_error_code VARCHAR2(2);
l_org_id NUMBER;
l_invoice_num VARCHAR2(60);
l_vendor_id NUMBER;
l_vendor_site_id NUMBER;
l_term_id NUMBER;
l_code_combination_id NUMBER;
BEGIN
l_error_message := '';
l_error_code :='V';
-->Organization Validation
BEGIN
l_org_id := NULL;
SELECT organization_id
INTO l_org_id
FROM hr_organization_units hou
WHERE hou.name=P_ORGANIZATION;
EXCEPTION
WHEN no_data_found THEN
l_error_message :=l_error_message||','||'Organization not defined ';
l_error_code :='E';
WHEN too_many_rows THEN
l_error_message :=l_error_message||','||'Too Many Records for Organization ';
l_error_code :='E';
WHEN OTHERS THEN
l_error_message :=l_error_message||','||'Other Errors with Organization '||SQLCODE
||sqlerrm;
l_error_code :='E';
END;
IF l_invoice_num > 0
THEN
l_error_message :=l_error_message||','||'Invoice number already exist in oracle
';
l_error_code :='E';
END IF;
EXCEPTION
WHEN no_data_found THEN
l_error_message :=l_error_message||','||'Error in validating the invoice number ';
l_error_code :='E';
WHEN OTHERS THEN
l_error_message :=l_error_message||','||'Other Errors with invoice number '||SQLCODE
||sqlerrm;
l_error_code :='E';
END;
-->Supplier Validation
BEGIN
l_vendor_id := NULL;
SELECT vendor_id
INTO l_vendor_id
FROM ap_suppliers aps
WHERE (UPPER(aps.vendor_name) = UPPER(P_SUPPLIER_NAME) OR UPPER(aps.segment1) =
UPPER(P_SUPPLIER_NUM));
EXCEPTION
WHEN no_data_found THEN
l_error_message :=l_error_message||','||'Supplier not defined ';
l_error_code :='E';
WHEN too_many_rows THEN
l_error_message :=l_error_message||','||'Too Many Records for Supplier ';
l_error_code :='E';
WHEN OTHERS THEN
l_error_message :=l_error_message||','||'Other Errors with Supplier '||SQLCODE ||sqlerrm;
l_error_code :='E';
END;
-->Terms Validation
BEGIN
l_term_id := NULL;
SELECT term_id
INTO l_term_id
FROM ap_terms apt
WHERE UPPER(apt.name) = UPPER(P_TERMS);
EXCEPTION
WHEN no_data_found THEN
l_error_message :=l_error_message||','||'Terms not defined ';
l_error_code :='E';
WHEN too_many_rows THEN
l_error_message :=l_error_message||','||'Too Many Records for Terms ';
l_error_code :='E';
WHEN OTHERS THEN
l_error_message :=l_error_message||','||'Other Errors with Terms '||SQLCODE ||sqlerrm;
l_error_code :='E';
END;
IF (l_error_code='E')
THEN
raise_application_error(-20101,SUBSTR(l_error_message,2));
END IF;
EXCEPTION
WHEN OTHERS
THEN
raise_application_error(-20102,'Error -'||SQLCODE||'-'||sqlerrm);
END XXAA_APINV_IFACE_LOAD_PRC;
--> --------------------------------------------------------------------
PROCEDURE XXAA_APINV_IFACE_IMPORT_PRC
IS
CURSOR c_inv
IS
SELECT DISTINCT
api.source,
api.org_id,
api.invoice_type,
api.vendor_id,
api.vendor_site_id,
api.invoice_date,
api.invoice_number,
api.invoice_amount,
api.term_id,
api.invoice_currency,
api.gl_date,
api.payment_currency,
api.payment_method
FROM XXAA_APINV_IFACE_TBL api
WHERE api.error_code='V'
ORDER BY
api.org_id,
api.invoice_type,
api.vendor_id,
api.vendor_site_id,
api.invoice_number;
BEGIN
BEGIN
COMMIT;
END;
l_conc_request_id := FND_REQUEST.SUBMIT_REQUEST
( APPLICATION => 'SQLAP'
,PROGRAM => 'APXIIMPT'
,ARGUMENT1 => '204'
,ARGUMENT2 => 'MANUAL INVOICE ENTRY'
,ARGUMENT4 => l_batch_name
);
COMMIT;
l_request_status := FND_CONCURRENT.WAIT_FOR_REQUEST
(
l_conc_request_id,
60,
0,
l_phase,
l_status,
l_dev_phase,
l_dev_status,
l_message
);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
raise_application_error(-20103,'Error -'||SQLCODE||'-'||sqlerrm);
END XXAA_APINV_IFACE_IMPORT_PRC;
END XXAA_APINV_IFACE_PKG;
/
--> ====================================================================
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Integrator
1. Create Integrator
Navigation : Desktop Integration Manager Responsibility-> Create Integrator
2. Create Interface
Interface Name : XXAA APINV Interface
Interface Type : API Procedure
Package Name : XXAA_APINV_IFACE_PKG
Procedure/Funtion : XXAA_APINV_IFACE_LOAD_PRC
API Returns : FND Message Code
Click on Apply button
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
3. Create Content
Content Name : XXAA APINV Interface Content
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Rename the display names as per csv header columns for better under standing
And provide the content parameter (download parameter) as Web ADI: Download "Text File" Parameters
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
4. Create Uploader
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
5. Create Importer
Select importer type as PL/SQL API
Importer Name : XXAA_APINV_IFACE
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Click on PL/SQL API Call plus button to add our custom procedure
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Layout
1. Create Layout
Navigation: Desktop Integration Responsibility Define Layout
Select the integrator Go Create button
2. Define Mapping
1. Define mapping
Navigation: Desktop Integration Responsibility -> Defining mapping-> select integrator-> go
3. Create Document
1. Create Document :- Test the document with sample data
Navigation: Desktop Integration Responsibility -> Create Document -> select integrator
Enter the data and upload and verify the invoice number from application
Note: we have developed the sheet. Now it needs some cosmetic changes
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Changes
1. Change the Labels of fields
Navigation: Go to integrator-> Interface-> Enter the Integrator name and click on Go
Click on Next
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Click on the Update button and change Above Prompt then Save and Submit
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Provide the information under user hint text item as *ListText to give an idea user about what value should be entered or
select
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Do the same for other columns too then save and get the new document to see the changes
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Result
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Function : XXAA_APINV_IFACE_FF
User Function Name : XXAA APINV Interface Integrator
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Form Parameters
bne:page=BneCreateDoc&bne:viewer=BNE:EXCEL2007&bne:reporting=N&bne:integrator=USER_NAME:XXA
A APINV Interface Integrator&bne:noreview=Yes
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Save it.
Search for your menu where you want to add this ADI
Menu : AP_NAVIGATE_GUI12
Prompt : XXAA APINV Interface Integrator
Function : XXAA APINV Interface Integrator
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
Now you can navigate to your custom responsibility to see the ADI which you have assigned.
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
4. Once we click on upload button, it will pop up the upload page where we have to select Automatically Submit
Import check box as we have added import procedure in importer rule. If it is checked then only it will call that import
program, otherwise it wont
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch
5. If there is any error, then program will return error message and will rollback the transaction
6. After correcting the data, run again. And if there is no error, then program will insert all validated data into oracle
tables and call the import journal program
7. We can monitor the import program from spread sheet itself by clicking on monitor button
Click on the Monitor to check the request id
Nav : Add-Ins Oracle Monitor
Oracle Custom WEB ADI for AP Invoice Interface Raju Ch