Anda di halaman 1dari 104

Form Personalization by Dinesh Kumar S

Form Personalization by Dinesh Kumar S

Form Personalization by Dinesh Kumar S

Form Personalization

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


entry

Yes / No

Site / Application / Responsibility / User.

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


entry

This profile option determines whether users can access the


Diagnostics menu entry from the Help menu. If this profile is set
to Yes, the Diagnostics menu is hidden from the user.
Yes To view Oracle Delivered Personalization. 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 personalization.

FND: Enable Industry


Editing

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

Form Personalization by Dinesh Kumar S


Provide Oracle Database password.

Personalization form successfully opened.

How to Disable Form Personalizations?

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
Description
Level
Enabled

Sequence Order to execute the rule when a form is opened.


User description.
Either Form Level (or) Form Function Level.
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.

Form Personalization by Dinesh Kumar S

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

Trigger Event (Mandatory)


Trigger Object
Condition
Processing Mode (Mandatory)

Trigger Event:

Event @ Which the rule to be processed.

The following Events lists are available,


o
o
o
o
o
o
o

WHEN-NEW-FORM-INSTANCE
WHEN-NEW-BLOCK-INSTANCE
WHEN-NEW-RECORD-INSTANCE
WHEN-NEW-ITEM-INSTANCE
WHEN-VALIDATE-RECORD
MENU1 to MENU15
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
WHEN-NEW-FORM-INSTANCE
WHEN-NEW-BLOCK-INSTANCE
WHEN-NEW-RECORD-INSTANCE
WHEN-NEW-ITEM-INSTANCE
WHEN-VALIDATE-RECORD

Usage
Once When Form Starts up.
Each time the cursor moves to New
Block.
Each time the cursor moves to a New
Record.
Each time the cursor moves to a New
Item.
Each time the current records have any
change that needs to be validated.

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

Trigger Object
N/A
Block Name
Block Name
Block Name. Item
Name
Block Name

Usage: Possible Scenarios


Security Rules, Navigation Rules, Visual Attributes.
Message Rules + Same as WHEN-NEW_FORM-INSTANCE.
Default values
Message Rules + Default values dependent on another item.
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
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
o
o
o

SQL Functions
Logical Operators [AND, OR etc.]
References to Bind Variables [:Block.Item, :System, :Global]
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.
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

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

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

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
FND_FORM_CUSTOM_RULES

Description
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
Description
Level

20
Action Type : Property
Form Level

Condition

Details

Comments
The change should be reflected when the form is
opened. So choose this trigger event.
N/A

Trigger Event
Trigger Object
Condition
Processing
Mode

WHEN-NEW-FORM-INSTANCE

Both

Change should reflect in both Query & non-Query Mode.

Context
Level
Value

Details
User
D_USER1

Comments
Change will be reflected only for this user.
Valid user name.

(Optional)

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
Seq
Type
Description
Language

Object Type
Target object
Property Name
Value

Value
10
Property
Change Label name
All

Item
USER.USER_NAME
PROMPT_TEXT
Oracle ID

User Name Field is a Text Type Item.


BLOCK_NAME.ITEM_NAME
This is the property we are going to change.
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.

Lets 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-FORMINSTANCE.

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 Im 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
CANCEL

It will enter into Query Mode


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:
Procedure Name:
Description:

D_FORM
VALIDATE_USER
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** 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.

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

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 pipes ( ).
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:
.fmx file Path:
.fmb file Path:

FNDSCRSP
/11.5/fnd/11.5.0/forms/US/FNDSCRSP.fmx
/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
TEMPLATE.fmb
.PLL Files

Location
/
AU/11.5.0/forms/US
/
/AU/11.5.0/Resource

Form Personalization by Dinesh Kumar S

Form Personalization by Dinesh Kumar S

What are different libraries available?


Libraries
Type
Core

Application

.Pll File
APPCORE.pll
CUSTOM.pll
FNDSQF.pll
VERT.pll
APPFLDR.pll
GLOBE.pll
JA.pll
JE.pll
JL.pll
TEMPLATE.fmb
APPCORE2.pll
GHR.pll
HRKPI.pll
PQH_GEN.pll
FV.pll
GMS.pll
PSA.pll
PSB.pll
IGILUTIL.pll
IGILUTIl2.pll
OPM.pll

Description
Standard Application Toolbars
For Form Customization
Related to AOL Objects like KFF, CP, Messages etc.
Specify Inustry Features
Packages related to Folder Blocks
To enable Global Regional Features
Asia Pacific Region
Europe, Middke East, Africa Region
Latin America Region
Used to call form triggers.
Similar to APPCORE.pll used to attach it to custom.pll.
Global Human Resources Libraries
Human Resource Knowledge Provider libraries
Public Sector human Resource
Financial libraries
Encumbrances
Public Sector Application.
Public Sector budgeting
Internation Public Sector
Internation Public Sector
Processing Mfg.

Impt Libraries
APPCORE.pll
APPCORE2.pll

Usage/Description
Contains PL/SQL Packages controlling Form behavior like Menu,
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.
It allows application to incorporate regional features without
modifying the base oracle form. the GLOBAL library calls regional
libraries JE, JL & JA.

GLOBE.pll
JE.pll
JL.pll
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
Object Group
Reference
Libraries
Triggers
Data Block

Description
The Template refers to pre-defined platform independent standard
object groups in APPSTAND form.
We can attach any .pll libraries to template.
it contains 22 Form level triggers which included Navigational, Key,
Pre form, Post form triggers.
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:
Form:
Form Name:
Location:

System Administrator
Document Sequences
FNDSNDSQ
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** 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.

Form Personalization by Dinesh Kumar S

Form Personalization by Dinesh Kumar S

104

Anda mungkin juga menyukai