Form Personalization

Copyright © 2004, Oracle. All rights reserved.

Objectives
After completing this lesson, you should be able to do the following: ‡ Understand the basic concepts of Form Personalization: Rules and Actions ‡ Implement a variety of common Form Personalizations ‡ Understand the intermediate concepts of Form Personalization: Triggers, Conditions, MultiLingual issues, and Debugging ‡ Understand the advanced concepts of Form Personalization: Global variables, Query-byExample mode, Special menu entries, and Zooms ‡ Understand Form Personalization administration: Security, Loading, and Performance
1-2 Copyright © 2004, Oracle. All rights reserved.

WARNING!
Form Personalization allows for fundamental alterations in the behavior of forms. Please take the following precautions when implementing form personalizations. ‡ Only allow trusted users access to the feature. ‡ Thorough plan and test all form personalizations on a test system before moving your form personalizations to the product server.

1-3

Copyright © 2004, Oracle. All rights reserved.

1-4 Copyright © 2004. Oracle. displaying messages. . including changing properties. executing built-ins. All rights reserved. and adding menu entries.Overview Form Personalization allows declarative changes that alter the behavior of Oracle Forms-based screens.

All rights reserved. Oracle.Basic Concepts ‡ Rules ± Event ± Condition ± Scope ‡ Actions ± ± ± ± Set a property Execute a built-in Display a message Enable a special menu entry 1-5 Copyright © 2004. .

Oracle. 1-6 Copyright © 2004.Creating a Form Personalization ‡ ‡ ‡ Run the form for which you want to create a form personalization. Select Help > Diagnostics > Custom Code > Personalize from the menu. and any existing rules for that form will be queried. The form personalization screen will open. . All rights reserved.

Rules 1-7 Copyright © 2004. Oracle. All rights reserved. .

when it evaluates to TRUE. not a form. Each rule consists of the following fields: ‡ ‡ ‡ ‡ ‡ ‡ ‡ Function Name: the name of the function you ran. Personalizations are made for a function. 1-8 Copyright © 2004. such as a particular block or item Condition: an optional SQL fragment that.Rules About Rules Rules govern when form personalizations get applied. Seq: an ordering from 1 (first) to 100 (last) Description: optional entry that allows you to record why you are making the personalization Enabled: flag used to enable or disable a rule Trigger Event: the event within the form that causes invocation of the rule Trigger object: the context for the trigger event. . All rights reserved. Oracle. allows the rule to execute.

User or Industry ‡ Value: based on the level. All rights reserved. the rule is applied. Responsibility. if the user matches any context of the rule. ‡ Level: the level at which the rule should be applied.More Rules About Rules Each rule consists of the following fields (continued): ‡ Fire in Enter-Query Mode: checkbox that controls whether rules should be processed during enter-query mode processing (QBE) Context controls to whom form personalizations are applied. Site. At runtime. in which case it will validate against a list of values 1-9 Copyright © 2004. . Oracle. either Disabled or Enables and Required.

Oracle.Actions 1-10 Copyright © 2004. All rights reserved. .

Rules About Actions Actions govern what the form personalizations does when it is applied. this button will be enabled. It allows you to apply changes immediately to target form to test its effect. All rights reserved. the panel will change to show additional fields Description: optional entry that allows you to record why you are making the personalization Language: a list of installed languages and µALL¶ ± An action associated with a specific language will only be executed in the context of that language Enabled: flag used to enable or disable an action Apply Now (button): For several types. Message. Copyright © 2004. 1-11 . Built-in. Each action consists of the following fields: ‡ ‡ ‡ ‡ ‡ ‡ Seq: an ordering from 1 (first) to 100 (last) Type: Property. or Special ± Depending on the Type. Oracle.

All rights reserved. . Oracle.Actions: Property Used to set a property of an item 1-12 Copyright © 2004.

All rights reserved. Oracle. .Actions: Property Example This action: Changes this screen: To this: 1-13 Copyright © 2004.

