Form Personalization

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 109
At a glance
Powered by AI
Form personalization allows customizing form behavior through declarative rules. The major components are rules, conditions, context and actions.

Form personalization feature allows declaratively altering form behavior like changing properties, executing built-ins, displaying messages and adding menu entries.

The major components are rules, conditions, context and actions. Rules define the header and details. Conditions decide when rules execute based on triggers. Context provides additional information for rules.

Form Personalizatio

What is Form Personalization?


The Form Personalization feature allows you to declaratively alter the behavior
of Forms-based screens, including changing properties, executing built-ins,
displaying messages, and adding menu entries.

Why Form Personalization?


Before Version 11.5.10 forms can be personalized only by modifying
CUSTOM.PLL, and it involves many drawbacks.

When to use Custom.pll and Direct Personalization?


Direct Personalization (Core Apps): In this method, form can be
personalized only for few events (Triggers).

Using Custom.pll: This method can be used to implement custom


validation which cannot be done using above method.

Accessing Form Personalization:

To access form personalization window follow the

below steps. Step 1: Open the Form to be

customized.
Step 2: Navigate: Help Diagnostics Custom Code Personalize
Restrict Form Personalization Access:

By Default Personalization menu will be available to all users.

To restrict the access the following below profile options should be set.

Profile Name Value Level Enabled


Utilities:Diagnosti Yes / No Site / Application / Responsibility /
cs User.
Hide Diagnostics Yes / No Site / Application / Responsibility /
menu entry User.

Profile Name Description


Utilities:Diagnostic The Utilities:Diagnostics profile option allows Forms
s users to examine (and change) individual database
records. Setting Utilities:Diagnostics to "No"
requires the user to enter the APPS password prior
to using the Diagnostics Examine, which should
mitigate their ability to change data within the
Hide Diagnostics This profile option determines whether users can
menu entry access the Diagnostics menu entry from the Help
menu. If this profile is set to Yes, the Diagnostics
FND: Enable menu
Yes is hidden
To from Delivered
view Oracle the user. Personalization.
Industry Editing Sometimes there will be conflict when custom
personalization applied. So if you want to enable
custom personalization then set this profile as
No.
No/NULL when creating new/custom

The profile Utilities: Diagnostics is set as No it will ask for Database


Password to open personalization form.
Provide Oracle Database password.

Personalization form successfully opened.


How to Disable Form Personalizations?

Navigate: Help Diagnostics Custom Code OFF

Form Personalization Sequence:

Oracle form libraries will apply personalization in the


below order.

Se Level
q
1 Form Personalization
2 Custom.pll

Components involved in Form Personalization:

The major components involved in form personalization


are,

Rules
Conditions
Context
Actions

Rules:
It is the Header Details of the Rule.
You can enable / Disable / Delete a rule.
Once Rules are defined, when the target function is run then the
Rules are automatically applied as events occur within that form.
Seq Sequence Order to execute the rule when a
form is opened. Description User description.
Level Either Form Level (or) Form
Function Level. Enabled Indicates
whether the rule is active or not.

Note** Seq number from 1 to 100 are re-usable. We cannot give sequence
number more than 100.

Conditions:

It decides when the Rule should be executed based on the below factors.

o Trigger Event (Mandatory)


o Trigger Object
o Condition
o Processing Mode (Mandatory)

Trigger Event:

Event @ Which the rule to be processed.

The following Events lists are available,

o WHEN-NEW-FORM-INSTANCE
o WHEN-NEW-BLOCK-INSTANCE
o WHEN-NEW-RECORD-INSTANCE
o WHEN-NEW-ITEM-INSTANCE
o WHEN-VALIDATE-RECORD
o MENU1 to MENU15
o SPECIAL1 to

SPECIAL45 Navigational

Triggers:

It Fires in response to Navigational Events.


It occurs at different level of the form builder object hierarchy (Form,
Block, Record, and Item).

Below are the navigational triggers.

WHEN-NEW-FORM-INSTANCE
WHEN-NEW-BLOCK-INSTANCE
WHEN-NEW-RECORD-INSTANCE
WHEN-NEW-ITEM-INSTANCE

