You are on page 1of 104

Form Personalization – by Dinesh Kumar S

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Form Personalization

2
Form Personalization – by Dinesh Kumar S

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

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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:Diagnostics Yes / No Site / Application / Responsibility / User.

Hide Diagnostics menu Yes / No Site / Application / Responsibility / User.


entry

Profile Name Description


Utilities:Diagnostics The Utilities:Diagnostics profile option allows Forms 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 database.
Hide Diagnostics menu This profile option determines whether users can access the
entry Diagnostics menu entry from the Help menu. If this profile is set
to Yes, the Diagnostics menu is hidden from the user.
FND: Enable Industry Yes – To view Oracle Delivered Personalization. Sometimes
Editing 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 personalization.

The profile “Utilities: Diagnostics” is set as “No” it will ask for Database Password to open
personalization form.

4
Form Personalization – by Dinesh Kumar S

Provide Oracle Database password.

Personalization form successfully opened.

How to Disable Form Personalization’s?

Navigate: Help  Diagnostics  Custom Code  OFF

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Form Personalization Sequence:

Oracle form libraries will apply personalization in the below order.

Se
q Level
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.

6
Form Personalization – by Dinesh Kumar S

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).

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

 Below are the navigational triggers.

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

Trigger Usage Trigger Object


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

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-INSTANCE.
WHEN-NEW-RECORD-INSTANCE Default values
WHEN-NEW-ITEM-INSTANCE Message Rules + Default values dependent on another item.
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 menu’s, use only Menu1 – Menu15
for custom menu. We can use the existing Special Menu’s provided by Oracle but cannot create new
one.

Special Triggers are sub classified as,

• Tool Menu
• Report Menu
• Action Menu

8
Form Personalization – by Dinesh Kumar S

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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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.
 It’s not a Hierarchy. It is similar to profile options.
 It’s 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

10
Form Personalization – by Dinesh Kumar S

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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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.

12
Form Personalization – by Dinesh Kumar S

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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Action Type – Builtin:

• It allows execution of standard builtin i.e. API’s 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.

14
Form Personalization – by Dinesh Kumar S

 This is formally called FND_FUNCTION.EXECUTE.


 The function can be selected either by its internal name (or) by user friendly name.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

 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.

16
Form Personalization – by Dinesh Kumar S

 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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

 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.

18
Form Personalization – by Dinesh Kumar S

 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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

 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.

20
Form Personalization – by Dinesh Kumar S

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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

,
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 Menu’s?


Tool Menu, Action Menu, Report Menu.

What are the special Menu’s we can use in Form Personalization?


Only Tool Menu [Special 1 to Special 15].

22
Form Personalization – by Dinesh Kumar S

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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Now we will check for Location Form.

Only one Special Menu is enabled.

Now we will check for Master Item Form.

24
Form Personalization – by Dinesh Kumar S

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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

When click the

button,

Global Variables:

 Used to pass values between forms.


 Max. length is 255

Local Variables:

26
Form Personalization – by Dinesh Kumar S

 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 – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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 1 or
more FND_FORM_CUSTOM_ACTIONS .
FND_FORM_CUSTOM_ACTIONS Holds the Actions for a specified Rule - used by FNDCUSTM.fmb
and APPCORE to apply customizations.
FND_FORM_CUSTOM_SCOPES The Scopes for which the FND_FORM_CUSTOM_RULES apply.
FND_FORM_CUSTOM_PARAMS Parameters to Pass to a CP when executed using Form
Customizations.
FND_FORM_CUSTOM_PROP_LIST Lookup table for the Properties which can be altered.
FND_FORM_CUSTOM_PROP_VALUES The Values available for items with argument type of L - Lookup.

How to View Form Details?

Navigation: Help  About Oracle Applications.

28
Form Personalization – by Dinesh Kumar S

Form Personalization
(Exercises)

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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

30
Form Personalization – by Dinesh Kumar S

Seq 20
Description Action Type : Property
Level Form Level

Condition Details Comments


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

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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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 Name PROMPT_TEXT This is the property we are going to change.
Value Oracle ID New Prompt Name.

32
Form Personalization – by Dinesh Kumar S

Result:

Log in as “D_USER1”.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Property 2: REQUIRED

Description: Making Field Text as mandatory.

Step 1: Get Object Property.

34
Form Personalization – by Dinesh Kumar S

Conditions:

Actions:

Result:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Property 3: ENABLED

Description: Restricting access to the tab.

Step 1: Get Object Property

36
Form Personalization – by Dinesh Kumar S

Conditions:

Actions:

Result:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Property 4: DISPLAYED

Description: Hide the field from User.

Step 1: Get Object Property

38
Form Personalization – by Dinesh Kumar S

Conditions:

Actions:

Result:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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

40
Form Personalization – by Dinesh Kumar S

Conditions:

Actions:

Result:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Action Type: Message


Message Type: Note

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

Condition:

Actions:

42
Form Personalization – by Dinesh Kumar S

Result:

Open the User Form in System Administrator responsibility.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Message Type: Note

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

Step1: Get the Property of the Item.

44
Form Personalization – by Dinesh Kumar S

Condition:

Actions:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Result:

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

46
Form Personalization – by Dinesh Kumar S

