© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms 6Forms 6iiPersonalizationsPersonalizations
-- From From CUSTOM.pllCUSTOM.pll to to Forms Personalization Forms Personalization
in 11.5.10in 11.5.10
Release 11i WorkshopsOrlando, FL • Chicago, IL • St. Louis, MO • Los Angeles, CA San Ramon, CA • Worcester, MA • Atlanta, GA • Dallas, TXwww.solutionbeacon.com
Susan BehnSolution Beacon, LLC
Real Solutions for the Real World.®
2© 2006 Solution Beacon, LLC. All Rights Reserved.
Are you an OAUG Member?Member Benefits include:Member Benefits include:
AdvocacyAdvocacy opportunities to influence Oracle on product opportunities to influence Oracle on product enhancements, usability, new features, Oracle support, pricing enhancements, usability, new features, Oracle support, pricing and qualityand qualityKnowledgeKnowledge that showcases the latest trends and techniques that showcases the latest trends and techniques used by industry leaders through our national and regional used by industry leaders through our national and regional events and our publications, such as OAUG Insight magazineevents and our publications, such as OAUG Insight magazineCommunicationCommunication with other OAUG members worldwide with other OAUG members worldwide through participation in OAUG committees, leadership positions, through participation in OAUG committees, leadership positions, interaction with Oracle Corporation's user initiatives, frequentinteraction with Oracle Corporation's user initiatives, frequentmember surveys, and Oracle management briefingsmember surveys, and Oracle management briefingsEducationEducation through the hundreds of careerthrough the hundreds of career--enhancing enhancing presentations in our conference paper database archive, as well presentations in our conference paper database archive, as well as discounts to conferences and Oracle educationas discounts to conferences and Oracle educationNetworkingNetworking with Oracle customers, industry experts, thirdwith Oracle customers, industry experts, third--party software firms, and other Oracle Applications specialists party software firms, and other Oracle Applications specialists through our Member Database and Online Vendor Directorythrough our Member Database and Online Vendor Directory
3© 2006 Solution Beacon, LLC. All Rights Reserved.
Introduction
Solution Beacon, LLCSusan Behn
4© 2006 Solution Beacon, LLC. All Rights Reserved.
Personalized and Custom Security Options
Past – CUSTOM.pll
Present – Logical Apps AppsRules
Future – Forms Personalization in 11.5.10
Additional Resources
Agenda
5© 2006 Solution Beacon, LLC. All Rights Reserved.
Library available in $AU_TOP/resource
Allows modifications to provide personalizations for Oracle Application 6i forms (not self service)
Use forms builder 6i to modify package body
Supported by Oracle **with limitations
Documented: Application Developer Guide –Chapter 28
CUSTOM.pll – What is it?
6© 2006 Solution Beacon, LLC. All Rights Reserved.
Hide fields, tabs
Make fields required
Restrict update or insert
Change prompts, tab labels
Alter LOVs
Create zooms and tool bar menu selections
Almost anything you can do in PL/SQL
CUSTOM.pll – What you can do?
7© 2006 Solution Beacon, LLC. All Rights Reserved.
Traditional implementation of customizations in CUSTOM.pll only allows one developer at a time to make modifications
Size limitations
Keeping code modular
Testing requirements can be significant for subsequent modifications to CUSTOM.pll
CUSTOM.pll – Challenges
8© 2006 Solution Beacon, LLC. All Rights Reserved.
How to address the challenges…
CUSTOM.pll – Methodology
9© 2006 Solution Beacon, LLC. All Rights Reserved.
Multi-Developer Solution – Supplier Form Example
Create a separate library (.pll) for each form to be customizedAttach the APPCORE2 library
CUSTOM.pll – Methodology
10© 2006 Solution Beacon, LLC. All Rights Reserved.
Supplier Form Example-Make vendor type required
Create the program units
CUSTOM.pll – Methodology
PACKAGE XXXXXAPXVDMVX ISProcedure event(event_name VARCHAR2);
END;
Package Spec
Package Body
PACKAGE BODY XXXXXAPXVDMVXISPROCEDURE event (event_name VARCHAR2) IS
BEGINIF event_name = ‘WHEN-NEW-FORM-INSTANCE’ THEN
\*Make the vendor type field required*\APP_ITEM_PROPERTY2.SET_PROPERTY(‘VENDOR_TYPE_DISP’,REQUIRED,PROPERTY_TRUE);
END IF;END event;END XXXXXAPXVDMVX;
11© 2006 Solution Beacon, LLC. All Rights Reserved.
Multi-Developer Solution – Supplier Form Example
Attach your new library to CUSTOM.pll
CUSTOM.pll – Methodology
Navigator view of CUSTOM.pll
Your new library
12© 2006 Solution Beacon, LLC. All Rights Reserved.
Multi-Developer Solution – Supplier Form Example
Add a call to your new library in CUSTOM.pll
CUSTOM.pll – Methodology
Package Body of CUSTOM.pll
Form_name varchar2(30) := name_in(‘system.current_form’);Begin
If form_name = ‘APXVDMVD’ THENxxxxxapxvdmvd.event(event_name);
Elsif form_name = ‘OEXOEORD’ THENxxxxxoexoeord.event(event_name);
end if;end event;
13© 2006 Solution Beacon, LLC. All Rights Reserved.
CUSTOM.pll – More Examples
\*Force Upper Case for Supplier Name*\
APP_ITEM_PROPERTY2.SET_PROPERTY(‘VNDR.VENDOR_NAME_MIR',CASE_RESTRICTION,UPPERCASE);
\* Hide the tax payer id*\
APP_ITEM_PROPERTY2.SET_PROPERTY(‘VNDR.NUM_1099_MIR',DISPLAYED,PROPERTY_OFF)
\*Change the prompt*\
APP_ITEM_PROPERTY2.SET_PROPERTY(‘VNDR. END_DATE_ACTIVE_MIR',PROMPT_TEXT,’Inactive Date’)
14© 2006 Solution Beacon, LLC. All Rights Reserved.
Bank Account Type is required and must be S for Savings or C for Checking
CUSTOM.pll – NIH Requirements and Solutions
15© 2006 Solution Beacon, LLC. All Rights Reserved.
Do not allow entry of ACH banking information for patients
CUSTOM.pll – NIH Requirements and Solutions
16© 2006 Solution Beacon, LLC. All Rights Reserved.
On the enter person form, default the employee number based on a custom profile option
CUSTOM.pll – NIH Requirements and Solutions
17© 2006 Solution Beacon, LLC. All Rights Reserved.
Prevent update of descriptive flexfield
CUSTOM.pll – NIH Requirements and Solutions
18© 2006 Solution Beacon, LLC. All Rights Reserved.
Logical Apps AppsRulesConfigurable Security for 6i formsCentralized Rules RepositoryFront end interface to CUSTOM.pllRecommended for pre 11.5.10 installations
19© 2006 Solution Beacon, LLC. All Rights Reserved.
Logical Apps AppsRulesExamples of National Institutes of Health Security Rules
Implemented using AppsRulesSecurity
Prevent update to fields and blocksHide Fields and Tabs
List of Values on field without existing LOVMessagesChange promptsSet default valuesLimit access for:
ResponsibilityProfile OptionEmail AddressUser
20© 2006 Solution Beacon, LLC. All Rights Reserved.
Logical Apps AppsRulesAppsRules Security Tab
21© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms PersonalizationPersonalizations are declarative changes to forms delivered with the E-Business SuiteForms Personalizations declaratively alter the behavior of FormsUser must understand Forms and PL/SQL Most changes traditionally done using CUSTOM.pll can be accomplished using Forms Personalization
Must use CUSTOM.pll to alter LOVsCUSTOM.pll allows all PL/SQL capabilities, Built-ins
and SQLForms Personalizations are effective immediately – no compilingForms Personalizations fire prior to CUSTOM.pll for the same event
22© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Profile OptionsEnvironment – 11.5.10.2(Forms Personalization in CU1 changed significantly with CU1 patch)Set Profile Option Hide Diagnostics menu entry to No(Yes will hide the diagnostics menu)Profile Option Utilities: Diagnostics – if set to No, apps password is required
23© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Access Access the form or function needing personalizationHelp Diagnostics Custom Code Personalize
24© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization
25© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Rule HeaderSequence
Rules run in sequenceSequence numbers (1-100) are not unique
Description – free form entryLevel – Form or Function (CU1 patch)
26© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Rule HeaderDebug mode
OffStep-by-Step – shows events impacted by rule
(CU1 patch)Show Debug Messages – shows messages with
type = debugEnabled – checked
27© 2006 Solution Beacon, LLC. All Rights Reserved.
Trigger Events
Use generic trigger events available in most formsUse specific events unique to the form (with caution)Find events using Help Diagnostics Custom Code
Show Custom EventsTrigger Events are not validated from the LOV
Forms Personalization – Condition Tab – Trigger Event
28© 2006 Solution Beacon, LLC. All Rights Reserved.
Trigger Events – Generic to almost all forms
WHEN-NEW-FORM-INSTANCESecurity rulesNavigation rulesVisual attributesAvoid message rules at this level
WHEN-NEW-BLOCK-INSTANCESame as WHEN-NEW-FORM-INSTANCEMessage rules
WHEN-NEW-RECORD-INSTANCEDefault values
Forms Personalization – Condition Tab – Trigger Event
29© 2006 Solution Beacon, LLC. All Rights Reserved.
Trigger Events – Generic to almost all formsWHEN-NEW-ITEM-INSTANCE
Message rulesDefault values dependent on entry of another item
WHEN-VALIDATE-RECORDPopulate hidden fieldsAdditional validations
SPECIALnPopulate tools menu (MENU1-15) (CU1 patch)Populate tools menu (SPECIAL 1-15)Populate reports menu (SPECIAL 16-30)Populate actions menu (SPECIAL 31-45)
Forms Personalization – Condition Tab – Trigger Event
30© 2006 Solution Beacon, LLC. All Rights Reserved.
Trigger Events – Generic to almost all forms
ZOOM – recommend using MENUn or SPECIALn rather than zoomKEY-Fn
Forms Personalization – Condition Tab – Trigger Event
31© 2006 Solution Beacon, LLC. All Rights Reserved.
Trigger Object
Required if LOV is availableRequires Block Name
WHEN-NEW-BLOCK-INSTANCEWHEN-NEW-RECORD-INSTANCEWHEN-VALIDATE-RECORD
Requires Block.field nameWHEN-NEW-ITEM-INSTANCE
May be required for other events specific to form
Forms Personalization – Condition Tab – Trigger Object
32© 2006 Solution Beacon, LLC. All Rights Reserved.
Conditions Optional SQL code fragment to limit scope of ruleReferences bind variables (:block.field)Examples
Use to limit scope based on profile option valuesGL Journal Entry – Remind users to change the
period name the first 20 days of the fiscal year
Forms Personalization – Condition Tab – Condition
33© 2006 Solution Beacon, LLC. All Rights Reserved.
Context – who does this rule apply to?Multiple scope rows are allowedLevel at which the rule will apply
Site ResponsibilityUser – Use this for testing rulesIndustry (For future use)
Value – choose from LOV
Tip: For initial development, set scope to your user id
Forms Personalization – Condition Tab – Context
34© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Property Actions
35© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Property Actions
SequenceRules will run in sequenceSequence number not unique
TypePropertyMessageBuilt-inMenu
DescriptionLanguage – use when changing prompts for a specific languageEnabled – checked
36© 2006 Solution Beacon, LLC. All Rights Reserved.
Choose Object TypeItem , Window, Block, Tab Page, ParameterRadio Button, View, :GLOBAL Variable, CanvasLOV, Local Variable (CU1 patch)
Forms Personalization – Property Actions
***These prompts will vary for each action type***
37© 2006 Solution Beacon, LLC. All Rights Reserved.
Use Select by Text button to select the target object by prompt nameOptionally use LOV to choose by object name
Forms Personalization – Property Actions
38© 2006 Solution Beacon, LLC. All Rights Reserved.
Property Name – Use the LOV to choose which property to personalize
Forms Personalization – Property Actions
39© 2006 Solution Beacon, LLC. All Rights Reserved.
Use Get Value button to get the current value if neededChange the value if desired
Forms Personalization – Property Actions
40© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Property Actions ExampleForce Upper Case for the Vendor NameType = PropertyObject Type = ItemTarget Object = VNDR.VENDOR_NAME_MIRProperty Name = CASE_RESTRICTIONValue = UPPERCASE
41© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Property Actions ExampleChange the window titleType = PropertyObject Type = WindowTarget Object = VENDORProperty Name = TITLEValue = Suppliers (Oracle Open World)
42© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Property Actions ExamplePrevent Insert in the Bank Accounts Tab(require users to do this in Bank setup)Type = PropertyObject Type = BlockTarget Object = VNDR_USESProperty Name = INSERT_ALLOWEDValue = False
43© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization –Property Actions ExampleSet a global variable to the value of the email address in FND_USERS and display this value in a message
Type = PropertyObject Type = :GLOBAL VariableTarget Object = XX_USER_EMAILProperty Name = VALUEValue = =SELECT Nvl(Email_Address,'NO_EMAIL')
FROM fnd_userWHERE user_id = fnd_global.user_id
44© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Variables Global Variables
Used to pass values between forms Max length is 255 bytesPrepend the name of the variable with XX
Local variables Used when you need to refer to a variable multiple timesSpecific to local formMax length is 4000 bytesPrepend the name of the variable with XX
45© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – StringsRules for fields that accept strings
Start with =String evaluated at run timeCan use bind variables, operators, etcCan use server side functions without out
variablesPrior to CU1 patch, SQL statements starting with
=Select require “A” alias (=Select meaning A from fnd_lookups where…_
Does not start with =String is taken as a literal exactly as you type it
46© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Property Actions Example:GLOBAL Variable
Use the Validate button to validate your string
47© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Messages Message Type Fields
Message TypeShow – Informational MessageHint – Appear on status barError – Requires user responseDebug – Only displays if debug mode is set to
Show Debug MessagesWarn – Informational message with caution
symbolMessage Text
Do not use messages for WHEN-NEW-FORM events
48© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Message ExampleMessage to display global variable to show email address when form opens
49© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – More Message ExamplesDebug message – Debug mode must be set to Show Debug Messages
Training reminders
50© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Menu ExampleCreate a menu entry to submit Supplier Payment History reportType = Menu (Prior to CU1 patch, Type = Special)Menu Entry = MENU1 – MENU15 or SPECIAL1-45Menu Label = Supplier Payment HistoryIcon = nullEnabled in Blocks = VNDR, SITE
Separate by comma
51© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Menu ExampleCreate a menu entry to submit Supplier Payment History reportUse Add Block Button to choose blocks
52© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Menu ExampleCreate a menu entry to submit Supplier Payment History reportNote – this action only displays the menu entry –functionality behind the menu entry is the next step
53© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Built-in ExampleActivate the menu entry to execute the concurrent request Supplier Payment HistoryTrigger Event = MENU1
54© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Built-in ExampleActivate the menu entry to run Supplier Payment History ReportType = BuiltinBuiltin Type = Launch SRS Form (CU1 patch)Program Name = Supplier Payment History
Note: Parameters are not automatically passed
55© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Built-in ExampleSupplier Payment History Report – How to pass parametersCreate rule with a sequence before menu executeTrigger event = MENUn or SPECIALnSet :GLOBAL variable to value of parameters for report
56© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Built-in ExampleSupplier Payment History Report – Passing ParametersCreate a new rule for the Requests: Submit formSet the condition to only apply the rule when the global variable is not null
57© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Built-in ExampleSupplier Payment History Report – Passing ParametersCreate the action for the new rule for the Requests: Submit form to set the parameters to the global variableNote: work_order.parameters separates parameters with a period therefore if the data you are trying to pass includes a period it will not pass correctly
58© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Built-in ExampleOpen a url Trigger Event = WHEN-NEW-FORM-INSTANCEEstablish menu entry
Trigger Event = MENU2
CU1 Patch
59© 2006 Solution Beacon, LLC. All Rights Reserved.
Launch a function (CU1 patch) to view payment history formEstablish the Menu entry
Trigger Event = WHEN-NEW-FORM-INSTANCEAction Type = MenuMENU3 = Payment History
Forms Personalization – Built-in Example
60© 2006 Solution Beacon, LLC. All Rights Reserved.
Launch a function to view payment history formTrigger Event = MENU3Set the :GLOBAL VariableLaunch a Function
Forms Personalization – Built-in Example
61© 2006 Solution Beacon, LLC. All Rights Reserved.
Launch a function – target function rulesPopulate query find variable if the global variable is not null
Trigger Event = WHEN-NEW-ITEM-INSTANCETrigger Object = use the first item on the form
Forms Personalization – Built-in Example
62© 2006 Solution Beacon, LLC. All Rights Reserved.
Launch a function – target function rulesPopulate query find variable if the global variable is not null
Trigger Event = WHEN-NEW-BLOCK-INSTANCEAction Type = Property
Forms Personalization – Built-in Example
CU1 Patch
63© 2006 Solution Beacon, LLC. All Rights Reserved.
Launch a function – target function rulesExecute the DO_KEY(‘NEXT_BLOCK’) built in to force query execution
Trigger Event = WHEN-NEW-BLOCK-INSTANCEAction Type = Builtin
Forms Personalization – Built-in Example
64© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Other Built-insGO_BLOCK
GO_ITEM
RAISE_FORM_TRIGGER_FAILURE
FORMS_DDL
EXECUTE_TRIGGER (CU1 patch)
SYNCHRONIZE (CU1 patch)
65© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Tips If you disable a tab page, make sure the user cannot still navigate to the items on the tab pageYou may need to exit and re-open the form to see personalization changesUse Help Diagnostics Custom Show Custom Events to determine what events are firingSee MetaLink note 279034.1 for special rules for forms with foldersAfter upgrades, go to the personalization for each form and choose Tools Validate All Use debug message before and after eventsInitialize global variables to null in the navigator form using the WHEN-FORM-NAVIGATE trigger event
66© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Tips Use the Validate button to validate strings
Conditions will return true, false or errorValues will return the resulting string or an error
Use the Apply Now button to apply the action now and see the results (does not always work if dependant on the results of another action)Use the Insert ‘Get’ Expression button to get any property of an item (CU1 patch)Turn custom code off to confirm any form problem is due to custom code Help Diagnostics Custom Code OffSet global values to null in the navigator form using the WHEN-FORM-NAVIGATE trigger
67© 2006 Solution Beacon, LLC. All Rights Reserved.
Customizations / Personalizations
WARNING
Customizations or Personalizations, whether they are protected or non protected, allow you to fundamentally change the behavior of the application.
This could interfere with intended functionality.
Use with caution!
TEST! TEST! TEST! TEST! TEST!
68© 2006 Solution Beacon, LLC. All Rights Reserved.
Customizations / Personalizations
…THEN TEST IT AGAIN!
69© 2006 Solution Beacon, LLC. All Rights Reserved.
Forms Personalization – Moving to Another Instance
Download for a specific form:FNDLOAD <userid>/<password> 0 Y DOWNLOAD
$FND_TOP/patch/115/import/affrmcus.lct <filename.ldt> FND_FORM_CUSTOM_RULES form_name=<form name>Download all personalizations
FNDLOAD <userid>/<password> 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct <filename.ldt> FND_FORM_CUSTOM_RULES Upload
FNDLOAD <userid>/<password> 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.lct <filename.ldt>
70© 2006 Solution Beacon, LLC. All Rights Reserved.
Oracle Applications User Interface Standards for Forms-Based ProductsOracle Applications Developer’s GuideOracle Applications System Administrator’s GuideOracle Applications User GuideMetaLink note 279034.1 – Forms PersonalizationConfiguring, Reporting and System Administration in HRMSOracle Self Service Web Applications Implementation Manualwww.solutionbeacon.com – newsletters, free tools, white papers and presentations, Vision access
Other Sources of Information
71© 2006 Solution Beacon, LLC. All Rights Reserved.
Thank you!
If you have any questions or comments please contact:
Susan Behn [email protected]
For free Release 11i Tools and helpful information, please visit our website at:
www.solutionbeacon.com
Real Solutions for the Real World.®
72© 2006 Solution Beacon, LLC. All Rights Reserved.
Real Solutions for the Real World.®__________________________________________________________
Visit Solution Beacon Visit Solution Beacon in the Collaborate in the Collaborate ’’06 Exhibit Hall 06 Exhibit Hall
Booth # 726Booth # 726