Trigger Usage Trigger


WHEN-NEW-FORM- Once When Form Starts up. N/A
INSTANCE
WHEN-NEW-BLOCK- Each time the cursor moves to Block Name
INSTANCE New Block.
WHEN-NEW-RECORD- Each time the cursor moves to Block Name
INSTANCE a New Record.
WHEN-NEW-ITEM- Each time the cursor moves to Block Name.
INSTANCE a New Item. Item Name
WHEN-VALIDATE-RECORD Each time the current records Block Name
have any change that needs to

Trigger Usage: Possible Scenarios


WHEN-NEW-FORM-INSTANCE Security Rules, Navigation Rules, Visual Attributes.
WHEN-NEW-BLOCK-INSTANCE Message Rules + Same as WHEN-NEW_FORM-
WHEN-NEW-RECORD- Default values
WHEN-NEW-ITEM-INSTANCE Message Rules + Default values dependent on
WHEN-VALIDATE-RECORD Populate Hidden Fields + additional Validations.

Special Triggers:

Two types of Special Triggers available,

Menu1 Menu15
Special1 Special45 (Reserved for Oracle Development Team)
Note**
Never user Special 1 Special 45 Menus for developing custom menus, use
only Menu1 Menu15 for custom menu. We can use the existing Special
Menus provided by Oracle but cannot create new one.

Special Triggers are sub classified as,

Tool Menu
Report Menu
Action Menu

Tool Menu: Menu1 Menu15


Special 1 Special
15

Report Menu: Special 16 Special

30 Action Menu: Special 31 Special

45

Conditions (Cont.):

Condition Field:

This field let you to create a SQL Expression.

Empty / True - Actions will be


performed. False - Action will not be
performed.

It can refers to,

o SQL Functions
o Logical Operators [AND, OR etc.]
o References to Bind Variables [:Block.Item, :System, :Global]
o Server Side functions without OUT Parameter.
Processing Mode:

The below modes are available to process the profile option. This
decides whether the personalization rule should be applied in Query
mode or not.

Context:

When two rules have same trigger event and the actions that change the
same property, the rule with higher sequence number will perform last and
this validation is final.
Its not a Hierarchy. It is similar to profile options.
Its the scope to define who should be target of personalization.
This is a critical path where we enable users to access/restrict the form.

Note** Context: Industry for Future use.

Actions:

This is used to set the property of the objects [Window,


Block and Item]. Sequence Order in which actions will
be performed within a rule. Type Type of action that is
executed.
Types of Actions:

Property
Message
Builtin
Menu

Action Type-Property:

Allows selecting specific property of the object & setting up its value.

Select by Text Button:

This will list out all the items and its type. Such that the selected item details will
be populate in target object field.
Object Type:

All the Object Types available in Form Builder will be listed here.

Target Object:

Based on the Object Type, the valid Objects available of that type will be
listed. Target Object is dependable LOV to Object Type.
Action Type-Message:
This action type is used to display custom message during runtime.

There are four message types available like Show, Hint, Error, Debug, and
Warn.

Action Type Builtin:

It allows execution of standard builtin i.e. APIs

related to AOL. The following Builtin types available,


:

Allows SRS (Submit Concurrent Request) to be run in a context of a


specific program.
This takes single argument of program name.
No additional security is applied to this program name, all the programs
are available to the user.
This is formally called FND_FUNCTION.EXECUTE.
The function can be selected either by its internal name (or) by user
friendly name.

This is formally called FND_UTILITIES.OPEN_URL.


This builtin allows opening a HTML page.
By default the target is '_BLANK', which will open a new browser window.
We can also define user defined URL targets.

This type is used to perform form related actions.


It allows a PL/SQL stored procedure to be executed.
Similar to PL/SQL Procedure execution the syntax to be given. For Example,
Package_name.Procedure_name(arg1, arg2);
The entire string will be evaluated before being sent to the server for
processing.

To move the cursor to any items inside any block this builtin is used.

