form personalization_26oct.pdf

40
ORACLE WHITE PAPER Form Personalization 1 FORM PERSONALIZATION IMPLEMENTATION White Paper Product: Forms Minimum Version: R12 An Oracle White Paper Abstract [The Form Personalization provides flexibility to the users to customize Oracle applications .It provides easier and faster mechanism to achieve the business needs and requires minimum technical knowledge. This white paper demonstrates the ways form personalization can be used to implement the customer’s business needs using custom library without modifying the forms code.] Document History Author: Kalyani Pasupulaty Create Date: 23-Jun-2009 Last Update Date 15-Sep-2012 Expiration Date: [Not Applicable] Other Information: [Not Applicable]

Upload: zelghorf

Post on 19-Jan-2016

83 views

Category:

Documents


14 download

TRANSCRIPT

ORACLE WHITE PAPER Form Personalization

1

FORM PERSONALIZATION IMPLEMENTATION

White Paper

Product: Forms Minimum Version: R12

An Oracle White Paper

Abstract

[The Form Personalization provides flexibility to the users to customize Oracle applications .It provides easier and faster mechanism to achieve the business needs and requires minimum technical knowledge. This white paper demonstrates the ways form personalization can be used to implement the customer’s business needs using custom library without modifying the forms code.]

Document History

Author: Kalyani PasupulatyCreate Date: 23-Jun-2009Last Update Date 15-Sep-2012Expiration Date: [Not Applicable]Other Information: [Not Applicable]

ORACLE WHITE PAPER Form Personalization

2

Table of Contents

∑ Introduction∑ Form Personalization Vs Custom.pll∑ Profiles used in Form personalization∑ Sections of Form Personalization∑ Limitations∑ Best Practices

1. Trigger Event2. Triggers3. Global/Local Variables4. Messages5. LOV (Record Groups)6. Builtin Type (Execute a Procedure)7. Property Type8. Evaluation of Strings9. Defaulting a parameter in Concurrent program

∑ ZOOM∑ Upgrade Considerations∑ Securing Access to Form Personalization∑ Deployment∑ Troubleshooting∑ Tables∑ Forms Personalization Maintenance∑ Relationship to Folders∑ Examples of typical Customizations

1. Masking Data2. Changing LOV’s3. Recursion Example

∑ Other Process Improvement Features∑ FAQ∑ References

ORACLE WHITE PAPER Form Personalization

3

Introduction

Form Personalization is a standard feature provided and supported by Oracle to customize the forms and gives user the ability to customize Forms in a very easy manner. It allows to Pass data from one form to another through global variables, we can change LOV values dynamically, Enable/Disable/Hide fields dynamically Execute PL/SQL programs through FORM_DDL package and allows displaying informative/error messages to the user. This document can be used as a Trouble Shooter guide while emphasizing more on the Best Practices.

Form Personalization Vs Custom.pll

Keep in mind that Forms Personalization code fires prior to CUSTOM.pll code [in case you have the same form extended in both the places].

Form Personalization Custom.pllPersonalization are stored in tables Personalization are stored in filesNot much impact when you upgrade or apply patches

There is an impact when you upgrade or apply patches

Can be restricted at site/responsibility/user level

The personalization effects at site level

Easy to disable/enable with click of a button.

Not user friendly to enable/disable personalization.

Profiles Used in Form Personalization

The following profiles are used in Form Personalization.

1· Utilities: Diagnostics = Yes/No This profile option controls whether users can use the examine utility.

2· Hide Diagnostics Menu entry = Yes/No This profile option controls the availability of Diagnostics utility.

3. FND: Enable Industry Editing =Yes/NoThis profile option is used to enable Key field in the form personalization window.

ORACLE WHITE PAPER Form Personalization

4

Sections of Form Personalization

To create personalizations for a particular function, first invoke that function from the Navigation menu. While in the form, choose Help->Diagnostics->Custom Code-> Personalize from the pull down menu. This menu entry is secured by the FND_HIDE_DIAGNOSTICS (Hide Diagnostics menu entry) and DIAGNOSTICS (Utilities: Diagnostics) profiles, as are most other entries on the Diagnostics menu.

