1: Create a table
Where WEB ADI will store the data. Table might be created in Custom schema.
2. Create a Package.
(It has to be in APPS Schema)
In this case XX_TRAVEL_EXPENSE_ADI_PKG package,
procedure XX_TRAVEL_EXPENSE_PRC.
** Note XX_TRAVEL_EXPENSE_PRC parameters should start with p_
(
p_company VARCHAR2,
p_vendor_name VARCHAR2,
p_invoice_num VARCHAR2,
p_inv_currency VARCHAR2,
p_invoice_date DATE,
)
then only prompt will automatically appear company , vendor_name, invoice_num, inv_currency, invoice_date.
3. Once the database object is created, then create integrator.
DECLARE
ln_application_id NUMBER;
lc_integtr_code VARCHAR2 (50);
lx_interface_code VARCHAR2 (50);
lx_param_list_code VARCHAR2 (50);
ln_application_id NUMBER;
ln_ret number;
--Create integrator
BEGIN
bne_integrator_utils.create_integrator
(p_application_id => 20003,
p_object_code => 'XX_TRAVEL_INV',
p_integrator_user_name => 'XX Travel Invoice Upload WEB ADI',
p_language => 'US',
p_source_language => 'US',
p_user_id => -1,
p_integrator_code => lc_integtr_code
);
DBMS_OUTPUT.put_line ('lc_integtr_code = ' || lc_integtr_code);
END;
Check it once it is created
SELECT *
FROM bne_integrators_b
WHERE integrator_code LIKE 'XX_TRAVEL_INV%';
4. Create Interface
DECLARE
ln_application_id NUMBER;
lc_integtr_code VARCHAR2 (50);
lx_interface_code VARCHAR2 (50);
lx_param_list_code VARCHAR2 (50);
ln_application_id NUMBER;
BEGIN
bne_integrator_utils.create_interface_for_api
(p_application_id => 20003,
p_object_code => 'XX_TRAVEL_INV',
p_integrator_code => 'XX_TRAVEL_INV_INTG',
p_api_package_name => 'XX_TRAVEL_EXPENSE_ADI_PKG',
p_api_procedure_name => 'XX_TRAVEL_EXPENSE_PRC',
p_interface_user_name => 'XX Travel Invoice Upload WEB ADI',
p_param_list_name => 'XX Travel Invoice PL',
p_api_type => 'PROCEDURE',
p_api_return_type => NULL,
p_upload_type => 2,
p_language => 'US',
p_source_lang => 'US',
p_user_id => -1,
p_param_list_code => lx_param_list_code,
p_interface_code => lx_interface_code
);
DBMS_OUTPUT.put_line ('lx_interface_code = ' || lx_interface_code);
DBMS_OUTPUT.put_line ('lx_param_list_code = ' || lx_param_list_code);
--EXCEPTION
-- WHEN OTHERS
-- THEN
-- DBMS_OUTPUT.put_line ('Error = ' || SQLERRM);
END;
Check Interface
SELECT *
FROM bne_interface_cols_tl
WHERE interface_code LIKE 'XX%' ;
SELECT *
FROM bne_interface_cols_vl
WHERE interface_code LIKE 'XX%';
SELECT *
FROM bne_interface_cols_b
WHERE interface_code LIKE 'XX%'
4. Create an ADI function with following values:
FunctionName UserFunctionName Description Type MaintainanceMode ContextDependence
************************************************************************************************************************
<User defined> <User defined> <User defined> SSWA servlet function None Responsibility
Form Application
*********************************************************************************
Parameter
***************************************
<none> <none> bne:page=BneCreateDoc&bne:noreview=true&bne:integrator=20003:GENERAL%25&bne:reporting=N
HTML Call Host Name
*********************************************************************************
BneApplicationService http://le0003.oracleads.com:80
5. Use the ORACLE WEB ADI responsibility and go to DEFINE LAYOUT option
Give LAYOUT name
From the drop down select the INTERGRATOR USER NAME as defined above and click on 'GO'
A screen with all the procedure parameters will appear.
Select 'LINE' as placement value for all the parameters and APPLY
7. Create and entry against the USER FUNCTION NAME in the menu under which ADI needs to be accessed.
ADI is ready to use.
Additional Steps:
Add Date LOV in the WEB ADI Column
DECLARE
ln_application_id NUMBER;
lc_integtr_code VARCHAR2 (50);
lx_interface_code VARCHAR2 (50);
lx_param_list_code VARCHAR2 (50);
ln_application_id NUMBER;
BEGIN
bne_integrator_utils.create_calendar_lov
(p_application_id => 20003,
p_interface_code => 'XX_TRAVEL_INV_INTF',
p_interface_col_name => 'P_INVOICE_DATE',--proc params
p_window_caption => 'Select Date',
p_window_width => 400,
p_window_height => 300,
p_table_columns => 'INVOICE_DATE',
p_user_id => 10803
);
END;
ADD Lov in the fields,
DECLARE
ln_application_id NUMBER;
lc_integtr_code VARCHAR2 (50);
lx_interface_code VARCHAR2 (50);
lx_param_list_code VARCHAR2 (50);
ln_application_id NUMBER;
BEGIN
bne_integrator_utils.create_table_lov
(p_application_id => 20003,
p_interface_code => 'XX_TRAVEL_INV_INTF',
p_interface_col_name => 'P_INV_CURRENCY',
p_id_col => 'CURRENCY_CODE',
p_mean_col => 'CURRENCY_CODE',
p_desc_col => 'CURRENCY_CODE',
p_table => 'GL_CURRENCIES',
p_addl_w_c => 'NVL (ENABLED_FLAG, ''N'') = ''Y''',
p_window_caption => 'Select Currency',
p_window_width => 400,
p_window_height => 300,
p_table_block_size => 10,
p_table_sort_order => 'Yes',
p_user_id => 0
);
END;
Where WEB ADI will store the data. Table might be created in Custom schema.
2. Create a Package.
(It has to be in APPS Schema)
In this case XX_TRAVEL_EXPENSE_ADI_PKG package,
procedure XX_TRAVEL_EXPENSE_PRC.
** Note XX_TRAVEL_EXPENSE_PRC parameters should start with p_
(
p_company VARCHAR2,
p_vendor_name VARCHAR2,
p_invoice_num VARCHAR2,
p_inv_currency VARCHAR2,
p_invoice_date DATE,
)
then only prompt will automatically appear company , vendor_name, invoice_num, inv_currency, invoice_date.
3. Once the database object is created, then create integrator.
DECLARE
ln_application_id NUMBER;
lc_integtr_code VARCHAR2 (50);
lx_interface_code VARCHAR2 (50);
lx_param_list_code VARCHAR2 (50);
ln_application_id NUMBER;
ln_ret number;
--Create integrator
BEGIN
bne_integrator_utils.create_integrator
(p_application_id => 20003,
p_object_code => 'XX_TRAVEL_INV',
p_integrator_user_name => 'XX Travel Invoice Upload WEB ADI',
p_language => 'US',
p_source_language => 'US',
p_user_id => -1,
p_integrator_code => lc_integtr_code
);
DBMS_OUTPUT.put_line ('lc_integtr_code = ' || lc_integtr_code);
END;
Check it once it is created
SELECT *
FROM bne_integrators_b
WHERE integrator_code LIKE 'XX_TRAVEL_INV%';
4. Create Interface
DECLARE
ln_application_id NUMBER;
lc_integtr_code VARCHAR2 (50);
lx_interface_code VARCHAR2 (50);
lx_param_list_code VARCHAR2 (50);
ln_application_id NUMBER;
BEGIN
bne_integrator_utils.create_interface_for_api
(p_application_id => 20003,
p_object_code => 'XX_TRAVEL_INV',
p_integrator_code => 'XX_TRAVEL_INV_INTG',
p_api_package_name => 'XX_TRAVEL_EXPENSE_ADI_PKG',
p_api_procedure_name => 'XX_TRAVEL_EXPENSE_PRC',
p_interface_user_name => 'XX Travel Invoice Upload WEB ADI',
p_param_list_name => 'XX Travel Invoice PL',
p_api_type => 'PROCEDURE',
p_api_return_type => NULL,
p_upload_type => 2,
p_language => 'US',
p_source_lang => 'US',
p_user_id => -1,
p_param_list_code => lx_param_list_code,
p_interface_code => lx_interface_code
);
DBMS_OUTPUT.put_line ('lx_interface_code = ' || lx_interface_code);
DBMS_OUTPUT.put_line ('lx_param_list_code = ' || lx_param_list_code);
--EXCEPTION
-- WHEN OTHERS
-- THEN
-- DBMS_OUTPUT.put_line ('Error = ' || SQLERRM);
END;
Check Interface
SELECT *
FROM bne_interface_cols_tl
WHERE interface_code LIKE 'XX%' ;
SELECT *
FROM bne_interface_cols_vl
WHERE interface_code LIKE 'XX%';
SELECT *
FROM bne_interface_cols_b
WHERE interface_code LIKE 'XX%'
4. Create an ADI function with following values:
FunctionName UserFunctionName Description Type MaintainanceMode ContextDependence
************************************************************************************************************************
<User defined> <User defined> <User defined> SSWA servlet function None Responsibility
Form Application
*********************************************************************************
Parameter
***************************************
<none> <none> bne:page=BneCreateDoc&bne:noreview=true&bne:integrator=20003:GENERAL%25&bne:reporting=N
HTML Call Host Name
*********************************************************************************
BneApplicationService http://le0003.oracleads.com:80
5. Use the ORACLE WEB ADI responsibility and go to DEFINE LAYOUT option
Give LAYOUT name
From the drop down select the INTERGRATOR USER NAME as defined above and click on 'GO'
A screen with all the procedure parameters will appear.
Select 'LINE' as placement value for all the parameters and APPLY
7. Create and entry against the USER FUNCTION NAME in the menu under which ADI needs to be accessed.
ADI is ready to use.
Additional Steps:
Add Date LOV in the WEB ADI Column
DECLARE
ln_application_id NUMBER;
lc_integtr_code VARCHAR2 (50);
lx_interface_code VARCHAR2 (50);
lx_param_list_code VARCHAR2 (50);
ln_application_id NUMBER;
BEGIN
bne_integrator_utils.create_calendar_lov
(p_application_id => 20003,
p_interface_code => 'XX_TRAVEL_INV_INTF',
p_interface_col_name => 'P_INVOICE_DATE',--proc params
p_window_caption => 'Select Date',
p_window_width => 400,
p_window_height => 300,
p_table_columns => 'INVOICE_DATE',
p_user_id => 10803
);
END;
ADD Lov in the fields,
DECLARE
ln_application_id NUMBER;
lc_integtr_code VARCHAR2 (50);
lx_interface_code VARCHAR2 (50);
lx_param_list_code VARCHAR2 (50);
ln_application_id NUMBER;
BEGIN
bne_integrator_utils.create_table_lov
(p_application_id => 20003,
p_interface_code => 'XX_TRAVEL_INV_INTF',
p_interface_col_name => 'P_INV_CURRENCY',
p_id_col => 'CURRENCY_CODE',
p_mean_col => 'CURRENCY_CODE',
p_desc_col => 'CURRENCY_CODE',
p_table => 'GL_CURRENCIES',
p_addl_w_c => 'NVL (ENABLED_FLAG, ''N'') = ''Y''',
p_window_caption => 'Select Currency',
p_window_width => 400,
p_window_height => 300,
p_table_block_size => 10,
p_table_sort_order => 'Yes',
p_user_id => 0
);
END;
Other usefull API:
1. Delete Integrator
DECLARE
v_value NUMBER;
BEGIN
v_value :=
bne_integrator_utils.delete_integrator (20003, 'XX_TRAVEL_INV_INTG');
DBMS_OUTPUT.put_line (v_value);
END;
2. delete Interface
DECLARE
v_value NUMBER;
BEGIN
v_value :=
bne_integrator_utils.DELETE_INTERFACE (20003, 'XX_TRAVEL_INV_INTF');
DBMS_OUTPUT.put_line (v_value);
END;
Change the Prompt lebel,
UPDATE bne_interface_cols_tl
SET prompt_left = 'Company',
prompt_above = 'Company',
user_hint = '*List - Text'
WHERE prompt_left = 'COMPANY'
AND interface_code = 'XX_TRAVEL_INV_INTF'
AND LANGUAGE = 'US';
UPDATE bne_interface_cols_tl
SET prompt_left = 'Invoice Date',
prompt_above = 'Invoice Date',
user_hint = '*List - Date'
WHERE prompt_left = 'INVOICE_DATE'
AND interface_code = 'XX_TRAVEL_INV_INTF'
AND LANGUAGE = 'US';
hi,
ReplyDeleteThanks for providing indetail.It would be more helpful if the package details are also provided.
Thanks,
Sarmista
Hi,
ReplyDeleteNice article,
One thing that is not clear is how to pass list of parameters to Interface API. If i want to have 10 columns of different data types in my ADI template, how to I pass the details to API to create those columns?
Regards,
Mohammed
Hi,
ReplyDeleteI have two interface table one is header and another is detail. Two separate procedure are defined in the PL/SQL Package. In excel template there is one header record and three detail. However when uploading the data instead of 1 record inserted in the header table, it upload 3 records.
Regards
Naveeed
This is really helpful!
ReplyDelete1) Is there a way to create the Layouts using API?
2) Is there a way to add Contents using API ?
How to delete a LOV created using: bne_integrator_utils.create_table_lov
ReplyDelete