58
Enhance the User Experience with Form Personalizations Jeff Lollar, Lucidity Consulting Group September 2007

personalization

Embed Size (px)

DESCRIPTION

personalization example

Citation preview

Page 1: personalization

Enhance the User Experience with Form

PersonalizationsJeff Lollar, Lucidity Consulting Group

September 2007

Page 2: personalization

Goals of this Presentation

Know what Form Personalizations areDevelop the mindset that Form

Personalizations can offer Creative SolutionsPosition to Implement Solutions with some

Trial and ErrorDemonstrate several popular and

“inspiring” Forms Personalizations

Page 3: personalization

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

Page 4: personalization

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 availableLimited CapabilitiesEx. Cannot add new items (fields, buttons,

etc) to the form

Page 5: personalization

How to Create a Personalization

1. Access Setup Form2. Enter Condition3. Enter Action4. Save & Test

Page 6: personalization

Access Setup Form

1. Navigate to the Form you wish to implement a Personalization for

2. HELP > DIAGNOSTIC > CUSTOM CODE > PERSONALIZE

Page 7: personalization

Access Setup Form

Page 8: personalization

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

Page 9: personalization

Enter Condition

Provide the Condition that must be satisfied in order for the Action to take place

The HeaderTriggering Event & ObjectCondition StatementContext

Page 10: personalization

Enter Condition

Enter the Header

Use Sequence for Organization and controlling prioritization

Enable or Disable

Apply at the Form or Function Level(A function is a particular instance of a form assigned to a Responsibility’s Menu)

Provide a clear description

Page 11: personalization

Enter Condition

Triggering EventWHEN-NEW-FORM-INSTANCEWHEN-NEW-BLOCK-INSTANCEWHEN-NEW-RECORD-INSTANCEWHEN-NEW-ITEM-INSTANCEWHEN-VALIDTE-RECORDMENU(N) – 1-15SPECIAL(N) – 1-45

Triggering ObjectRequired depending on Triggering EventBLOCK.FIELD (validated)

Page 12: personalization

Enter Condition

Helps with inserting Bind Variables (BLOCK.ITEM)

Condition Statement

Test your condition using data in current form

Insert variables that reference attribute values of objects (items, windows, globals, ets)

Control if rule should be processed in Query-Mode

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

Page 13: personalization

Enter Condition

Context RegionRestrict Personalization to a particularUserResponsibilityIndustry (reserved for future per Metalink Doc Id 395117.1)

Example of restricting by user

Page 14: personalization

Enter Action

Enter Action This is WHAT the Personalization does Four Basic Types

1. Property2. Message3. Builtin4. Menu

Enable for a particular language

Enable or DisableSelect Type. This determines fields presented in region on the right.

Sequence that Actions take order

Page 15: personalization

Enter Action

PropertySet a Value for a particular Property on a

Particular Object.Ex. Make “Payment Terms” field required.

Based on Object Type Selected, identify particular Object

The new value to assign to the property. SQL may be used here

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

Example: Item, Block, Window, Canvas, etc

Page 16: personalization

Enter Action

MessageMessage TypeShow – A message with an “OK” buttonHint –Message Line (lower left corner)Error – Aborts after message boxDebug – only if “Show Debug Messages” is checkedWarn – Aborts if user selects “Cancel”

Message TextSQLBind Variables

Page 17: personalization

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

Page 18: personalization

Enter Action

MenuCreate Menu Options Under Toolbar

HeadingsRequires additional personalization at

condition of Selection What the user will see

Control in what blocks Menu Option is enabledDisplay or not a line

above Menu Option

Assigned to an Unique Option

Page 19: personalization

Save & Test

1. Save Work2. Close Form Being Personalized3. Reopen & Test

Page 20: personalization

Demonstration

Several Form PersonalizationsRanging from Simple to AdvancedFor each:Identify the Personalization Functionality

LeveragedWalkthrough the Setups

Page 21: personalization

Examples

Hide the “Online” button on the Release Form Pop a Customer Specific Message when

entering SO for CustomerOpen a Customers Address in a Google

Map

Page 22: personalization

More Examples

Control a Users Discounting PrivilegesOpen the “Item Supply/Demand” form from