Difference between Message Types:

Warning:

Show:

Error:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Hint:

Shows the message @ Status Bar.

48
Form Personalization – by Dinesh Kumar S

Action Type: Menu


Menu: Rename Special Menu Label

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

Let’s Rename the Categories Special Menu.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Condition:

Actions:

50
Form Personalization – by Dinesh Kumar S

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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Menu: Creating New Menu Item

Description: Create a New Menu Item.

Rule:

Condition:

52
Form Personalization – by Dinesh Kumar S

Actions:

SPECIAL 3  Tool Menu

We are enabling only BLOCK USER.

Result:

Block: USER

Block: USER_RESP

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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:

54
Form Personalization – by Dinesh Kumar S

Actions:

Result:

How to use Parameterized URL?

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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 I’m giving the user details in the HTML Page and submitting it to other HTML page.

HTML PAGE 1:

HTML PAGE 2:

56
Form Personalization – by Dinesh Kumar S

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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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:

Actions:

Action 1:

58
Form Personalization – by Dinesh Kumar S

Action 2:

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

Result:

Now Open User Form.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

When Clicked OK; Form enters into Query Mode.

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

60
Form Personalization – by Dinesh Kumar S

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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Navigation: System Administrator  Application  Menus

62
Form Personalization – by Dinesh Kumar S

Menu Details:

Function Details:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Now we will see how to implement our requirement.

Part-1: Creating a Special Menu

Condition:

Actions:

64
Form Personalization – by Dinesh Kumar S

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

Condition:

Actions:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Result:

Create a New Responsibility and assign it to user.

When clicked “Assign to User” it opens user form.

66
Form Personalization – by Dinesh Kumar S

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:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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.

68
Form Personalization – by Dinesh Kumar S

Navigation: System Administrator  Concurrent  Program  Define

Parameter Information:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Note** Don’t 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.

70
Form Personalization – by Dinesh Kumar S

Result:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Request Successfully Submitted.

Now open the pat & download the log file.

Open the file.

72
Form Personalization – by Dinesh Kumar S

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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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:

74
Form Personalization – by Dinesh Kumar S

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Action 3:

Part-2: Creating a Concurrent Program

We need to modify the parameter details of the concurrent program “”

Default value:

76
Form Personalization – by Dinesh Kumar S

Select :GLOBAL.G_USR_NAME from dualWhen


saved, the following message is triggered.

Click Ok.

Result:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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

Submit the concurrent program.

Program Executed successfully.

78
Form Personalization – by Dinesh Kumar S

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:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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
Begin
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 let’s 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.

80
Form Personalization – by Dinesh Kumar S


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 pipe’s ( ).

For Example,

| | para_1 | |

Final String by combining Q1 & Q2,

‘‘ ‘| | para_1 | |’ ’’

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Full Argument Code:

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

Action2:

82
Form Personalization – by Dinesh Kumar S

Result:

Check the Log File:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Built-in Type: Execute a Procedure

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

Item Property:

84
Form Personalization – by Dinesh Kumar S

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/forms/US

Now identify the LOV.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

86
Form Personalization – by Dinesh Kumar S

Open the properties of LOV and find the record group.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Record group identified.

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

Query identified.

88
Form Personalization – by Dinesh Kumar S

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:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Condition:

Actions:

Action 1:

90
Form Personalization – by Dinesh Kumar S

Action 2:

Result:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Oracle Extensions

(Custom.pll)

92
Form Personalization – by Dinesh Kumar S

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

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

What are different libraries available?


Libraries
Type .Pll File Description
Core APPCORE.pll Standard Application Toolbars
CUSTOM.pll For Form Customization
FNDSQF.pll Related to AOL Objects like KFF, CP, Messages etc.
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
Application TEMPLATE.fmb Used to call form triggers.
APPCORE2.pll Similar to APPCORE.pll used to attach it to custom.pll.
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.pll Contains PL/SQL Packages controlling Form behavior like Menu,
APPCORE2.pll Toolbar etc. and also Runtime behavior like enabling, disabling
fields.
FNDSQF.pll It contains PL/SQL packages controlling AOL Objects like KFF, CP,
Messages, Currencies etc.
GLOBE.pll It allows application to incorporate regional features without
JE.pll modifying the base oracle form. the GLOBAL library calls regional
JL.pll libraries JE, JL & JA.
JA.pll
GHR.pll Contains Even Dispatcher Codes specific to HRMS.

94
Form Personalization – by Dinesh Kumar S

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

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Trigger Events:

Components Description
Object Group The Template refers to pre-defined platform independent standard
Reference object groups in APPSTAND form.
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 Block Some sample data block objects [Detail Block & Block Name] are
attached.

96
Form Personalization – by Dinesh Kumar S

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

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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.

98
Form Personalization – by Dinesh Kumar S

Step 2: Gather Information

Get Field Info.

Trap the event:

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

Step 3: Coding in CUSTOM.pll

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

100
Form Personalization – by Dinesh Kumar S

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

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

Now compile the code.

102
Form Personalization – by Dinesh Kumar S

Note** don’t 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.

Form Personalization – by Dinesh Kumar S


Form Personalization – by Dinesh Kumar S

104

You might also like