Friday, 1 July 2016

Form Personalization



•Header / Rule Section : This section contains the basic information about the form on which personalization is being done. It has :-
Function Name :- Name of the form function
Form Name :- Name of the form in use.
Sequence :- Sequence is the field where we provide sequence number. Forms personalization is executed sequentially in the sequence. Lower sequence value executed first.
Description :- Allow to enter details about personalization being done. Its good practice to enter description related to what you are doing in the personalization as it helps later in debugging issue to identify the personalization.
Level :- Its the level that defines at what level the forms personalization is being applied. If Level is 'Forms' then all the functions under that forms will be impacted. If Level is function then the forms personalization will have its impact only when you are working on that function inside the form.
Enabled Checkbox :- To enable / disable forms personalization.
Event : Its nothing but the forms event. Based on the value choosen here the function will execute only when that particular event triggers on the form. Trigger event are predefined.
Condition : The box is the place where we put sql validation query. If the condition returns true then action will be performed
2/12/2016
Processing Mode : Defined the mode in which the condition will be applicable.

Context : Context plays the same role as does the profile options. It gives us flexibility that at what level the forms personalization will be used. We can choose level as 'Responsibility/User' and it will impact only at the responsibility / user level.

Action : Action determines actual operation that needs to be performed when a particular trigger event satisfies condition i.e it returns TRUE on condition validation. Each rule must have atleast one condition other wise it doesn't make sense just to define condition and don't perform any action. We can define multiple action to be triggered on one condition and it will execute in sequence. There are 4 different types of action available :-

Property : This action type is used to set the property of the objects. These objects could be Item / Window / Forms Block etc. Property has 4 sections :-
          Object Type : This determines which type of object will be impacted

          Target Object : Actual object that will be impacted.
          Property Name : It determines the attribute of the object that you want to change.
          Value : The target value that the object property will change to. You can enter hard coded text or write custom sql query or call function to set the values. SQL query / function will provide result at run time.
Message : It is used to custom message at runtime. You can set different type of message that can shown. Different message types are :-
          Show : This will show a pop message as note to user when condition is satisfied. User need to press 'OK' to continue processing.
          Hint : This will not show any pop up and will not stop processing. Message will be displayed at the bottom left corner of the form, can be called task bar where you generally see messages when you save data on a form.
          Error : It display pop as error and stop the processing.
          Debug : It displays message pop as debug.
          Warn : Show pop window as warning window. Upon hitting 'OK' you can continue transaction.
          Builtin : It allow to call oracle standard builtin APIs and functions. Using this you can call a Form / Function / Open URL / Execute a trigger and many other function.
Builtin Type : List all the builtin functions type that are available.
Builtin : It allow to call oracle standard builtin APIs and functions. Using this you can call a Form / Function / Open URL / Execute a trigger and many other function.
Builtin Type : List all the builtin functions type that are available.
          Program Name : Based on the builtin type chosen, enter respected program to be executed.
          Menu : This is used to call another form from current form. You can create a form menu link and call. This will be used to implement ZOOM functionality that will we discuss later.
          Menu Entry : Oracle provided 45 special menu entries that can be used to call another form from one form.
          Menu Label : Custom name that you can provide while you try to create a new call to form.
          Record History is not available here
         
          Record History is not available here ?
Sol."FND:Record History Enabled" could be set to Yes

Go to System Administrator =>Profile => System=>user --Give Your Users Name
          and
          find FND:Record History Enabled
         
          set yes at User Level
done through personalization?
Zoom from one form to another
·                     Pass data from one form to another through global variables
·                     Change LOV values dynamically
·                     Enable/Disable/Hide fields dynamically
·                     Display user friendly messages when required
·                           Launch URL directly from oracle form
·                           Execute PL/SQL programs through FORM_DDL package
·                           Call custom libraries dynamically
Limitations:
Although it is faster than a speeding bullet, it is not able to leap over tall buildings:
·                     You can only change what Forms allows at runtime:
o                  Cannot create new items
o                  Cannot move items between canvases
o                  Cannot display an item which is not on a canvas
o                  Cannot set certain properties
o                  Cannot change frames, graphics, boilerplate
·                     You can only respond to certain Trigger Events:
o                  WHEN-NEW-FORM-INSTANCE, WHEN-NEW-BLOCK-INSTANCE, WHEN-NEW-RECORD-INSTANCE, WHEN-NEW-ITEM-INSTANCE
o                  WHEN-VALIDATE-RECORD (not in all forms)
o                  Product-specific events
·                     May interfere with, or be overridden by, base product code
·                     Expected user is an Admin/Developer
o                  Knowledge of Oracle Developer is extremely desirable
o                  Knowledge of PL/SQL, Coding Standards and/or APIs required in some cases
·                     Normal rules for customizations apply
o                  Extensive testing in a Test environment is required!
·                     CUSTOM is a stub library Oracle ships that receives Trigger Events. Customers are free to add any code they like to it.
·                     CUSTOM and Form Personalizations drive off the same Trigger Events.
o                  Form Personalizations are processed first, 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, Form Personalizations is adequate and is significantly simpler.
·                     WHEN-NEW ITEM-INSTANCE trigger is fired at the field level. That means, based on the below screen shot, this trigger may be fired at fields such as Number, Price, Need-By date etc.
·                     WHEN-NEW-ITEM-INSTANCE is an event that fires when the control has navigated to a new item

