You are on page 1of 58

Enhance the User

Experience with Form


Personalizations
Jeff Lollar, Lucidity Consulting Group
September 2007

Goals of this Presentation


Know what Form Personalizations are
Develop the mindset that Form
Personalizations can offer Creative
Solutions
Position to Implement Solutions with some
Trial and Error
Demonstrate several popular and
inspiring Forms Personalizations

What are Personalizations


A means to build enhancements to Oracle
Application Forms
Execute an ACTION when a CONDITION is
satisfied
Form Personalizations, not Page/OAF
Personalizations
Substitute for the CUSTOM.pll (with limitations)
Common Examples: Require Fields, Default
Values, Pop Message Boxes,etc

Limitations of Form Personalizations


Not used by Pages/OAF (This is a
different type of Personalization)
Executed at Form Level (No impact on
APIs or Table Validations)
In most cases, only a few triggering events
are available
Limited Capabilities
Ex. Cannot add new items (fields, buttons,
etc) to the form

How to Create a Personalization


1.
2.
3.
4.

Access Setup Form


Enter Condition
Enter Action
Save & Test

Access Setup Form


1. Navigate to the
Form you wish
to implement a
Personalization
for
2. HELP >
DIAGNOSTIC >
CUSTOM
CODE >
PERSONALIZE

Access Setup Form

Access Setup Form


Impacting System Options
Hide Diagnostics menu entry
No Diagnostics menu is accessible (access
Forms Personalizations)

Utilities:Diagnostics
No Must provide APPS password in order to
access Diagnostics

Enter Condition
Provide the Condition that must be satisfied
in order for the Action to take place
The Header
Triggering Event & Object
Condition Statement
Context

Enter Condition
Enter the Header
Use Sequence for Organization and
controlling prioritization

Provide a clear description

Enable or Disable

Apply at the Form or Function Level


(A function is a particular instance of a
form assigned to a Responsibilitys Menu)

Enter Condition
Triggering Event
WHEN-NEW-FORM-INSTANCE
WHEN-NEW-BLOCK-INSTANCE
WHEN-NEW-RECORD-INSTANCE
WHEN-NEW-ITEM-INSTANCE
WHEN-VALIDTE-RECORD
MENU(N) 1-15
SPECIAL(N) 1-45

Triggering Object
Required depending on Triggering Event
BLOCK.FIELD (validated)

Enter Condition
Condition Statement
If Condition evaluates to TRUE then Actions are
processed. Can leverage SQL functions,
operators, and bind variables

Control if rule should be


processed in Query-Mode

Test your
condition using
data in current
form

Insert variables that reference


attribute values of objects (items,
windows, globals, ets)

Helps with inserting Bind


Variables (BLOCK.ITEM)

Enter Condition
Context Region

Restrict Personalization to a particular


User
Responsibility
Industry (reserved for future per Metalink Doc Id 395117.1)

Example of restricting by user

Enter Action
Enter Action

This is WHAT the Personalization does


Four Basic Types
1.
2.
3.
4.

Property
Message
Builtin
Menu

Sequence that
Actions take
order

Select Type. This determines


fields presented in region on
the right.

Enable for a particular


language

Enable or Disable

Enter Action
Property

Set a Value for a particular Property on a


Particular Object.
Ex. Make Payment Terms field required.
Example: Item,
Block, Window,
Canvas, etc

The Property of the Object that


will be edited. Example:
Displayed, Value, Prompt, etc

Based on Object
Type Selected,
identify
particular Object

The new value to


assign to the property.
SQL may be used here

Enter Action
Message

Message Type
Show A message with an OK button
Hint Message Line (lower left corner)
Error Aborts after message box
Debug only if Show Debug Messages is checked
Warn Aborts if user selects Cancel

Message Text
SQL
Bind Variables

Enter Action
Builtin
Launch SRS Form Open the Submit Concurrent Request form
Launch a Function Open a registered application function such as those
assigned to responsibility menus.
Launch a URL
DO_KEY Perform form actions, such as Clear Block, Duplicate Record,
etc
Execute a Procedure Call a procedure and pass arguments
GO_ITEM Move to a particular item within the form
GO_BLOCK Move to the first item of a particular block within the form
FORMS_DDL (Data Dictionary Language) Always issues an implicit
Commit.
Raise FORM_TRIGGER_FAILURE
EXECUTE_TRIGGER Execute a trigger that is within the form
SYNCHRONIZE Synchronize Client and middle-tier
Call Custom Library Call an Event within the CUSTOM.pll