the Sales Order and pass parametersPrint the AR Invoice from within the Sales

Order Form

Page 23: personalization

Hide “Online” button on Release Form

DemonstrateSet Property ValueSimple!

A Great Example of an Easy Personalization that is Very Effective!

Page 24: personalization

Before

After

Hide “Online” button on Release Form

Page 25: personalization

Header

ConditionAccept Default

Hide “Online” button on Release Form

Page 26: personalization

Actions•Type = Property

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

Hide “Online” button on Release Form

Page 27: personalization

Pop Customer Specific Msg at OE

SQL-based ConditionPop a Message BoxSQL-based MessageInsert ‘Get’ Expression

Page 28: personalization

Pop Customer Specific Msg at OE

Customer Master

Sales Order Form

Page 29: personalization

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

Page 30: personalization

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}

Page 31: personalization

Pop Customer Address in a Web Map

Create a Menu OptionLaunch From a Menu OptionLaunch SQL-based URLInsert ‘Get’ ExpressionRequires Two Personalization RecordsCreate Menu OptionLaunch URL

Page 32: personalization

Pop Customer Address in a Web Map

Sales Order Form

Customer AddressIn Google Map

Page 33: personalization

Pop Customer Address in a Web Map

Header - Creating Menu Option

Condition - Creating Menu OptionAccept Default

Page 34: personalization

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)

Page 35: personalization

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

Page 36: personalization

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.ship_to_address1_mir.value}||','||${item.order.ship_to_address5_mir2.value}) FROM DUAL

Page 37: personalization

Control a Users Discounting Privileges

Message BoxCall Package to create Message TextLaunch Multiple Actions“Raise Form_Trigger_Failure” BuiltinUtilize PL/SQL package in ConditionInsert ‘Get’ Expression

Page 38: personalization

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

Page 39: personalization

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_ID)/100)

Page 40: personalization

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

Page 41: personalization

Control a Users Discounting Privileges

Actions•Trigger Event = Builtin

•Builtin Type = RAISE FORM_TRIGGER_FAILURE

Page 42: personalization

Open Supply/Demand Form from SO

Launch Form Built-InPassing Form ParametersCreate Menu OptionLaunch From Menu OptionInsert ‘Get’ Expression

Page 43: personalization

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

Page 44: personalization

Open Supply/Demand Form from SO

Condition - Creating Menu OptionAccept Default

Actions - Creating Menu Option•Type = Menu

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

Page 45: personalization

Open Supply/Demand Form from SO

Condition – Launching FormTrigger Event = MENU3

Page 46: personalization

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

Page 47: personalization

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 Option2. Launch SRS Form3. Default Parameters in SRS Form

Page 48: personalization

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

Page 49: personalization

Print AR Invoice from the Sales Order

Header - Creating Menu Option

Condition - Creating Menu OptionAccept Default

Page 50: personalization

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)

Page 51: personalization

Print AR Invoice from the Sales Order

Header – Launch SRS Form

Condition - Launch SRS FormTrigger Event – MENU2Condition -(XXLCG_FORMS_PERSON_UTIL_PKG.get_line_invoice_num(${item.line.line_id.value}) IS NOT NULL)

Page 52: personalization

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.line.line_id.value})||'.'||XXLCG_FORMS_PERSON_UTIL_PKG.get_line_invoice_num(${item.line.line_id.value})||'......No.' FROM dual

Page 53: personalization

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)

Page 54: personalization

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)

Page 55: personalization

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.parameters.value}) FROM dual

Page 56: personalization

In Conclusion…

Form Personalizations provide the means to easily extend your forms with minimal technical development Goes beyond requiring fields and popping

message boxesGet out there and try enhancing your

users’ experience

Page 57: personalization

Additional Information

“Form Personalizations in Oracle Applications (Release 12) “ Metalink Doc Id: 395117.1

“Information About the Oracle Applications Form Personalization Feature in 11i “ MetalinkDoc Id: 279034.1

Metalink in generalwww.oaug.orgGoogle web search for “Oracle Form

Personalization”

Page 58: personalization

Q & AContact Information

Jeff LollarLucidity Consulting Group

[email protected]