•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
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
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.
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