Tuesday, July 17, 2012

Forms Customization Steps in Oracle Applications


Steps required to customize a form in Oracle Applications.
Lets do some Questions and Answers:-

Question: Is it a common practice to modify forms in Oracle Apps?
Answer: Yes and No.
Yes because you often will be called upon to modify the forms, but no because most often you should modify the screen without actually modifying the underlying forms executable .

Question: How can I modify screen without modifying the underlying executable ?
Answer: There are two ways, listed in the order of preferences:-
1. Forms Personalizations
2. CUSTOM.pll

Question: How does forms personalization work?
Answer: Oracle forms has triggers that we trap to write our business logic. Oracle has a standard practice of calling a generic piece of code from each trigger(at form level).  In this generic piece of code Oracle checks in personalizations tables to see if anything extra needs to be done for the events being executed.

Question: Fine then, but why is CUSTOM.pLL needed when we already have forms personalization?
Answer: Well just like any technology, forms personalization has its limitations.

Limitation example 1 of forms personalizations
---------------------------------------------------
For example you wish to prompt a message to user DO YOU WISH TO CREATE THIS PERSON AS SUPPLIER OR CUSTOMER OR EMPLOYEE. Lets say this message will prompt three options, create customer , create supplier or create vendor. Depending upon what user selects, you wish to navigate to one of relevant screens from the current TCA screen. For this, you have no choice but to use CUSTOM.pll

Limitation example 2 of forms personalizations
---------------------------------------------------
For example you wish to change the record group of a LOV, via changing its query, in a screen.  This can be done by CUSTOM.pll, but not by forms personalization.


Question: What about CUSTOM.pll, what can't be done via custom.pll ??  Hence calling for forms customization.
Answer: For example, you need to add a complete new section to the screen at a very specific location, this must be done via forms customization.

Question : Ok, what are the steps for customization of such screen.
Answer: Below steps in brief
A) Identify the form in Oracle Apps that needs to be customized.
B) Go to the specific directory on one of the mid-tiers to get that forms executable. Say from $AU_TOP/forms/US/POENTRY.fmb.
C) FTP that form and all its dependable form objects & pll files to your PC.
D) Open the form, ensuring that you do not receive any errors pertaining to missing library or missing form object.
E) Perform a save-as to rename this form on your pc, using your company's naming conventions.
F) Make the desired modifications to the form.
G) Generate the form on PC using Control-T keystrokes. This will ensure that nothing critical has been missed out. Surely you will need to connect to apps schema before generating the form.
H)  FTP the form file to $XXPO_TOP/forms/US
Surely, this XX will be replaced by the naming convention at your client/company.
I)  cd to  $XXPO_TOP/forms/US
And f60gen on XXPOENTRY.fmb
This will create a file executable as XXPOENTRY.fmx
J) Go to Application Developer responsibility
Menu /applicaton/form
Register the form
K) Register the Forms Function
This forms function must be registered against application "XX Purchasing".
L) Now add a menu item so that this forms function becomes available to specific responsibility.

Question: Well, a question about (A), how to identify the form executable?
Answer: There are two ways.
Method1
Open the form to be customized in Oracle Apps from respective Responsibility/Menu
Next select menu /Help/About Oracle Application.
Here, scroll down within the subwindow and search for fmx. This is the executable that oracle application runs when specific form is invoked.

Method2
Query the responsibility definition which has the form attached to this. Note down the Menu which is attached to Responsibility. Go to the menu definition screen and find the form function attached to this menu. From this form function find the form attached to this function.

Question: Regarding (I), what is the command for f60gen
Answer:
FORMS60_PATH=$FORMS60_PATH:$AU_TOP/forms/US
export FORMS60_PATH
cd $XXPO_TOP/forms/US
f60gen module=XXPOENTRY.fmb userid=apps/apps module_type=form batch=no compile_all=special  
HAPPY LEARNING!