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 Enable or Disable

Provide a clear description

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 Enable for a particular language

Select Type. This determines fields presented in region on the right.

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 Based on Object Type Selected, identify particular Object

The Property of the Object that will be edited. Example: Displayed, Value, Prompt, etc

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 Control in what blocks Menu Option is enabled

Display or not a line above Menu Option

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