Enter Action
Menu

Create Menu Options Under Toolbar


Headings
Requires additional personalization at
What the user
condition of Selection
will see
Assigned to an
Unique Option

Display or not a line


above Menu Option

Control in
what blocks
Menu Option
is enabled

Save & Test


1. Save Work
2. Close Form Being Personalized
3. Reopen & Test

Demonstration
Several Form Personalizations
Ranging from Simple to Advanced
For each:
Identify the Personalization Functionality
Leveraged
Walkthrough the Setups

Examples
Hide the Online button on the Release
Form
Pop a Customer Specific Message when
entering SO for Customer
Open a Customers Address in a Google
Map

More Examples
Control a Users Discounting Privileges
Open the Item Supply/Demand form from
the Sales Order and pass parameters
Print the AR Invoice from within the Sales
Order Form

Hide Online button on Release Form


Demonstrate
Set Property Value
Simple!
A Great Example of an Easy Personalization
that is Very Effective!

Hide Online button on Release Form


Before

After

Hide Online button on Release Form


Header

Condition
Accept Default

Hide Online button on Release Form


Actions
Type = Property
Object Type = Item
Target Object = RELEASE.ONLINE
Property Name = DISPLAYED
Value = False

Pop Customer Specific Msg at OE


SQL-based Condition
Pop a Message Box
SQL-based Message
Insert Get Expression

Pop Customer Specific Msg at OE


Customer Master

Sales Order Form

Pop Customer Specific Msg at OE


Condition
Trigger Event = WHEN-NEW-ITEM-INSTANCE
Trigger Object = ORDER.SOLD_TO
Condition = (select attribute6 from hz_cust_accounts where
cust_account_id=${item.order.sold_to_org_id.value}) is not null

Pop Customer Specific Msg at OE


Actions
Type = Message
Message Type = Show
Message Text = =select attribute6 from hz_cust_accounts where
cust_account_id=${item.order.sold_to_org_id.value}

Pop Customer Address in a Web Map


Create a Menu Option
Launch From a Menu Option
Launch SQL-based URL
Insert Get Expression
Requires Two Personalization Records
Create Menu Option
Launch URL

Pop Customer Address in a Web Map


Sales Order Form

Customer Address
In Google Map

Pop Customer Address in a Web Map


Header - Creating Menu Option

Condition - Creating Menu Option


Accept Default

Pop Customer Address in a Web Map


Actions - Creating Menu Option
Type Menu
Menu Entry MENU1
Menu Label Map It! (or any name you prefer)

Pop Customer Address in a Web Map


Header Launch URL

Condition Launch URL


Trigger Event = MENU1
Condition = ${item.order.ship_to_address1.value} IS NOT NULL

Pop Customer Address in a Web Map


Actions Launch URL
Trigger Event = Builtin
Builtin Type = Launch a URL
Argument = =SELECT
('http://maps.google.com/maps?f=q&hl=en&geocode=&q='||${item.order.sh
ip_to_address1_mir.value}||','||${item.order.ship_to_address5_mir2.value})
FROM DUAL

Control a Users Discounting Privileges


Message Box
Call Package to create Message Text
Launch Multiple Actions
Raise Form_Trigger_Failure Builtin
Utilize PL/SQL package in Condition
Insert Get Expression

Control a Users Discounting Privileges


Assign Discount Limit to Custom System Option

Validate if Users
Discount of List
Price is within
her/his Limit

Control a Users Discounting Privileges


Condition
Trigger Event = WHEN-VALIDATE-RECORD
Trigger Object = LINE
Condition = (1 (${item.line.unit_selling_price.value}/${item.line.unit_list_price.value})) >
(XXLCG_FORMS_PERSON_UTIL_PKG.get_discount_limit(FND_GLOBAL.USER_I
D)/100)

Control a Users Discounting Privileges


Actions
Trigger Event = Message
Message Type = Error
Message Text = =SELECT 'You do not have the permission to apply a discount
greater than ' ||
XXLCG_FORMS_PERSON_UTIL_PKG.get_discount_limit(FND_GLOBAL.USE
R_ID) || '% to the original list price of
'||TO_CHAR(${item.line.unit_list_price_mir.value},'$9,999,999.99')|| '. Please
contact your sales manager if the discount must be applied.' FROM DUAL