Oracle. All rights reserved. .Actions: Message Used to display a pop-up message 1-14 Copyright © 2004.

Actions: Message Example This action: Causes this dialog to appear: 1-15 Copyright © 2004. Oracle. . All rights reserved.

1-16 Copyright © 2004. All rights reserved. . Oracle.Actions: Built-in Used to perform processing by calling Oracle Forms and Application Object Library (AOL) functions.

All rights reserved. . Oracle.Actions: Built-in Example This action: Opens the Responsibilities form (if the user has permission): 1-17 Copyright © 2004.

Actions: Special Used to activate up to 45 pre-seeded menu entries 1-18 Copyright © 2004. All rights reserved. . Oracle.

for all blocks of the form: 1-19 Copyright © 2004. Oracle.Actions: Special Example This action: Activates the Tools menu and creates the menu entry. . All rights reserved.

You can refer to: ± bind variables. DECODE().Evaluating Strings Every property that takes a string can work one of two ways. All rights reserved. like :block. .field ± SQL operators. TO_CHAR(). then it be used exactly as you typed it. ‡ If the string you type does not start with µ=¶. Oracle. ‡ If the string you type starts with µ=¶. then it will be evaluated at runtime. and NVL() ± Server-side functions that do not have OUT parameters 1-20 Copyright © 2004. such as ||.

Oracle. All rights reserved. .Evaluating Strings Example This action: Causes this dialog to appear (when run on 25AUG-04): 1-21 Copyright © 2004.

All rights reserved. Oracle. .Intermediate Concepts ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ Triggers Conditions Sequences Contexts String Evaluation Multi-Lingual Issues Common Actions Debugging 1-22 Copyright © 2004.

WHEN-NEW-BLOCK-INSTANCE: each time the cursor moves to a new block. Actions or Reports menu. WHEN-NEW-RECORD-INSTANCE: each time the cursor moves to a new record.Triggers All E-Business Suite forms send the following events: ‡ ‡ ‡ ‡ ‡ WHEN-NEW-FORM-INSTANCE: once. . SPECIAL1 through SPECIAL45: each time the user selects a menu entry from the Tools. All rights reserved. Trigger Object does not apply. Trigger Object must contain the blockname. Oracle. WHEN-NEW-ITEM-INSTANCE: each time the cursor moves to a new item. Trigger Object must contain the blockname of interest.itemname of interest. 1-23 Copyright © 2004. Trigger Object must contain the blockname of interest. when the form starts up.

More Triggers Many forms send the following event: ‡ WHEN-VALIDATE-RECORD: each time the current record has any change that needed to be validated. For example. All rights reserved. From the pulldown menu select Help > Diagnostics > Custom Code > Show Events Run the form of interest and a dialog will appear each time an event is sent Turn this mode off by selecting Help > Diagnostics > Custom Code > Normal Some forms send custom events: ‡ ‡ It¶s easy to learn what events a form sends: ‡ ‡ ‡ 1-24 Copyright © 2004. Oracle. . We seed the Trigger Event item with the standard events. Trigger Object must contain the blockname of interest. but you can type other events into the field too. a form may send a message like µREPRICE-ITEM¶ at a specific event within it¶s processing.

TO_CHAR(). .field ‡ SQL operators. such as ||. and NVL() ‡ Server-side functions that do not have OUT parameters Validate: this will process the Condition immediately and return either True. Oracle. like :block. then the Actions are skipped ‡ The Condition is re-evaluated each time the rule is processed The Condition expression can refer to: ‡ bind variables. or an Error ‡ Errors are in standard ORACLE error format. DECODE(). with an ORA error number 1-25 Copyright © 2004. then the Actions are performed ‡ If it evaluates to FALSE at runtime. All rights reserved.Conditions The Condition field lets you create an expression in SQL ‡ If it is empty or evaluates to TRUE at runtime. False.