Form Personalization has the following four sections:

· Rules · Conditions · Context · Actions

Rules and Conditions

Function Name: Personalization is made for a function/form. But based on the requirement sometimes personalizations are also made on form.Example: The form personalization on sales order form should be done at form level, so that the same form personalization gets reflected in Quick Sales order form also.

Seq: An ordering from 1 (first) to 100 (last)

Key (Rule_Key): Enabled/Disabled based on the profile option ‘FND: Enable Industry Editing’. Used for industry translations. Value is a combination of the industry id and language.Description: To record usage of that personalization

Enabled: used to temporarily disable a rule

Trigger Event: The event within the form that causes invocation of the rule The following are standard Trigger Events.

WHEN-VALIDATE-RECORD– Populate hidden fields– Additional validations

• SPECIALn– Populate tools menu (SPECIAL 1-15)– Populate reports menu (SPECIAL 16-30)– Populate actions menu (SPECIAL 31-45)

ORACLE WHITE PAPER Form Personalization

5

• MENUn– Populate tools menu (MENU1-15)

Trigger Object: The context for the trigger event, such as a particular block/item.For example, if Trigger Event WHEN-NEW-ITEM-INSTANCE is selected, then you must enter a specific block.field for that trigger to be processed.

Item Condition: An optional SQL fragment, when it evaluates to TRUE, allows the rule to execute. It specifies the conditions when the action should be executed. The entire fragment must be syntactically correct, and can be tested with the 'Validate' button, which will evaluate it in the current context of the target form.You can get the syntax to read the item value property using “Insert Get Expression “ button. It automatically constructs the expression.

Example: ${objectType.objectName.Property}It is strongly recommended using the window to build it to reduce mistakes.

Processing Mode: Specify whether the Rule(s) should be applied while not in Enter-Query mode (the default), only in Enter-Query mode, or in Both modes

There are 3 kinds of processing modes.Not in Enter-Query ModeOnly in Enter-Query ModeBoth

ContextContext controls where the personalization applies to:

Level: Site, Responsibility, Industry, or User

Value: The specific value when level is Responsibility, Industry, or User

At runtime, if the user’s context matches any context of a rule, that rule is executed.

ORACLE WHITE PAPER Form Personalization

6

Actions

Actions determine what personalization does.

Each Action consists of one of the following:∑ Setting a Property, such as making a field Required or hiding a Tab page∑ Executing a Builtin, such as GO_BLOCK, DO_KEY or

FND_FUNCTION.EXECUTEDisplaying a Message

∑ Enabling a menu entry

Seq: An ordering from 1 (first) to 100 (last)

Type: There are 4 different Action Types 1. Property: Allows selecting a specific object, a property of that object, and specify a new value for that property

ORACLE WHITE PAPER Form Personalization

7

2.Message: Displays a message in one of several styles

∑ 3.Builtin: Allows execution of a standard Forms Builtin, such as

∑ GO_ITEM∑ DO_KEY∑ GO_BLOCK∑ RAISE FORM_TRIGGER_FAILURE

ORACLE WHITE PAPER Form Personalization

8

∑ FORMS_DDL

4. Menu: Enables a special menu entry, defining its label, icon name and which blocks it applies to

Depending on the Type selected, the panel will change to show additional fields

ORACLE WHITE PAPER Form Personalization

9

Description: To record usage of that action 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: used to temporarily disable actions.

PropertyFor a Type of ‘Property’, the following fields are available

Object Type: The type of objects available is Item, Window, Block, Tab page, Canvas, Radio Button, View, Global Variable, and Parameter.

Target Object: It Should be Block. Field Name. It is based on the Object Type, in case of GLOBAL and PARAMETER, the Target Object name must not include GLOBAL. For example, to refer to GLOBAL.XXXX, only enter XXXX.

Property Name: Based on the Object Type, the properties that can be personalized. The Object Type of Item supports a vast array of properties described as follows.

Item-level properties: Used to set the property for all instances of that object.

Item-instance properties: Used to set the property for the current record of that block using set_item_instance_property ().

Applications cover properties: They are hybrid of multiple item and item-instance level properties. These are fully documented in the Oracle Applications Development Guide.