To navigate to any block inside the form this builtin in used. By default it
will point to the first item of the block.
SQL DDL Statements can be executed using this builtin type.
It allows execution of trigger within a form.

If the form Execute triggers completed successfully it will result in TRUE,


if any validation fails then this trigger will be raised.

When the Form screen is not synchronized with client and middle tier at
form startup this helps to synchronize the same.

The CUSTOM library is an Oracle Forms Developer PL/SQL library. It allows


you to take full advantage of all the capabilities of Oracle Forms
Developer, and integrate your code directly with Oracle E-Business Suite
without making changes to Oracle E-Business Suite code.
The as-shipped CUSTOM library is located in the AU_TOP/resource directory.
If we want to personalize the LOV (i.e. Modifying list of value) by
creating a new Record Group this type is used.

If we want to set any profile value this built-in type can be used.
Action Type Menu:

There are two types of menu entry available,

MENU 1 MENU 15
SPECIAL 1 SPECIAL 45

Menu Entry:
The Menu, we want to active in the form.
If we select a Menu which is already in use by Base form then form
personalization will override that menu.
When the use selects the entry it will fire MENU# trigger.

Menu Label:
User Defined Label name given to the menu.

Check Box: Render Line before Menu


It will add a separator line to distinguish with existing menu entries.

Icon Name:
An optional Icon name can be added to the toolbar to archive the same
functionality as Special Menu.

Enabled in Block(s):
Specify the block to which the menu entry to be visible.
Many blocks can be added by separating it with a comma (,).

Do all forms have same Special Menus?


No, The special menu varies based on the forms.

Different types of Special Menus?


Tool Menu, Action Menu, Report Menu.

What are the special Menus we can use in Form Personalization?


Only Tool Menu [Special 1 to Special 15].
How to identify which Special Menu is enabled for the form?
Open the form & navigate to;

Form Name: Purchase Order Form

Navigation: Help Diagnostics Custom Code

Personalize Now Create a Dummy Rule & in Action

Type select Menu.

Now we will check for Location

Form. Only one Special Menu is

enabled.
Now we will check for Master Item Form.
How Strings are

Evaluated /Processed in forms?

Strings used in property can be used literally or validated/evaluated at runtime.

Equal-to (=) Operator

Note** it is similar to Excel formula functionality, if we want to access any in built


functions like concatenate, sum, vlookup etc. we need to use = before the
formula.

Similarly in form personalization,

If we are given a string without = operator the exact value of the string will be
used at runtime.

If we are giving a string with = operator that means we are going to used
complex functions like SQL Operators and in-built functions like NVL, DCODE
etc.

Using Bind/Global Variables

The best way to use bind variable in condition block is by clicking button Insert
GET Expression
Below valid object Types are available to insert Get Expression.
When click the

button,

Global Variables:
Used to pass values between forms.
Max. length is 255

Local Variables:
When you need to refer a variable multiple types.
Specific to local form.
Max. length 4000 bytes.

Using SELECT Statement

Syntax:

=SELECT <col_name> FROM


<Table_Name> Note** Do not end the
statement with semi colon (;). Track
Form Events:

Turn-ON:
Navigate: Help Diagnostics Custom Code Show Custom Events

Turn-OFF:
Navigate: Help Diagnostics Custom Code

Normal After enabling the following message will

be displayed.

When the Form is run, similar note will be displayed when an event occurs.
Form Personalization Tables:

Below are the tables which stores custom information at form level.

Table Name Description


FND_FORM_CUSTOM_RULES The Rules for the form customizations. A rule
must have 1 or more
FND_FORM_CUSTOM_SCOPES and a rule may
have the Actions
FND_FORM_CUSTOM_ACTION Holds 1 for a specified
or Rule - used
more
by
S FNDCUSTM.fmb and APPCORE to apply
customizations.
FND_FORM_CUSTOM_SCOPE The Scopes for which the
FND_FORM_CUSTOM_PARAM Parameters to Pass to a CP when executed using
S Form Customizations.
FND_FORM_CUSTOM_PROP_L Lookup table for the Properties which can be
IST
FND_FORM_CUSTOM_PROP_Valtered.
The Values available for items with argument
ALUES type of L - Lookup.

