Saturday, July 30, 2011

Default value for importing flex fields through WebADI

This small example shows how you can make the following as default options for the WebADI uploads :-

Import Flex fields : by default it should be enabled for all the uploads.
Import Flex fields without validation : by default is should be enabled for all the uploads.

Steps :-

1. Goto System Administrator > Application > Function.
2. Search for the following function using CTRL+F11 : "BNE_CREATE_DOCUMENT"
3. Go to the "Form" tab on the form functions window.
4. Put the following value in the parameters text box : bne:page=BneCreateDoc&bne:validation=True&bne:import=True&bne:importFlex=IMPORTNOVALIDATION
5. Save the changes and you are done. Now whenever you upload the WebADI template, you will find the default option is set to Import Flexfields and without validations.



Saturday, July 2, 2011

Key flexfield (KFF) validation in custom webadi template

I executed the following steps to  accomplish the validation of key flexfields :-

Step1 :- In the main procedure for the custom integrator, added a column which is not a table mapped column before registering the integrator. This column will only be present in the layout.Eg:- segment_name.

Step2 :- Updated the following columns of the bne_interface_cols_b for column(segment_name) mentioned in step1 using the update api present in the package BNE_INTERFACE_COLS_PKG.
LOV_TYPE='STANDARD',
OFFLINE_LOV_ENABLED='Y',
VAL_OBJ_NAME='oracle.apps.bne.integrator.validators.BneAccountingFlexValidator',
GROUP_NAME='TEST',
OA_FLEX_CODE='GL#' (code of KFF),
OA_CONCAT_FLEX='N'(to keep values in separate column on upload)
VAL_TYPE='KEYFLEX',
VAL_COMPONENT_CODE='OA_FLEX',
VAL_COMPONENT_APP_ID='231',
OA_FLEX_APPLICATION_ID='101'(application id of KFF),
DATA_TYPE=null,
UPLOAD_PARAM_LIST_ITEM_NUM=null

Step3 :- Updated the bne_interface_cols_b  for the child fields or table mapped fields for which the column created in step1 is parent using the package BNE_INTERFACE_COLS_PKG.Columns which should be updated :
DISPLAY_FLAG='N',
GROUP_NAME='TEST' (one created for parent),
VAL_TYPE='KEYFLEXSEG'.

Step4: Created the layout using Oracle WebADI responsibility and added the parent column in the layout. After  downloading the webadi, the parent column was an LOV(KFF) validated field and the data from the LOV(KFF) will be mapped to the child table mapped columns on upload.


Thursday, June 30, 2011

Clear the WebADI Cache

You can follow the below steps to clear the WebADI Cache:

1. Login as to the Oracle Apps EBiz Suite as "Sysadmin".
2. On the home page. Go the browser url and paste the following :-

Suppose your Oracle EBiz url is :- https://oracleapps.abc.com/ then paste the following on the browser url
https://oracleapps.abc.com/OA_HTML/BneAdminServlet and press enter.

You will see the home page of Bne Admin Servlet and from here you can clear the relevant BNE Cache.

Monday, June 27, 2011

Oracle Form personalization : Personalizing the LOV

This small article will provide you an example to personalize the LOV on a form. I have chosen the GL journal entry for this example. With this example i am going to personalize the LOV for journal category on the journal entry form. This personalization will restrict seeded category to appear in the LOV for journal category. Following are the steps :-

  • Go the enter journal form.
  • Help > Diagnostics > Custom Code > Personalize
  • It will ask you enter the Oracle password. After entering the oracle password you will get the form personalization window.
  • Put a sequence number say 1 in the sequence column. Enter the brief description of the personalization, say "Disabling seeded categories from the category LOV". Choose level as "function".
  • Navigate to the conditions tab. Choose "WHEN-NEW-ITEM-INSTANCE" as trigger event and trigger objects as the field name which in this example will be "HEADER.USER_JE_CATEGORY_NAME". Choose processing mode as "Both" i.e. for both enter and query mode on the form. If you want, you can restrict this personalization on "User","Responsibility" or "Site" level. In this example i am choosing the default option ie. "Site". Save the changes.
  • Navigate to the second tab i.e "Actions".  In the sequence field , put value as "1" and type as "Bulletin". Choose the bulletin type as "Create Record Group from Query". In the argument put the modified query. Please make a note that you need to get the default query for the LOV first by enabling the "Trace with binds". E.g : I got the following querying from the trace
"Select je_category_name,user_je_category_name,description from gl_je_categories order by user_je_category_name"
  • I modified the above query to remove the seeded categories. The default category has created_by value as "1" therefore i simply added a clause to remove those entries which has created_by column value as "1". Remember not to put a ";" after the query.Click validate button to validate the argument.
"Select je_category_name,user_je_category_name,description from gl_je_categories where createdy_by <> '1'  order by user_je_category_name"
  • Enter a default group name E.g. : "TEST_FOR_CATEGORY". Now make another entry in the sequence field say "2", choose type as "Property", Object Type as "LOV", Target Object as "USER_JE_CATEGORY_NAME", Property Name as "Group Name" and Value as "TEST_FOR_CATEGORY" which you used as group name for first sequence. Save the changes and click "Apply Now". You are done and you can validate the output of the Category LOV on the journal entry form.

Monday, January 3, 2011

Assign custom WebADI template to a specific responsibility

I followed the below steps to assign my custom WebADI template to a specific responsibility :-

1. Navigate to Application Developer responsibility > Application > Function.
Enter your custom function name/user function name and description  on the description tab.
2. Navigate to the properties tab on the function form.
Choose type as "SSWA servlet function"  for you function.
3. Go to WebHTML tab on the function form.
Enter HTMLCall as "BneApplicationService".
4. Go to the forms tab on the function form.
Enter parameters as bne:page=BneCreateDoc&bne:integrator= GENERAL_1021_INTG where GENERAL_1021_INTG is your integrator code present in bne_integrators_vl table.
Save all the changes.
5. Navigate to Application Developer responsibility > Application > Menu.
Create a new Menu by providing the menu and user menu name along with description.
Add a prompt and choose the function name which you created in the above mentioned steps
in the funciton column.
6. Associate the menu created above with the required responsibility.

Tuesday, December 21, 2010

Columns prompts for the fields present in custom WebADI template

If you want to change the column prompts i.e the field names appearing on the custom WebADI template to appear different than what you have used for your parameters, you need to follow the below simple steps :-

Eg:- Suppose one of the parameters data in the integrator package was p_Date and you want it to appear as Date on the custom WebADI template, the following needs to be done :-

-> Update the prompt_above,prompt_left columns  of bne_interface_cols_tl for your application id , interface code and the parameter name.

However do remember to perform this step after your integrator has been successfully uploaded/registered. Once the interface table has bas been updated, you will be able to see the new field names in the layout.

Monday, December 20, 2010

Raising custom error messages in custom WebADI template

In order to raise a custom error message using your custom WebADI
integrator, I did the following:

1. Registered/Created a custom error message in the fnd_new_messages.

2. In the package which has been registered for the WebADI integrator i created a common error handling procedure which will be called on errors.

3. The definition of the error handling procedure looks like this :

Spec : Error_handler(p_error_code,p_error_msg)
Body :
fnd_message.set_name ('ABC ', p_error_code);
fnd_message.set_token ('TOKEN', p_error_msg);
fnd_message.raise_error;

4. Call this error handler on the errors and you will be able to see the error code and error message on the template.