will cause the trigger to be processed while in QBE mode. ‡ It is rare that you would want this. 1-26 Copyright © 2004.user_name is not null and :users. µDD-MM-RRRR¶) ± TRUE if today¶s date is equal to or greater than January 1. . 2005 Fire in Enter-Query mode: if checked. All rights reserved.description is null ± TRUE if the User Name field has a value and the Description field does not ‡ sysdate >= to_date(µ1-1-2005¶.More Conditions Examples: ‡ :users. Oracle.

you might first move the cursor to a particular block. for example: ‡ When using Built-ins. All rights reserved. .Sequences Both Rules and Actions have a Sequence that must be entered ‡ It is there in case you need things to be processed in a specific order ‡ The sequence does not have to be unique For an Action. if you are moving an item you might first have to make the canvas a different size 1-27 Copyright © 2004. then issue a query in that block ‡ With Properties. Oracle. the Sequence is very important in various situations.

. and Actions that change the same property. All rights reserved. the rule with the higher sequence number will be performed last. thus it will µwin¶ 1-28 Copyright © 2004.Contexts ‡ ‡ ‡ ‡ If a Rule has a context of µSite¶. Oracle. it will be applied for everyone A rule with a context of Responsibility does not µoverride¶ Site A rule with a context of User does not µoverride¶ Site or Responsibility If 2 rules have the same Trigger Event.

until there are no more Rules for that Event. 1-29 Copyright © 2004. we look for all enabled rules that match that Trigger Event and Trigger Object ‡ Starting with the Rule that has the lowest sequence. we process each enabled Action. in the order of the Action Sequence ‡ Then we look for the next-highest sequenced Rule and process it. All rights reserved.How It Works When an event occurs in the form. . ± if the Condition is empty or evaluates to TRUE. Oracle.

Oracle. {if passwd_length has a value of 8} User: SYSADMIN {if :user.passwd_length||' characters.' =µUser: µ||NVL(:user.user_name is null} {an ORACLE error because the syntax is incorrect. . It should be: =µThe field value is: µ|| :items.part_number 1-30 Copyright © 2004.part_number } =The field value is: :items. µNew¶) Result at Runtime Your password will expire on 31DEC-2004 {if sysdate is currently 24-DEC-2004} Your password must have at least 8 characters.user_name. All rights reserved.More Strings String Typed In ='Your password will expire on '||(sysdate+7) ='Your password must have at least '||:context.user_name is µSYSADMIN¶} User: New {if :user.

such as setting the Required property for a field. ± For these.Multi-Lingual Issues ‡ ‡ Some Actions are insensitive to language. and Special (Menu Label) ± For these. . TOOLTIP«). All rights reserved. create one Action per language ± Pick the appropriate language. not displayed values 1-31 Copyright © 2004. Messages (Message Text). and enter the proper text for that language ‡ Don¶t create Conditions that are language sensitive ± Refer to internal values of fields. set the Language to µAll¶ But many Actions have text. Oracle. such as Properties (PROMPT_TEXT. LABEL.

much of Forms Personalization involves SQL fragments. Oracle. So. which require that numbers always be in µenglish¶ format (1234.5 ± Creating a Condition based on the value of a numeric field: :block.field >= 2. .56). All rights reserved.56 However. enter all numeric values in english format Examples: ± Setting the WIDTH property: 2.5 1-32 Copyright © 2004. you may see numbers in fields as 1234.56 or 1234. regardless of what your current settings are.Number Issues ‡ ‡ ‡ ‡ Depending on your profiles.

All rights reserved. .Date Issues ‡ WRONG: sysdate >= to_date(µ1-JAN-05¶) ‡ µJAN¶ will not mean µJanuary¶ in all languages ‡ Always specify an exact mask when converting a string to a date ‡ Avoid Y2K issues ± enter years with all 4 digits ‡ RIGHT: sysdate >= to_date(µ1-1-2005¶. µDD-MMRRRR¶) 1-33 Copyright © 2004. Oracle.

as if the user typed it 1-34 Copyright © 2004. checkbox or radio button NEXT and PREVIOUS_NAVIGATION_ITEM: to control the behavior of Tab and Shift+Tab REQUIRED: if True. typically next to or above the item DISPLAYED: if False. in inches VALUE: copy a value into the item. . prevents the user from changing the value on a queried row LABEL: the label of a button. in inches WIDTH: the width. the user must enter a value TOOLTIP_TEXT: the bubble tip on the item X and Y_POS: the location on the canvas. Oracle. the item is hidden INITIAL_VALUE: the value to default on a new record.Common Actions of Type: Property For Items (fields): ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ PROMPT_TEXT: the prompt of the item. This can only be set in the WHEN-NEW-RECORD-INSTANCE event UPDATE_ALLOWED: if False. All rights reserved.

in inches For Canvasses: For Windows: ‡ ‡ 1-35 Copyright © 2004.More Common Actions of Type: Property For Tab Pages: ‡ ‡ ‡ DISPLAYED: If False. . Note that keyboard navigation may need to be changed to prevent access to items on the page LABEL: the title of the tab TOPMOST_TAB_PAGE: Determines the currently selected Tab Page TITLE: the title of the window X and Y_POS: the location within the MDI window. the tab page is hidden. All rights reserved. Oracle.

prevents the user from creating new records ‡UPDATE_ALLOWED: if False.Even More Common Actions: Property For Blocks: ‡DEFAULT_WHERE: the WHERE clause of the SQL statement controlling queried records ‡ORDER_BY: the ORDER_BY clause of the SQL statement of the queried records ‡INSERT_ALLOWED: if False. All rights reserved. prevents the user from deleting queried records 1-36 Copyright © 2004. Oracle. . prevents the user from updating any item in a queried record ‡DELETE_ALLOWED: if False.

Common Actions of Type: Built-in ‡ ‡ GO_ITEM and GO_BLOCK: move the cursor to a specific item or the first item in a block DO_KEY: acts like a macro. All rights reserved. .EXECUTE: open a function.yahoo. applying security rules.OPEN_URL: launch a URL. Can be as simple as µwww. Parameters can be passed if the target accepts them. simulating user actions. ± Common Arguments: ENTER_QUERY: invoke QBE mode EXECUTE_QUERY: execute the query NEXT and PREVIOUS_BLOCK: move to another block NEXT and PREVIOUS_ITEM: move to another item ‡ ‡ FND_UTILITIES. Oracle. 1-37 Copyright © 2004.com¶. or as complex as a Discoverer page FND_FUNCTION.

All rights reserved. Oracle. Hint: displays text on the message line Error: displays a message of type Error. with an OK button. ‡ 1-38 Copyright © 2004. Debug: displays a message of type Note. with an OK button. . with an OK button. ± If the user selects Cancel. Processing is aborted afterwards. with OK and Cancel buttons. Warn: displays a message of type Question. ± Only displays when µDisplay Debug messages¶ is checked.Common Actions of Type: Message ‡ ‡ ‡ ‡ Show: displays a message of type Note. processing is aborted.

Oracle. All rights reserved.Debugging Considerations ‡ ‡ ‡ ‡ ‡ ‡ ‡ Limitations of Form Personalization Interfering with Normal Operations Debugging: Why Isn¶t It Running? Debugging: Is It Really Running? Debugging: Why Isn¶t It Sticking? Debugging: How Do I Stop It From Running? Relationship to CUSTOM Library 1-39 Copyright © 2004. .

WHEN-NEW-ITEM-INSTANCE ‡ WHEN-VALIDATE-RECORD (not in all forms) ‡ Product-specific events 1-40 Copyright © 2004. . WHEN-NEWBLOCK-INSTANCE. boilerplate You can only respond to certain Trigger Events: ‡ WHEN-NEW-FORM-INSTANCE. graphics.Limitations of Form Personalization You can only change what Forms allows at runtime: ‡ Cannot create new items ‡ Cannot move items between canvases ‡ Cannot display an item which is not on a canvas ‡ Cannot set certain properties ‡ Cannot change frames. WHEN-NEW-RECORDINSTANCE. Oracle. All rights reserved.

‡ Special menu entries can only be created at form startup (WHEN-NEW-FORM-INSTANCE). or can not be validated. you must perform the action in the WHEN-NEW-RECORDINSTANCE event of the block that contains the item. Certain objects may not be available to you to change. any change you make might interfere with the normal operation of the form. Oracle. . 1-41 Copyright © 2004.Additional Limitations Certain personalizations must be performed at specific events: ‡ To specify an initial value for an item. Most importantly. All rights reserved.

such as block. Your personalization may simply produce the wrong result due to interactions with the base code in unexpected or untested ways. Making it difficult to remove the offending personalization.or item-level. In extreme cases. All rights reserved.Interfering with Normal Operations ‡ You may make a personalization. Oracle. At best. ‡ ‡ 1-42 . At worst. You may be able to perform the personalization by moving the trigger event to a lower level. but it doesn¶t take effect because there is code in the form that overrides it. it could affect some later processing. Copyright © 2004. it may prevent your form from running at all. this produces an error.

. ‡ You have set Custom Code to µOff¶ or µCore code only¶ in the pulldown menu. Oracle. is different than what you are currently running. ‡ An action is executing the Built-in 'RAISE FORM_TRIGGER_FAILURE' . if not µAll¶. All rights reserved. ‡ The Trigger Event and/or Trigger Object were not what you expected. ‡ The Condition has evaluated to FALSE. ‡ Rules are created for a Function. You might be running the same form. That will abort all further processing for that event. ‡ The Language of the Action. but as a different function. ‡ The scope of the rule only consists of Responsibility.Why Isn¶t It Running? A rule or action may not run for a variety of reasons: ‡ The Rule or Action is not enabled. and none is true for the current context. 1-43 Copyright © 2004. Industry and/or User.

Save your changes.Is It Really Running? It may not be obvious that your change was applied in some cases. All rights reserved. Re-run the form. 1-44 Copyright © 2004. Add some useful text. To resolve that: ‡ ‡ ‡ ‡ ‡ Create a Message of Type µDebug¶ after the Action of interest. Check the µDisplay Debug messages¶ checkbox. . Oracle. You should see your message pop up when the proper event occurs.

and they may yield a misleading UI (for example. it cannot be turned on at item-instance level 1-45 Copyright © 2004. Oracle. ± Properties that affect all records of a block: set at WHEN-NEW-BLOCK-INSTANCE or WHEN-NEWRECORD-INSTANCE ± Properties that affect a specific item in a block: set at WHEN-NEW-ITEM-INSTANCE ± The downside of the µlower¶ events is that they fire more frequently. a field may look to be updateable until you navigate into it) ‡ Be aware of µitem¶ vs. but by the time control returns to the user the property you set has been overridden.Why Isn¶t It Sticking? Often an Action may execute. . All rights reserved. What can you do? ‡ Try performing the action at a µlower¶ event. µitem-instance¶ properties ± µitem¶ level affects all instances of that item ± µitem-instance¶ affects only the current row of that item ± If a property is µoff¶ at item level.

Oracle. to the point that it will not even run! Here¶s how to recover: ‡ On the pulldown menu. All rights reserved.How Do I Stop It From Running? It is possible that a change you make completely breaks a form. choose Help > Diagnostics > Custom Code > Normal to reenable processing of Personalizations 1-46 Copyright © 2004. . because your changes were skipped Invoke the Personalization screen and correct the problem On the pulldown menu. choose Help > Diagnostics > Custom Code > Off ± This will disable all callouts to Forms Personalization ‡ ‡ ‡ Run the form of interest ± It should run now.

All rights reserved. 1-47 Copyright © 2004. . Form Personalizations is adequate and is significantly simpler.Relationship to CUSTOM Library ‡ ‡ CUSTOM is a stub library Oracle ships that receives Trigger Events. Customers are free to add any code they like to it. Oracle. then the event is sent to CUSTOM ‡ ‡ CUSTOM can do more because it has complete access to all PL/SQL and SQL But for most changes. CUSTOM and Form Personalizations drive off the same Trigger Events ± Form Personalizations are processed first.

All rights reserved.Advanced Concepts ‡ ‡ ‡ ‡ Global variables Query-by-Example (QBE) mode Special menu entries ³Zooming´ 1-48 Copyright © 2004. Oracle. .

Global Variables Overview ‡ ‡ ‡ ‡ GLOBAL variables are dynamically created at runtime They can hold up to 255 bytes They are visible across all forms that are currently running They are very useful for Form Personalizations! ± Allow you to establish a value once then reuse it ± Allow you to pass information between forms 1-49 Copyright © 2004. All rights reserved. . Oracle.

Global Variable Properties
Two (2) Properties affect them: ‡ VALUE:
± Creates it if it does not exist. ± Always sets the value.

‡

INITIAL VALUE:
± Creates it if it does not exist, setting it to null. ± Only sets the value if it is currently null.

1-50

Copyright © 2004, Oracle. All rights reserved.

Global Variables
‡ ‡ Name any you create starting with µXX¶.
± Prevent collisions with global variables that base product code creates.

In Conditions and evaluated strings, refer to them with :global.<name>
± Example: ='Your password must have at least '||:global.xx_password_length||' characters.' ± References will produce an error if the variable does not exist yet.

‡

Make sure they exist by first setting the INITIAL VALUE property in a prior action or rule. Remember, they are shared across all forms.

1-51

Copyright © 2004, Oracle. All rights reserved.

More Global Variables

‡ ‡ ‡

Creates the global variable :global.xx_password_failures if it did not already exist Sets its value to :global.xx_password_failures Because the example is self_referencing, a prior Action needs to have created it!

1-52

Copyright © 2004, Oracle. All rights reserved.

or are suspended. any actions after invoking the mode will not be executed until the mode is exited 1-53 Copyright © 2004. Oracle.Query-by-Example (QBE) Mode QBE is a power-user mechanism to locate records. . until you exit this mode by Running a query or selecting Cancel ‡ Specifically. for the current block It is a µmode¶ ‡ Things operate differently. All rights reserved. instead of Find Windows Normally invoked by selecting View > Query By Example > Enter from the pulldown menu The built-in DO_KEY with argument ENTER_QUERY will invoke this mode.

.More QBE Mode Trigger Events can fire in QBE mode. 1-54 Copyright © 2004. or not ‡ Set µFire in Enter-Query Mode¶ as desired ‡ This will cause the Rule to execute in both QBE and µnormal¶ mode ‡ It is very. All rights reserved. very rare that you would want your rules to fire in this mode! ‡ Later we¶ll discuss one example where this could be used. Oracle. very.

Special Menu Entries Embedded in every menu are 45 entries you can activate Each has the name SPECIAL# ‡ SPECIAL1 though 15: under µTools¶ ‡ SPECIAL16 though 30: under µReports¶ ‡ SPECIAL31 though 45: under µActions¶ Must be activated in a Rule based on the WHENNEW-FORM-INSTANCE event 1-55 Copyright © 2004. . All rights reserved. Oracle.

Oracle.More Special Menu Entries ‡ ‡ ‡ ‡ ‡ Menu Entry: which entry you want to activate Menu Label: the text for the menu entry Render Line before menu: will draw a separator line above the menu entry Enabled In Block(s): the blocks for which the menu entry should be enabled. . ± Leave blank to enable for all blocks. All rights reserved. Icon Name: the name of an optional . which will render in the toolbar 1-56 Copyright © 2004.ico file.

Select an entry they do not use ± The Menu Entry list shows the current label if there is one. it emits an event name that matches the menu entry name ± For example. if you activate SPECIAL1. All rights reserved. when the user selects it the event µSPECIAL1¶ will be sent ‡ You create a second rule that triggers off that event and does what you want WARNING ‡ Base product code uses these menu entries too. . Oracle.Special Menu Entry Considerations But µSpecial¶ simply activates the menu entry ‡ At runtime. if the user selects it. no label is an indication it is currently unused 1-57 Copyright © 2004.

All rights reserved. passing context from the current function ± For example. Oracle. and pass the vendor on the current PO to query its details Special+Globals+QBE lets you define these yourself! 1-58 Copyright © 2004. from the Purchase Orders form.Zooming One of the most commonly requested enhancements: ‡ The ability to open a function. open the Vendors form. .

Oracle.Administration Concepts ‡ ‡ ‡ ‡ Securing Performance Loading Personalizations Support Issues 1-59 Copyright © 2004. All rights reserved. .

these features can be used to change or view any data! 1-60 Copyright © 2004. . All rights reserved. Oracle.Securing Access to Form Personalization Personalizations are created by invoking Help > Diagnostics > Custom Code > Personalize on the pulldown menu ‡ Profile µHide Diagnostics menu entry¶ ± µNo¶: makes the Diagnostics menu entry visible ± µYes¶: hides the menu entry completely ‡ ‡ Profile µUtilities:Diagnostics¶ ± µYes¶: allows direct access of the feature ± µNo¶: requires entry of the Apps password first These same profiles control access to features like µExamine¶. µItem Properties¶ and µTrace¶ ± Like Form Personalizations.

Oracle. All rights reserved. .How Form Personalizations Perform When an event occurs in the form. we process each enabled Action. until there are no more Rules for that Event. in the order of the Action Sequence ‡ Then we look for the next-highest sequenced Rule and process it. Then the event is passed to the CUSTOM library ‡ 1-61 Copyright © 2004. ± if the Condition is empty or evaluates to TRUE. we look for all Rules that match that Trigger Event and Trigger Object ‡ Starting with the Rule that has the lowest sequence.

Strings can also include arbitrary SQL statements of the form: ± SELECT <something> A FROM <remainder of SQL> ‡ ‡ The FORMS_DDL built-in can contain arbitrary PL/SQL blocks You will see all of these in Trace files 1-62 Copyright © 2004.Debugging Personalization Performance Conditions. Oracle. and some Values. are evaluated in the database ‡ Conditions create a SQL statement like: ± select 'x' from dual where <condition>. ‡ ‡ String evaluations that start with µ=µ create a SQL statement like: ± select <string> the_text from dual. . All rights reserved.

Loading Personalizations Download (extracting from a test system): FNDLOAD <userid>/<password> 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus. All rights reserved. Oracle. all rules for that function in the target db are first deleted 1-63 Copyright © 2004.lct <filename. ‡ Rules can only be extracted one function at a time Upload (inserting into a production system): FNDLOAD <userid>/<password> 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.ldt> ‡ Before uploading. if it is not supplied then no personalizations are downloaded. .ldt> FND_FORM_CUSTOM_RULES function_name=<function name> ‡ Function_name is a required parameter.lct <filename.

. you should always confirm that your personalizations are not the source of the problem. ‡ Check that a problem still reproduces after choosing Help > Diagnostics > Custom Code > Off 1-64 Copyright © 2004. ‡ That product team code will not override or interfere with a change. ‡ That a personalization will work after an upgrade. We do not support: ‡ That all desired changes can be made. Oracle. All rights reserved. Before contacting Oracle Support. Oracle Support and Development cannot provide assistance on how you can make personalizations to a particular form using this mechanism.Support Issues Oracle supports that the feature will invoke the indicated action at the indicated event.

All rights reserved. you should have learned how to: ‡ Understand the basic concepts of Form Personalization. 1-65 Copyright © 2004. ‡ Implement a variety of common Form Personalizations. Oracle. ‡ Understand Form Personalization administration. ‡ Understand the advanced concepts of Form Personalization.Summary In this lesson. . ‡ Understand the intermediate concepts of Form Personalization.