How to View Form Details?

Navigation: Help About Oracle Applications.


Form Personalization (Exercises)
Action Type: Property

Property 1: PROMPT_TEXT

Description: Changing the Prompt Name of the field User Name.

Personalization Steps:

Before Personalizing get the Item/Block

Information. Navigate: Help

Diagnostics Properties Item


Seq 20
Descripti Action Type : Property
Level Form Level

Condition Details Comments


The change should be reflected when the
Trigger WHEN-NEW-FORM- form is opened. So choose this trigger
Trigger N/A
Condition (Optional)
Processing
Mode Both Change should reflect in both Query & non-

Context Details Comments


Level User Change will be reflected only for this user.
Value D_USER1 Valid user name.

Note** Start practicing by setting up the context level as Site. In my


examples I have used user level.
Action Information:

Actions Value
Seq 10
Type Property
Description Change Label name
Language All

Object Type Item User Name Field is a Text Type Item.


Target object USER.USER_NAME BLOCK_NAME.ITEM_NAME
Property PROMPT_TEXT This is the property we are going to
Value Oracle ID New Prompt Name.
Result:

Log in as D_USER1.
Property 2: REQUIRED

Description: Making Field Text as mandatory.

Step 1: Get Object Property.


Conditions:

Actions:

Result:
Property 3: ENABLED

Description: Restricting access to the tab.

Step 1: Get Object Property


Conditions:

Actions:

Result:
Property 4: DISPLAYED

Description: Hide the field

from User.

Step 1: Get Object Property


Conditions:

Actions:

Result:
Property 5: TOOLTIP_TEXT

Description: Enable tool tip for the responsibility. When the responsibility is
selected the user name will be displayed as tool tip.

Step 1: Get Object Property


Conditions:

Actions:

Result:
Action Type: Message

Message Type: Note

Description: Notify user when he/she is about to access User Form.

Condition:

Actions:
Result:

Open the User Form in System Administrator responsibility.


Message Type: Note

Description: Notify user when he/she trying to access IN-ACTIVE user details.

Step1: Get the Property of the Item.

Condition:
Actions:
Result:

Close the form & Re-open then query for the user.
Difference between

Message Types: Warning:

Show:

Error:
Hint:

Shows the message @ Status Bar.


Action Type: Menu

Menu: Rename Special Menu Label

Description: Changing the Special Menu Label Name. We will be using Item
Master Form.

Lets Rename the Categories Special Menu.


Condition:

Actions:
Result:

Query for the test Item.

Now go to Tools Menu.

Note** the personalization on SPECIAL Menu can be applied only @ WHEN-


NEW-FORM- INSTANCE.
Menu: Creating New Menu

Item Description: Create a

New Menu Item.

Rule:

Condition:
Actions:

SPECIAL 3 Tool Menu

We are enabling only BLOCK USER.

Result:

Block:

USER

Block: USER_RESP
Action Type: Built-in

Built-in Type: Launch a URL

Description: When the SPECIAL Menu is clicked the URL will be launched. We
will be using the special menu created in above exercise.

Block: USER

Note** the special menu created is based on trigger WHEN-NEW-FORM-


INSTANCE.

Rules:

Condition:
Actions:

Result:

How to use Parameterized URL?


In HTML we can send the details of page information from one page to other by
using the below methods.

GET In this method we can see the details in URL.


POST In this method form details are hidden.

Let consider GET method for this example. A simple web page with First Name &
Last name.

Now Im giving the user details in the HTML Page and submitting it to other HTML
page.

HTML PAGE 1:
HTML PAGE 2:
Generated Web URL as below;

http://www.w3schools.com/tags/demo_form_method.asp?

fname=Dinesh&lname=Kumar

Now we need to pass the form item value in the same manner. Consider we are
sending user Oracle Id information via URL.

In Actions Tab Click button to get the value of the form


field.

The URL will be as below.

http://www.w3schools.com/tags/demo_form_method.asp?