Value: The new value, the appearance and validation of this field changes based on whether the property accepts Boolean values (True/False), numbers, a restricted set of values, or a string.

Message

For a Type of 'Message':

Message Type: The message types are 'Show', 'Hint', ‘Warn’, 'Error', or ‘Debug’.

Error/Warn: If the user selects the ‘Cancel’ button, then this message types will raise a form_trigger_failure after executing, and stop all further processing.

Debug: will only be displayed if the ‘Show Debug Messages’ checkbox is checked.

Show/Hint: Display just an informative message to the user.

Message Text: Text to be displayed in the screen

ORACLE WHITE PAPER Form Personalization

10

Builtin

For a Type of 'Builtin':

Builtin Type: The name of the builtin, such as GO_ITEM, DO_KEY, GO_BLOCK, RAISE FORM_TRIGGER_FAILURE, FORMS_DDL, FND_UTILITIES.OPEN_URL or FND_FUNCTION.EXECUTE.

Argument: The argument for the currently selected builtin, if applicable. Depending on the specific builtin, other argument fields may appear.

Menu

For a Type of 'Menu':

Menu Entry: One of 45 menu entries can be activated. The menus are arranged in 3 sets of 15 each under the Tools, Reports and Actions pull down menus. On selecting a menu that the base form is already using, the functionality will override the form's functionality.

Menu Label: The textual label that is needed for the menu entry.

Limitations

∑ Use of the Apply Now button does not always work if dependent on the results of another action.

∑ The argument (sql) length for creating a record group must be within 2000 Characters.

∑ Populating LOV dynamically from a Record Group must be against the WHEN-NEW-ITEM-INSTANCE of that LOV item.

∑ The use of the action “RAISE FORM_TRIGGER_FAILURE” may not work properly in some triggers.

∑ Use of Builtin Action "Raise Form_Trigger_Failure" and pressing the button "Apply Now" will show the message "One or more required fields are missing values".

∑ Even though FND Load Command is available to move the form personalization from one instance to another instance, but care should be taken that it will not override the existing form personalization setups in target instance.

ORACLE WHITE PAPER Form Personalization

11

Best Practices

The following are the best practices to be followed when working with form personalization.

1.Trigger Event:

It is not necessary that you should use only the events provided in the form personalization. You can override the available events.

Example: If there is a need to throw a message whenever an update occurs in a particular block of form.

Enable the custom events as follows

Navigate to Help->Diagnostics->Custom Code->Show custom events.Check if pre-update custom event is fired when you are saving the transaction By enabling help->diagnostics->custom code->show custom events.If the pre-update event is fired, then the trigger event can be override with pre-update event and necessary action can be performed.

ORACLE WHITE PAPER Form Personalization

12

2. Triggers:

It is always advisable to provide the form personalization on MENU triggers rather than SPECIAL triggers.SPECIAL triggers are used by Oracle development, so form personalization should be provided to customer using MENU triggers as they are guaranteed that they will not to be used by Oracle and are exclusively for customer use.

3. Global/Local Variables:

∑ Make use of global/Local variables, which can be used to store and later use the value.

∑ Ensure that while defining global/local variables, an initial value is set at WHEN-NEW-FORM-INSTANCE Trigger level to avoid any variable not defined or syntax error problems.

∑ If a variable scope is limited to single form which is being personalized, then do not unnecessarily create a GLOBAL Variable

∑ Make sure you clear off the GLOBAL Variables after their usage is finished. This will ensure that screen works under normal scenarios too.

ORACLE WHITE PAPER Form Personalization

13

∑ Global Variable are very tricky to work with as they are often used to pass item values to another form. You can use SQL statements to generate the value of the Global Variance but again your SQL statement needs to be precise. So use the "Validate all" from the menu bar to help you validate your statement. The initial value of NULL of the Global Variable is set at the destination form and the trigger object needs to match the menu item used to trigger the Global Variable, so use caution when using Global Variance. Using many Global Variances within the same Rules is not a good idea, it is best to use different Rule sequences.

4. Messages:

Use fnd_message.set_name and fnd_message.get methods to display user messages.

5. LOV (Record Groups):