Control a Users Discounting Privileges


Actions
Trigger Event = Builtin
Builtin Type = RAISE FORM_TRIGGER_FAILURE

Open Supply/Demand Form from SO


Launch Form Built-In
Passing Form Parameters
Create Menu Option
Launch From Menu Option
Insert Get Expression

Open Supply/Demand Form from SO


From Sales Order Tools Menu,
select Open Item Demand

Supply/Demand Form opens passing item


already queried on Sales Order Line

Open Supply/Demand Form from SO


Condition - Creating Menu Option
Accept Default

Actions - Creating Menu Option


Type = Menu
Menu Entry = MENU3
Menu Label = Open Item Demand (or whatever you choose)
Enabled in Block(s) = LINE

Open Supply/Demand Form from SO


Condition Launching Form
Trigger Event = MENU3

Open Supply/Demand Form from SO


Actions Launching Form
Type = Builtin
Builtin Type = Launch a Function
Function Code = INV_INVDVDSD
Parameters = =SELECT
'ITEM_NUMBER='||${item.line.inventory_item.value}||' ORG_ID =
'||${item.line.ship_from_org_id.value} FROM DUAL

Print AR Invoice from the Sales Order

Launch SRS Form Builtin


Global Parameters
Create Menu Option
Launch From Menu Option
Requires Three Personalizations
1. Create Menu Option
2. Launch SRS Form
3. Default Parameters in SRS Form

Print AR Invoice from the Sales Order


From Sales Order form, Select
TOOLS > PRINT AR INVOICE

The AR Invoice SRS


form will open with the
Invoice Number
defaulted

Print AR Invoice from the Sales Order


Header - Creating Menu Option

Condition - Creating Menu Option


Accept Default

Print AR Invoice from the Sales Order


Actions - Creating Menu Option
Type Menu
Menu Entry MENU2
Menu Label Print AR Invoice (or any name you prefer)

Print AR Invoice from the Sales Order


Header Launch SRS Form

Condition - Launch SRS Form


Trigger Event MENU2
Condition (XXLCG_FORMS_PERSON_UTIL_PKG.get_line_invoice_num(${item.line.line_id.v
alue}) IS NOT NULL)

Print AR Invoice from the Sales Order


Actions Launch SRS Form
Type Property
Object Type Global Variable
Target Object XX_PRINT_AR_INV_PARAM_VAR (or what value you chose)
Property Name VALUE
Value - =SELECT 'Transaction
Number...'||XXLCG_FORMS_PERSON_UTIL_PKG.get_line_invoice_num(${item.l
ine.line_id.value})||'.'||XXLCG_FORMS_PERSON_UTIL_PKG.get_line_invoice_nu
m(${item.line.line_id.value})||'......No.' FROM dual

Print AR Invoice from the Sales Order


Actions Launch SRS Form
Type Builtin
Builtin Type Launch SRS Form
Program Name Invoice Print Selected Invoices (select the desired
request)

Print AR Invoice from the Sales Order


Header Default Parameters in SRS Form

Condition - Default Parameters in SRS Form


Trigger Event WHEN-NEW-ITEM-INSTANCE
Trigger Object WORK_ORDER.PARAMETERS
Condition - (${item.work_order.user_concurrent_program_name.value} = 'Invoice
Print Selected Invoices') AND (${global.xx_print_ar_inv_param_var.value} IS NOT
NULL)

Print AR Invoice from the Sales Order


Actions Default Parameters in SRS Form
Type Property
Object Type Item
Target Object WORK_ORDER.PARAMETERS
Property Name VALUE
Value - =SELECT
nvl(${global.XX_PRINT_AR_INV_PARAM_VAR.value},${item.work_order.para
meters.value}) FROM dual

In Conclusion
Form Personalizations provide the means
to easily extend your forms with minimal
technical development
Goes beyond requiring fields and popping
message boxes
Get out there and try enhancing your
users experience

Additional Information
Form Personalizations in Oracle
Applications (Release 12) Metalink Doc Id:
395117.1
Information About the Oracle Applications
Form Personalization Feature in 11i Metalink
Doc Id: 279034.1
Metalink in general
www.oaug.org
Google web search for Oracle Form
Personalization

Q&A
Contact Information
Jeff Lollar
Lucidity Consulting Group
jlollar@luciditycg.com
www.luciditycg.com

You might also like