fname=:USER.USER_NAME& lname=
:USER.USER_STATUS

Note** the above given URL is simple scenario to make you understand. Try with
a valid one.
Built-in Type: DO_KEY

Description: When user enters the form a warning message

will be displayed. If Clicked,


OK - It will enter into Query
Mode CANCEL - It will enter the
form normally.

Condition:

Action

s:

Action

1:
Action 2:

Action Summary: So we have defined two actions, which will be executed


sequentially.

Result:

Now Open User Form.


When Clicked OK; Form enters into Query Mode.

When Clicked CANCEL; Form enters into Non-Query Mode.


Built-in Type: Launch a Function

Note** Function here refers to Form Functions not PL/SQL

functions. You can view the valid available form functions

in below form.

Navigation: System Administrator Application Function

Description: When a New Responsibility is created, we need to assign that


responsibility to user. This is achieved by enabling a special menu and when user
clicks the menu it will call the user form.

Step 1: Collect the Form Function Details

We are going to find the user form function name from the System
Administrator responsibility root menu.
Navigation: System Administrator Application Menus
Menu Details:

Function Details:
Now we will see how to implement our requirement.

Part-1: Creating a Special Menu

Condition:

Actions:
Part-2: Creating an action event when special menu is created.

Condition:

Actions:
Result:

Create a New Responsibility and assign it to user.

When clicked Assign to User it opens user form.


Built-in Type: Launch SRS Form

Description: In our previous exercise we have enabled a SPECIAL 3 menu item


for User Form. When the menu is clicked it should open a SRS Form to submit a
concurrent program to validate the user created (or) existing user.

Part-1: Enabling a Special Menu

Condition:

Actions:
Part-2: Creating a Concurrent Program

Package Name: D_FORM


Procedure Name: VALIDATE_USER
Description: It validates the user details & stores the log

information in a file. PS: Please refer the ConcPG_Executable.SQL File

provided along with the material.

Now create an Executable.

Navigation: System Administrator Concurrent Program Executable

Now create a Program and attach the executable.


Navigation: System Administrator Concurrent Program Define

Parameter Information:
Note** Dont forget to add this Concurrent program in REQUEST GROUP.Part-3:
Creating action even for the menu i.e. when clicked it should launch SRS form

Rule:

Condition:

Actions:
Note** No need to give parameter information, since its opening
SRS we need to give the required details in that form.
Result:
Request Successfully Submitted.

Now open the pat & download the log file.

Open the file.


Built-in Type: Global variables

Global Variables

Global Variables in Forms are variables which are accessible through out the
application [i.e. in the current active session] until we reset or delete it.

The values of the Global variables are preserved until active form session.

The data type of Global Variables is always CHAR. If we initializing or


assigning a Number, Date data type values we need to use TO_CHAR
function to assign the same. Implicit Conversion happens but sometimes
it fails.

We can store up to 4000 bytes of character data in Oracle 10g,


whereas in Forms 6i it was limited up to 255 bytes of character data.

We can define/declare Global variables in any of the PL/SQL blocks


which we use in Form development (or) during form personalization.

How to access Global variables?

: GLOBAL.Variable_Name

How to Remove (or) Erase Global Variables?

By using built-in function ERASE( ).


Example,

ERASE (GLOBAL.Variable_name); What is


Zoom Functionality?

Directly going from one form to another (i.e. calling one from another
form) on button click event.

The control will be passed from one from to another.


Description: In the example (Built-in Type: Launch SRS Form) we have
launched SRS windows to submit the concurrent program. But the program
parameter is given manually by user. Using Global variable, the parameter will be
populated automatically [ZOOM Functionality].

We are going to make small changes in below order,

1) Part-3: Creating action even for the menu i.e. when clicked it should
launch SRS form

2) Part-2: Creating a Concurrent Program

Part-3: Creating action even for the menu i.e. when clicked it should launch SRS
form

1) First we must create Global variable & initialize the same.

2) Use the same built-in and Message and no changes. Only part we
need to change is the sequence of the action.
Action 2:
Action 3:

Part-2: Creating a Concurrent Program