As there is a limitation of 2000 characters of sql length for creating a record .You can create a view and use that view in creating the record group.

6.Builtin Type (Execute a Procedure):

When a Builtin Type Execute Procedure is used, Ensure sure that all the parameters passed to the procedure takes some value otherwise it throws syntax error messages when the particular trigger is raised.

7. Property Type:

In order to make a displayed item on the form mandatory, First enable the item using Object type-Item and set the property to ‘ENABLED’ and then make it mandatory by setting property to ‘REQUIRED’. Directly you cannot make a displayed item a mandatory item.

8: Evaluation of Strings

∑ If a string has space in between then the form personalization throws error as follows

ORACLE WHITE PAPER Form Personalization

14

Example: If a string is “name=‘ADB CORP’ “ and you want to pass this string as a parameter then you should enclose the string with one single quote followed by double quotes and then a sing single quote.Example: =‘”’||name||’”’

∑ A string should be preceded with ‘=’ to evaluate the text immediately after that character.

∑ To use ‘SELECT statements the text must start with ‘=SELECT’. The columns returned by the select statement should evaluate to character otherwise the form personalization throws error as follows.

∑ The SELECT statement should return only one row, incase more than one row is selected the value of the first row is considered.

ORACLE WHITE PAPER Form Personalization

15

Using to_char in select statement will resolve the problem.

ORACLE WHITE PAPER Form Personalization

16

9. Defaulting a parameter in Concurrent program

The following steps and screenshots show how to default the parameters in concurrent programs using forms personalization. You can call the concurrent program in SRS window through a menu click and default one parameter from the base form.

1. Define the menu to call the concurrent program through SRS window

ORACLE WHITE PAPER Form Personalization

17

3. Define sequence for action on click of the menu

4. Define an action sequence of type property to capture the required field data in global variable.

ORACLE WHITE PAPER Form Personalization

18

5. Define sequence of type Builtin to launch SRS window with the desired concurrent program.

ORACLE WHITE PAPER Form Personalization

19

2. Define form personalization on FNDRSRUN form as follows Go to condition tab Trigger Event--WHEN-NEW-ITEM-INSTANCE Trigger Object--WORK_ORDER.PARAMETERS

3. Go to Action tab Action Type: Property Object Type: Item Target Object: WORK_ORDER.ATTRIBUTE1 Here the target object depends on which parameter value you want to default.Example: For first parameter we can use ATTRIBUTE1, for second parameter ATTRIBUTE2 and so on, but it’s always advisable to check which parameter goes into which attribute.Property Name: VALUE Value: ${global.g_test.value}

ORACLE WHITE PAPER Form Personalization

20

ZOOM: How to implement ZOOM Functionality using personalization?

A common scenario is to open another function and have that form query a specific row of data associated with the source form. For example, consider the Users form which allows entry of Responsibilities for each user. A possible zoom would be to carry the current responsibility key to the Responsibilities form and have it query that record automatically. Some strategies to accomplish this type of functionality are:

∑ The target function may already accept the value as an input parameter. Simply passing the parameter name and value as the argument to the Function may accomplish the desired result.

∑ In forms that have Find windows, it may be possible to populate the appropriate field in the Find window, then issue DO_KEY('NEXT_BLOCK') which should simulate pressing the Find Window. Pass the value(s) between forms by using global variables.

∑ You could modify the DEFAULT_WHERE clause of the appropriate block, then query it using DO_KEY('EXECUTE_QUERY'), then reset the DEFAULT_WHERE clause back to its original value. Pass the value(s) between forms by using global variables.

∑ Put the form into enter-query mode using DO_KEY('ENTER_QUERY'), populate the desired fields, then issue DO_KEY('EXECUTE_QUERY'). Pass the value(s) between forms by using global variables. This is a complex technique though because invoking enter-query mode will suspend processing of that rule;

ORACLE WHITE PAPER Form Personalization

21

populating the fields and issuing the DO_KEY('EXECUTE_QUERY') would need to be done in the WHEN-NEW-RECORD-INSTANCE event that fires as a result of entering query-mode.

