Published on

personalization example

Published in: Economy & Finance
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide


  1. 1. Enhance the UserExperience with Form Personalizations Jeff Lollar, Lucidity Consulting Group September 2007
  2. 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. 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. 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. 5. How to Create a Personalization1. Access Setup Form2. Enter Condition3. Enter Action4. Save & Test
  6. 6. Access Setup Form1. Navigate to the Form you wish to implement a Personalization for2. HELP > DIAGNOSTIC > CUSTOM CODE > PERSONALIZE
  7. 7. Access Setup Form
  8. 8. Access Setup FormImpacting 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. 9. Enter ConditionProvide the Condition that must be satisfied in order for the Action to take placeThe HeaderTriggering Event & ObjectCondition StatementContext
  10. 10. Enter ConditionEnter the HeaderUse Sequence for Organization and Enable or Disablecontrolling 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)
  11. 11. Enter ConditionTriggering 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-45Triggering Object  Required depending on Triggering Event  BLOCK.FIELD (validated)
  12. 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 formInsert variables that reference Helps with inserting Bindattribute values of objects (items, Variables (BLOCK.ITEM)windows, globals, ets)
  13. 13. Enter ConditionContext RegionRestrict Personalization to a particularUserResponsibilityIndustry (reserved for future per Metalink Doc Id 395117.1) Example of restricting by user
  14. 14. Enter ActionEnter 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. 15. Enter ActionProperty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. 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. 17. Enter ActionBuiltin 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. 18. Enter ActionMenu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. 19. Save & Test1. Save Work2. Close Form Being Personalized3. Reopen & Test
  20. 20. DemonstrationSeveral Form PersonalizationsRanging from Simple to AdvancedFor each: Identify the Personalization Functionality Leveraged Walkthrough the Setups
  21. 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. 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. 23. Hide “Online” button on Release FormDemonstrateSet Property ValueSimple! A Great Example of an Easy Personalization that is Very Effective!
  24. 24. Hide “Online” button on Release Form Before After
  25. 25. Hide “Online” button on Release Form HeaderConditionAccept Default
  26. 26. Hide “Online” button on Release FormActions•Type = Property •Object Type = Item •Target Object = RELEASE.ONLINE •Property Name = DISPLAYED •Value = False
  27. 27. Pop Customer Specific Msg at OESQL-based ConditionPop a Message BoxSQL-based MessageInsert ‘Get’ Expression
  28. 28. Pop Customer Specific Msg at OE Customer Master Sales Order Form
  29. 29. Pop Customer Specific Msg at OECondition•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. 30. Pop Customer Specific Msg at OEActions•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. 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. 32. Pop Customer Address in a Web Map Sales Order Form Customer Address In Google Map
  33. 33. Pop Customer Address in a Web MapHeader - Creating Menu OptionCondition - Creating Menu OptionAccept Default
  34. 34. Pop Customer Address in a Web MapActions - Creating Menu Option•Type – Menu •Menu Entry – MENU1 •Menu Label – Map It! (or any name you prefer)
  35. 35. Pop Customer Address in a Web Map Header – Launch URLCondition – Launch URL•Trigger Event = MENU1•Condition = ${item.order.ship_to_address1.value} IS NOT NULL
  36. 36. Pop Customer Address in a Web MapActions – Launch URL•Trigger Event = Builtin •Builtin Type = Launch a URL •Argument = =SELECT (||${ ip_to_address1_mir.value}||,||${item.order.ship_to_address5_mir2.value}) FROM DUAL
  37. 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. 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. 39. Control a Users Discounting PrivilegesCondition•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)
  40. 40. Control a Users Discounting PrivilegesActions•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. 41. Control a Users Discounting Privileges Actions •Trigger Event = Builtin •Builtin Type = RAISE FORM_TRIGGER_FAILURE
  42. 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. 43. Open Supply/Demand Form from SO From Sales Order Tools Menu, select “Open Item Demand”Supply/Demand Form opens passing itemalready queried on Sales Order Line
  44. 44. Open Supply/Demand Form from SOCondition - Creating Menu OptionAccept DefaultActions - Creating Menu Option•Type = Menu •Menu Entry = MENU3 •Menu Label = Open Item Demand (or whatever you choose) •Enabled in Block(s) = LINE
  45. 45. Open Supply/Demand Form from SOCondition – Launching FormTrigger Event = MENU3
  46. 46. Open Supply/Demand Form from SOActions – 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. 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. 48. Print AR Invoice from the Sales Order From Sales Order form, Select TOOLS > PRINT AR INVOICEThe AR Invoice SRSform will open with theInvoice Numberdefaulted
  49. 49. Print AR Invoice from the Sales OrderHeader - Creating Menu OptionCondition - Creating Menu OptionAccept Default
  50. 50. Print AR Invoice from the Sales OrderActions - Creating Menu Option•Type – Menu •Menu Entry – MENU2 •Menu Label – Print AR Invoice (or any name you prefer)
  51. 51. Print AR Invoice from the Sales OrderHeader – Launch SRS FormCondition - Launch SRS FormTrigger Event – MENU2Condition -(XXLCG_FORMS_PERSON_UTIL_PKG.get_line_invoice_num(${item.line.line_id.value}) IS NOT NULL)
  52. 52. Print AR Invoice from the Sales OrderActions – 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. 53. Print AR Invoice from the Sales OrderActions – Launch SRS Form•Type – Builtin •Builtin Type – Launch SRS Form •Program Name – Invoice Print Selected Invoices (select the desired request)
  54. 54. Print AR Invoice from the Sales OrderHeader – Default Parameters in SRS FormCondition - 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} = InvoicePrint Selected Invoices) AND (${global.xx_print_ar_inv_param_var.value} IS NOTNULL)
  55. 55. Print AR Invoice from the Sales OrderActions – 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. 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. 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 Google web search for “Oracle Form Personalization”
  58. 58. Q&A Contact Information Jeff Lollar Lucidity Consulting Group