We need to modify the parameter details of the concurrent program

Default value:
Select :GLOBAL.G_USR_NAME from dualWhen
saved, the following message is triggered.

Click Ok.

Result:
Now SRS window will automatically open by populating the parameters
details automatically.

Submit the concurrent

program. Program Executed

successfully.
Built-in Type: Execute a Procedure

Description: In the above exercise (Built-in Type: Launch SRS Form) we


have validated the user by submitting the concurrent program. Now in this
exercise we will be directly executing the procedure to validate the user.

PS: Please refer the Execute_Proc_Block.SQL File provided along with the
material.

Follow the same steps [Part 1 & Part 3] from

above exercise. In Part-3 we will be making the

changes.

Condition:

Actions:

Action1:
Note: How to give argument for built-in type Execute a Procedure?

Normal PL/SQL block definition in SQL Developer / TOAD / SQL PLUS:

In Form Arguments:

=Declare
Begi
n
End

Note: It should start with = (equal-to), then PL/SQL blocks should be


within Single Quotes (). Also after keyword End there should not be
any semi colon.

Now lets see how to pass parameters to procedure.

In Form Arguments:

We are giving the argument within single quote (arg_1)


As we know we already start & end with single quote for PL/SQL

block in form arguments. If we give additional single quote in

between the code then the syntax becomes incomplete.


Q1) How to give additional Single Quotes () in arguments for strings
parameters?

This is similar to Excel functionality in CONCATENATE function for joining


two strings with a comma.

In similar way, we need to give additional single quote within 2 Single Quotes
before and after.

In Form Argument,

Q2) How to use parameters?

The Parameter should always prefix and suffixed with double


pipes (||). For Example,

| | para_1 | |

Final String by combining Q1 & Q2,

| | para_1 | |
Full Argument Code:

='decl
are
begin
D_FORM2.VALIDATE_USER ('''||$
{item.user.user_name.database_value}||'''); end'

Action2:
Result:

Check the Log File:


Built-in Type: Execute a Procedure

Description: We will be restricting the List of values for Data Group Name
field.

Item Property:
Now we need to find the Original Record Group Query
used for field DATA_GROUP_APPLICATION_NAME.

How to find Record Group details?


We need to download the .FMB file and check the same.

How to find the Form Details?


Navigation: help About Oracle Applications. Now get the Form Details and
download it from the server.

The details of responsibility

form. Form Name:

FNDSCRSP
.fmx file Path: /11.5/fnd/11.5.0/forms/US/FNDSCRSP.fmx
.fmb file Path:

/11.5/au/11.5.0/for

ms/US Now identify the LOV.


Open the properties of LOV and find the record group.
Record group identified.

Open the record Group property & check for the SQL statement.

Query identified.
New SQL Query:

SELECT APPLICATION_NAME, DESCRIPTION, APPLICATION_ID


FROM FND_APPLICATION_VL
WHERE APPLICATION_NAME IN ('PURCHASING',
'MANUFACTURING','APPLICATION OBJECT LIBRARY')
ORDER BY APPLICATION_NAME

Rule:
Condition:

Action

s:

Action

1:
Action 2:

Result:
Oracle Extensions

(Custom.pll)
What are different Methods to handle Form Level Customization /
Personalization?
There are two methods;

i. Form Personalization
ii. Modifying Custom.pll

What is Custom.pll?

It is Standard Oracle Form PL/SQL Library.


This is oracle Built-in Feature to modify Oracle standard Form functionality.

How form Level triggers are initiated from Custom.pll?

Using TEMPLATE.fmb, in these template files form level triggers are


defined and in-turn in calls Custom.pll.

HRMS module has its own template file HRTEMPLT.fmd. Also, the
triggers trapped in Custom.pll for HRMS Module will be different than
other modules.

Where is libraries file stored?

The .Fmb & .Pll files are stored in $AU_TOP.

File Location
/ AU/11.5.0/forms/US
/
TEMPLATE.fmb
.PLL Files /AU/11.5.0/Resource
What are different libraries available?