With any technique that uses global variables, be aware that they may not exist yet. You should always initialize them before referring to them by setting the Initial Value to null, which will create the variable if it does not yet exist, otherwise it will leave it unchanged.

You should also code Conditions to account for situations where the value you want to pass between forms has not yet been entered, for example when the cursor is sitting on a brand new row

Upgrade Considerations

A form may change after an upgrade or patch to Oracle Applications. You should test any personalization logic that you have defined to confirm that it still operates as intended before using it in a production environment.

It is common for object names within a form to change after a applying a patch. To assist you with this, there is a function which will confirm the existence of objects that your personalization’s reference. You should perform the following for each form that is changed during a patch and has personalization’s:

∑ Run that form. If the form fails to run due to personalization’s that are now in error, first turn Custom Code to ‘Off‘ then re-run the form.

∑ Invoke the Personalization screen from that form ∑ In the Tools pull down menu, select ‘Validate All’. This will process every rule

for that function, checking for the validity of references to objects in the form. Only rules that are enabled are processed.

∑ For each Rule or Action identified as having an error, you can then quickly locate that row and make corrections.

Note that this function only checks for object existence; it still may be the case that certain personalization’s that previously worked no longer do. Note that pressing the ‘Validate All’ button will first create any GLOBAL variables referred to in Property settings of either Value or Initial Value; this will reduce missing bind variable references to them if the code that creates them has not yet run.

Securing Access to Form Personalization

ORACLE WHITE PAPER Form Personalization

22

While using Form Personalization, it is recommended to take some precautions when implementing it.

Use the system profiles: 'Hide Diagnostics menu entry' and 'Utilities: Diagnostics' to control the visibility of the menu and the direct access to the feature (user requires Apps password or not?);

Deployment

Form Personalization can be moved easily through FNDLOAD from one instance to other.FNDLOAD apps/apps 0 Y DOWNLOAD FND_TOP/patch/115/import/affrmcus.lct file_name.ldt FND_FORM_CUSTOM_RULES function_name=FUNCTION_NAME

Troubleshooting

1. If any personalization results in preventing a form from opening or running then disable all personalization by invoking the pull down menu and selecting Help->Diagnostics->Custom Code-> Off. This menu entry is secured by the FND_HIDE_DIAGNOSTICS and DIAGNOSTICS profiles. This will allow you to open the form and invoke the Personalization screen so you can correct the problem.

2. Check the errors in form personalization by navigating to Tools pull down menu and then select ‘Validate All’. This will process every rule for that function,checking for the validity of references to objects in the form.

3. If a missing bind variable or any syntax problem occurs then check if the global variable is initialized properly by clicking on apply button/validate all in the corresponding global variable setup.

Tables

The following are the tables used in forms personalization.

∑ FND_FORM_CUSTOM_RULES (The Rules for the form customizations)

A rule must have 1 or more FND_FORM_CUSTOM_SCOPES and a rule may have 1 or more FND_FORM_CUSTOM_ACTIONS.

ORACLE WHITE PAPER Form Personalization

23

∑ FND_FORM_CUSTOM_SCOPES (The Scopes for which the FND_FORM_CUSTOM_RULES apply) RULE_ID link

∑ FND_FORM_CUSTOM_ACTIONS (Holds the Actions for a specified Rule - used by FNDCUSTM.fmb and APPCORE to apply customizations) RULE_ID

∑ FND_FORM_CUSTOM_PARAMS (Parameters to Pass to a CP when executed using Form Customizations) FK to the FND_FORM_CUSTOM_ACTIONS table

RULE_ID RULE_ID

ACTION_ID

Forms Personalization Maintenance

∑ After upgrades, go to the personalization for each form and choose Tools –Validate All

∑ Tools ->Administration will show personalized forms

FND_FORM_CUSTOM_RULES

FND_FORM_CUSTOM_SCOPES FND_FORM_CUSTOM_ACTIONS

FND_FORM_CUSTOM_PARAMS

ORACLE WHITE PAPER Form Personalization

24

∑ – Press the Find button with the Form Name blank

ORACLE WHITE PAPER Form Personalization

25

Relationship to Folders

