2. 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
3. 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
4. Limitations of Form Personalizations
Not used by Pages/OAF (This is a
different type of Personalization)
Executed at Form Level (No impact on
API’s 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
5. How to Create a Personalization
1. Access Setup Form
2. Enter Condition
3. Enter Action
4. Save & Test
6. Access Setup Form
1. Navigate to the
Form you wish
to implement a
Personalization
for
2. HELP >
DIAGNOSTIC >
CUSTOM
CODE >
PERSONALIZE
8. 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
9. 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
10. Enter Condition
Enter the Header
Use Sequence for Organization and Enable or Disable
controlling prioritization
Apply at the Form or Function Level
Provide a clear description
(A function is a particular instance of a
form assigned to a Responsibility’s Menu)
12. Enter Condition
Condition Statement
If Condition evaluates to TRUE then Actions are Control if rule should be
processed. Can leverage SQL functions, processed in Query-Mode
operators, and bind variables
Test your
condition using
data in current
form
Insert variables that reference Helps with inserting Bind
attribute values of objects (items, Variables (BLOCK.ITEM)
windows, globals, ets)
13. 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
14. Enter Action
Enter Action
This is WHAT the Personalization does
Four Basic Types
Sequence that Enable for a particular
1. Property Actions take language
order
2. Message
3. Builtin
4. Menu
Select Type. This determines
Enable or Disable
fields presented in region on
the right.
15. Enter Action
Property
Set a Value for a particular Property on a
Particular Object.
Ex. Make “Payment Terms” field required.
Based on Object
Example: Item,
Type Selected,
Block, Window,
identify
Canvas, etc
particular Object
The Property of the Object that The new value to
will be edited. Example: assign to the property.
Displayed, Value, Prompt, etc SQL may be used here
16. 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
17. 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
18. Enter Action
Menu
Create Menu Options Under Toolbar
Headings
Requires additional personalization at
condition of Selection What the user
will see
Assigned to an
Unique Option
Control in
what blocks
Menu Option
Display or not a line is enabled
above Menu Option
19. Save & Test
1. Save Work
2. Close Form Being Personalized
3. Reopen & Test
21. 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
22. 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
23. Hide “Online” button on Release Form
Demonstrate
Set Property Value
Simple!
A Great Example of an Easy Personalization
that is Very Effective!
29. 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
30. 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}
31. 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
32. Pop Customer Address in a Web Map
Sales Order Form
Customer Address
In Google Map
33. Pop Customer Address in a Web Map
Header - Creating Menu Option
Condition - Creating Menu Option
Accept Default
34. 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)
35. 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
36. 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
37. 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
38. Control a Users Discounting Privileges
Assign Discount Limit to Custom System Option
Validate if User’s
Discount of List
Price is within
her/his Limit
39. 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)
40. 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
41. Control a Users Discounting Privileges
Actions
•Trigger Event = Builtin
•Builtin Type = RAISE FORM_TRIGGER_FAILURE
42. Open Supply/Demand Form from SO
Launch Form Built-In
Passing Form Parameters
Create Menu Option
Launch From Menu Option
Insert ‘Get’ Expression
43. 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
44. 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
46. 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
47. 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
48. 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
49. Print AR Invoice from the Sales Order
Header - Creating Menu Option
Condition - Creating Menu Option
Accept Default
50. 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)
51. 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)
52. 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
53. 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)
54. 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)
55. 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
56. 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
57. 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”
58. Q&A
Contact Information
Jeff Lollar
Lucidity Consulting Group
jlollar@luciditycg.com
www.luciditycg.com