WHEN-NEW-RECORD-INSTANCE is an event that fires when the control has navigated to a new record 

WHEN-NEW-BLOCK-INSTANCE is an event that fires when the control has navigated to a new block
As this personalization requires every record for deliveries which are in open status to be made as non-editable, we will select ‘WHEN-NEW-RECORD-INSTANCE’ as trigger event.
·                     WHEN-NEW-FORM-INSTANCE: once, when the form starts up.
·                     WHEN-NEW-BLOCK-INSTANCE: each time the cursor moves to a new block.
·                     WHEN-NEW-RECORD-INSTANCE: each time the cursor moves to a new record.
·                     WHEN-NEW-ITEM-INSTANCE: each time the cursor moves to a new item.
·                     WHEN-VALIDATE-RECORD: each time the current record has any change that needed to be validated.
·                     SPECIAL1 through SPECIAL45: each time the user selects a menu entry from the Tools, Actions or Reports menu.
·                     Form Level : Once you do the form personalization at the Form level, it will be reflected in all the functions,forms where
·                     this form is included.
·                      
·                     Function Level : if the form personalization is done at the Function level, it will be reflected only in the function. When
·                     the same function is included in any other responsibility, the personalization will get reflected there as well.
·                     Builtin - To Launch SRS form,URL,Function, set profile option, execute procedure.
·                     Menu - Any thing related to the Menu and Special Button.


·                     Did you try using WHEN-NEW-ITEM-INSTANCE on the field where the cursor is placed after leaving the field you want to validate?
·                     Getting the Access

·                     Enable the Diagnostics to the Form Personalization
·                      
·                     Enable the profile FND: Diagnostics at the required level to perform the form personalization.
·                     Navigating to Form Personalization screen

·                     Open the form in which you want to perform the personalization.
·                     Make sure that you are in the correct form by accessing Help--> About Oracle Applications.

·                     You can see something like below

·                     ----------------------------------------
·                     Current Form
·                     ----------------------------------------
·                     Form Application : Payables
·                     Form Name : APXINWKB
·                     Form Path : /<server_location>/ap/11.5.0/forms/US/APXINWKB.fmx
·                     Form Version : 11.5.1081
·                     Form Last Modified : $Date: 2010/06/09 06:29  $

·                     There are properties for each field. for example to get the value of a field, the property name is 'VALUE'. To make the field
·                     editable/non-editable the property name is 'ENTERABLE'. Similary there are more number of properties for a field.

·                     To get the property of any item in the form, the 'Insert 'Get' Expression' button can be used and to get the value of any
·                     item in the form, the 'Insert Item Value' button can be used.
·                     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 will be saved but not for error message.
·                     What is Forms Personalization? Where it is used? What For?
·                     Forms Personalization is a standard feature provided by oracle and supported by oracle to customize the forms. With Forms personalization you can hide fields, make fields mandatory, create zoom functionality, change lov dynamically etc.

·                     Form Level : Once you do the form personalization at the Form level, it will be reflected in all the functions,forms where
·                     this form is included.

·                     Function Level : if the form personalization is done at the Function level, it will be reflected only in the function. When
·                     the same function is included in any other responsibility, the personalization will get reflected there as well.
·                     Getting the Item Name

·                     For any field in a Form, you can get the name of the item and the folder where it resides.

·                     Place your cursor at the field. In our case place the cursor in the Invoice Type field then
·                     click on Help--> Diagnostics--> Examine which will give you the field name ,block name the filed belongs to and the value.

·                     WHEN-NEW-FORM-INSTANCE WHEN-NEW-BLOCK-INSTANCE WHEN-NEW-RECORD-INSTANCE WHEN-NEW-ITEM-INSTANCE WHEN-VALIDATE-RECORD MENUS SPECIAL EVENTS
Forms Personalization:
SPECIALn
Populate tools menu (SPECIAL 1-15)
Populate reports menu (SPECIAL 16-30)
Populate actions menu (SPECIAL 31-45)
MENUn
Populate tools menu (MENU1-15)
Use these before SPECIALn

1) WHEN-NEW-FORM-INSTANCE - Set query mode
2) WHEN-NEW-BLOCK-INSTANCE - GO-BLOCK & EXECUTE-QUERY
3) WHEN-NEW-RECORD-INSTANCE - SET VALUE OF ITEM AND EXECUTE.

Function execute: fnd_function.execute.

No comments:

Post a Comment