Folders allow an end-user to 'customize' a screen by changing the fields and records displayed. For the most part, folder blocks are identifiable by an enabled ‘Folder’ menu entry, and an ‘Open Folder’ icon above the block. In a few cases, folder technology may be used by base code to dynamically alter a block, but no folder functionality is exposed to the end user.

Folder blocks are constructed differently than ‘regular’ Forms blocks – they include an extra block that renders the prompts for the fields, and many properties of the block are dynamically managed by the folder code as it receives events. As a result, when using the Form Personalization feature on a folder block, you must be aware of certain restrictions:

The following properties of a folder block can only be set at form startup (WHEN-NEW-FORM-INSTANCE). More specifically, they must be set before any folder code attempts to read the values otherwise unexpected results may occur.

∑ PROMPT_TEXT∑ DISPLAYED∑ WIDTH∑ DEFAULT_WHERE∑ ORDER_BY∑ X_POSITION and Y_POSITION, in a single-row folder block.

The following properties also have special considerations:

∑ ENABLED: within a folder block, it is invalid to set this property to FALSE. The cursor must be able to navigate to every item in a folder block. Consider setting ALTERABLE to FALSE instead.

∑ NEXT_ NAVIGATION_ITEM and PREVIOUS_NAVIGATION_ITEM: These properties have no effect in a Folder block. In a single-row folder block, the navigation sequence is computed based on X_POSITION and Y_POSITION. The navigation sequence of a multi-row folder block cannot be changed.

ORACLE WHITE PAPER Form Personalization

26

Changing LOV’s

The following example shows how to modify the LOV query for Tax Classification codeon Receivable-Transactions screen.

1.Remove Tax Type from List of Values

ORACLE WHITE PAPER Form Personalization

27

ORACLE WHITE PAPER Form Personalization

28

Examples of Typical Customizations

Masking Data

The following example shows how to mask data. The screenshots shows how the comments section in Receivable Transaction form is concealed.

ORACLE WHITE PAPER Form Personalization

29

Change form appearance at WHEN-NEW-FORM-INSTANCE Trigger.

∑ CONCEAL_DATA = TRUE - replaces data with *∑ DISPLAYED = FALSE – hides field completely

Select the item field to be concealed

Select the trigger event

ORACLE WHITE PAPER Form Personalization

30

Recursion Example: Loop through the records

The following Example Shows How to loop through records via recursion .In this Example the lookup description is automatically populated with the lookup meaning when the user clicks on Detail Block of Lookup Values.

1. Create Global Variable with Value NO when entering HEADER BLOCK

In the header block, assign value NO to a global variable.Each time cursor navigates to header block, the global variable will be reset to NO

Comments concealed

ORACLE WHITE PAPER Form Personalization

31

ORACLE WHITE PAPER Form Personalization

32

2. Assign value: Assign the value of meaning to description field if description is blank.

Also navigate to NEXT_RECORD to re-trigger WHEN-NEW-RECORD-INSTANCE

As below, set the value of Lookup Description field.=SELECT nvl('' || ${item.fnd_lookup_values.description.value}|| '' ,'' || ${item.fnd_lookup_values.meaning.value} || '')FROM dual

ORACLE WHITE PAPER Form Personalization

33

Now, call next_record to force the WHEN-NEW-RECORD-INSTANCE event to fire again.

ORACLE WHITE PAPER Form Personalization

34

3. Go to next record if description field already has a value

We are going to the next record in case description field already has a value. Doing so will again fire WHEN-NEW-RECORD-INSTANCE

ORACLE WHITE PAPER Form Personalization

35

4. Send Back To First Record

Now we check if the LAST_RECORD has been reached, then reset the global variable

ORACLE WHITE PAPER Form Personalization

36

Other Process Improvement Features

Utilize the following Built-ins to improve process flows

1. Launch SRS Form – runs concurrent request2. Launch a Function – call another form3. Launch a URL – call any web page4. DO_KEY

∑ DO_KEY(‘NEXT_BLOCK’) will force query execution for find window

5. GO_ITEM, GO_BLOCK – change navigation

∑ Use to prevent update to a field where navigation is needed to populate

6. – EXECUTE_TRIGGER

• Execute form trigger, not database trigger