Librari
es .Pll File Description
Core APPCORE.pll Standard Application Toolbars
CUSTOM.pll For Form Customization
FNDSQF.pll Related to AOL Objects like KFF, CP, Messages
VERT.pll Specify Inustry Features
APPFLDR.pll Packages related to Folder Blocks
GLOBE.pll To enable Global Regional Features
JA.pll Asia Pacific Region
JE.pll Europe, Middke East, Africa Region
JL.pll Latin America Region
Applicatio TEMPLATE.f Used to call form triggers.
APPCORE2.pl Similar to APPCORE.pll used to attach it to
GHR.pll Global Human Resources Libraries
HRKPI.pll Human Resource Knowledge Provider libraries
PQH_GEN.pll Public Sector human Resource
FV.pll Financial libraries
GMS.pll Encumbrances
PSA.pll Public Sector Application.
PSB.pll Public Sector budgeting
IGILUTIL.pll Internation Public Sector
IGILUTIl2.pll Internation Public Sector
OPM.pll Processing Mfg.

Impt Libraries Usage/Description


APPCORE. Contains PL/SQL Packages controlling Form
pll behavior like Menu, Toolbar etc. and also Runtime
APPCORE2 behavior like enabling, disabling fields.
FNDSQF.pll
.pll It contains PL/SQL packages controlling AOL
Objects like KFF, CP, Messages, Currencies etc.
GLOBE. It allows application to incorporate regional
pll JE.pll features without modifying the base oracle form.
JL.pll the GLOBAL library calls regional libraries JE, JL &
JA.pll JA.
GHR.pll Contains Even Dispatcher Codes specific to HRMS.
What is the importance of TEMPLATE.fmb?

Collection of special libraries and trigger events, which modify the


behavior of the form.

It is located @ $AU_TOP/forms/US.

Components of TEMPLATE.fmb
Trigger Events:

Compone Description
nts
Object The Template refers to pre-defined platform
Group independent standard object groups in APPSTAND
Libraries We can attach any .pll libraries to template.
Triggers it contains 22 Form level triggers which included
Navigational, Key, Pre form, Post form triggers.
Data Some sample data block objects [Detail Block &
Block Block Name] are attached.
Steps involved in modifying CUSTOM.pll

Step 1: Open the form Builder and Download below library files and attach the
libraries.
APPCORE.pll
APPDAYPK.pll
FNDSQF.pll

Step 2: Download CUSTOM.pll from location /AU/11.5.0/Resource.

Step 3:Modify CUSTOM.pll file [CUSTOM*(Package Body)@].

Step 4: Compile the Package & Save the changes.

Step 5: Upload the file to location /AU/11.5.0/Resource

Step 6: Generate .PLX executable file using below command.

For R12:

FRMCMP_BATCH MODULE=CUSTOM.PLL
USERID=<USERID>/<PWD>@<INSTANCE> MODULE_TYPE=LIBRARY
COMPILE_ALL=YES

For 11i:

F60GEN MODULE=CUSTOM.PLL USERID=<USERID>/<PWD>@<INSTANCE>


OUTPUT_FILE=./CUSTOM.plx MODULE_TYPE=LIBRARY
Example of using CUSTOM.pll

Description: We are going to make a text field to accept only UPPER

Case Letters only. Responsibility: System Administrator


Form: Document Sequences
Form Name: FNDSNDSQ
Location: oracle\visappl\fnd\11.5.0\forms\US\FNDSNDSQ.fmx

Follow the below steps.

Step 1: Enable Show custom events

Navigation: Help Diagnostics Custom Code Show Custom Events.


Step 2: Gather Information

Get Field Info.

Trap the event:


Step 3: Coding in CUSTOM.pll

Now open TEMPLATE.fmb and attach the CUSTOM.pll.


Now open CUSTOM.pll package body and insert the code.

Now compile the code.


Note** dont forget to update the version history in CUSTOM.pll

Step 4: Upload the CUSTOM.pll to

$AU_TOP/resource Step 5: Generate

CUSTOM.pll

Execute the command from right location.

Log out & login to view the changes.

You might also like