• Use after setting default values to ensure internal code executes

ORACLE WHITE PAPER Form Personalization

37

Examples of Typical Customizations:

Form personalization helps in Speed up of data entry and processing

– Hide fields, tabs

– Change order of fields

– Set default values

– Call other forms or web address from tool bar

– Execute processes from tool bar

FAQs

What is Forms Personalization? Where it is used? What For?

∑ Forms Personalization is a standard feature provided and supported by Oracle to customize the forms. With Forms personalization you can hide fields, make fields mandatory, create zoom functionality, change lov dynamically e.t.c

What are different triggers that can be used in personalization?

∑ WHEN-NEW-FORM-INSTANCE WHEN-NEW-BLOCK-INSTANCE WHEN-NEW-RECORD-INSTANCE WHEN-NEW-ITEM-INSTANCE WHEN-VALIDATE-RECORD MENUS SPECIAL EVENTS

What is the difference between having personalization at function level rather

than form level?

∑ A Form can have multiple functions. Having the personalization at function level limits the scope of the personalization. For example in Inventory for both “Master Item form” and “Organization Item form” uses same form named INVIDITM where as both have different functions linked to them.

Can you transfer the data from one form to another form using personalization?

Yes. Using global Variables.

At what level you can restrict personalization code?

ORACLE WHITE PAPER Form Personalization

38

∑ FORM level and FUNCTION level

When you display a error message at WHEN-VALIDATE Trigger will the data will

be saved into database?

∑ No. If it is normal message or warning data then it will be saved but NOT for error message.

How can you restrict the access (to Oracle apps) to A GROUP OF users using

personalization?

∑ A. Node or Responsibility Trust Level : is profile option, to restrict access to set of responsibilities based on Web Server from which user logs in.

∑ This profile option can take one of three values∑ Administrative∑ Normal (Default Value)∑ External

How to Personalize FORMS without Apps Password?

Using below Profile option, you can perform FORMS Personalization without knowing APPS Password.

Profile option: Utilities: Diagnostics

Set to Yes at Responsibility level. This can be set at User Level also.

How to make a form Query only

1.Go to the form which needs to be personalized2.Open the personalization screen3.create a rule at when new form instance level4.Set update, delete, insert allowed property to false to the block you want to provide read only functionality.4. Save the record

How to make the attachment function in specific responsibilities to act as read-

only mode so that users who log in to these specific responsibilities can only

ORACLE WHITE PAPER Form Personalization

39

view attachments, while for the rest of the responsibilities allow users to add,

update and delete attachments?

Set_iem_property(SEQ_NUM,ENABLED,PROPERTY_FALSE);

Set_iem_property(CATEGORY_DESCRIPTION,ENABLED,PROPERTY_FALSE);

Set_iem_property(DOCUMENT_DESCRIPTION,ENABLED,PROPERTY_FALSE);

Set_iem_property(DATATYPE_NAME,ENABLED,PROPERTY_FALSE);

Set_iem_property(FILE_NAME_DISPLAY,ENABLED,PROPERTY_FALSE);

How to identify which trigger is most suitable for writing your business logic?

An easier way to check for the suitable triggers is You can navigate to Help/Diagnostics/Custom Code/Show Custom Events.

ORACLE WHITE PAPER Form Personalization

40

You can also open the FMB itself, and see the triggers which are calling CUSTOM.pll.

In some cases, the desired WHEN-NEW-BLOCK-INSTANCE or WHEN-NEW-ITEM-INSTANCE are not being fired. Then?

It should always be possible to trap these events in CUSTOM.pll .

Sometimes the forms are built in such a way that, these triggers are written at block/field level, and the trigger property is set to OVERRIDE. Due to this, the corresponding form level triggers do not fire.

References

∑ How To Call Code Logic Or Procedure In CUSTOM.PLL Using Form Personalization - Builtin 'Call Custom Library'Doc ID: 747508.1

∑ How To Insert Or Update A Database Column Using Forms Personalization?Doc ID: 421999.1

∑ How to Use Parameters in Forms Personalization?Doc ID: 429604.1

Note: For any queries please write to [email protected]

Form name

Block name

Item name

Event Name to be captured