-->
1) 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 fiedls, make fields mandatory, create zoom functionality, change lov dynamically e.t.c
-->
2) 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
-->
3) 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. Forexample in Inventory for both 'Master Item form' and 'Organization
Item form' uses
same form named INVIDITM where as both have
different fucntions linked to them.
-->
4) Can you use global variables in forms personalization? If so How?
Yes.
-->
5) Can you hide a text field using personalization? How?
Yes. In the
actions set DISPLAYED property to false.
-->
7) Can you transfer the data from one form to another form using
personalization?
Yes. Using global Variables.
-->
8) How do you move personalization from one instance/database to other?
Form
Personalizations can be moved easily through FNDLOAD from one instance to other. Refer to the Article FNDLOAD for more details:http://www.erpschools.com/Apps/oracle-applications/articles/General/FNDLOAD-to-transfer-the-menus-concurrent-programs-personalization-from-one-instance-to-other/index.aspx
-->
9) What is personalization and what features can be achieved through
personalization?
1)Personalization gives us the ability to customize Forms in a very easy manner. The below customizations are possible through Personalization:
2)Zoom from one form to another.
3)Pass data from one form to another through global variables Change LOV values dynamically.
4)Enable/Disable/Hide fields dynamically.
5)Display user friendly messages when required Launch URL directly from oracle form
6)Execute PL/SQL programs
through FORM_DDL package Call custom libraries dynamically
-->
12) At what level you can restrict personalization code?
FORM level and FUNCTION level
-->
13) What can be implemented through Forms Personalization?
The
below can be done using PErsonalization: Zoom from one form to another
Pass data from one form to another
through globalvariables 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
-->
14) How to do implement ZOOM Functionality using personalization?
Refer to the Forms Personalization Tutorial article: http://erpschools.com/articles/forms-personalization-tutorial
-->
15) What are the advantages/disadvantages of Forms Personalization when
compared to CUSTOM.pll?
Advantages: Personalizations are stored in tables rather than files Will not have a bigger impact when you upgrade or apply patchesto the environment Can be moved easily through FNDLOAD from one instance to other Can be restricted at site/responsibility/userlevel Easy to disable/enable with click of a button.
Personalization will store who columns with which we have the ability to track who created/modified it where as in CUSTOM.PLL we don't have that ability. Disadvantages: Not all can be customized using Personalization.
-->
16) 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.
http://nemathora.blogspot.com/2014/03/forms-personalization.html?_sm_au_=itHDNvkRQs057s17
->
Oracle has provided a simple and easy feature to implement the customer
specific requirements without modifying the
underlying forms code or Custom library.
--> This personalization feature provides easy, faster way to customize
Oracle apps forms with
minimum development effort.
--> The Form Personalization feature allows you to declarative alter the
behavior of Forms-based screens like changing
properties, executing built-ins, displaying messages, and adding menu
entries…etc
Why personalization :-
Oracle Supports personalization unlike customization.
Personalizations are stored in tables rather than files.
Will not have a bigger impact when you upgrade or apply patches to the
environment.
Can be moved easily through FNDLOAD from one instance to other.
Can be restricted at site/responsibility/user level.
Easy to disable/enable with click of a button.
Personalization will store who columns with which we have the ability to
track who created/modified it where as in CUSTOM.PLL we don’t have that
ability.
Can be applied to new responsibilities/users easily.
Can be restricted to function or form.
What can be 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.
To create personalization for a particular function/form, first invoke the
function/form in Oracle
applications.
Navigation: choose “Help -> Diagnostics -> Custom Code ->
Personalize” from the pull down
Personalization Tables:-
All personalization’s that we have made to Oracle application forms will be
stored in following
tables :
1. FND_FORM_CUSTOM_RULES
2. FND_FORM_CUSTOM_ACTIONS
3. FND_FORM_CUSTOM_SCOPES
4. FND_FORM_CUSTOM_PARAMS
5. FND_FORM_CUSTOM_PROP_LIST
6. FND_FORM_CUSTOM_PROP_VALUES
The Personalization form
mainly contains four sections.
·
Rules
·
Conditions
·
Context
·
Actions
Rules:
- Contains Sequence, description of the rule. Level either Form or
Function depends on requirement.
- Enable or Disable Rules using check box
Condition:
- Provide Trigger Event, Trigger Object, Sql statement in
Condition.
- Processing mode: not in Enter-Query mode, only
in Enter-Query mode or both
Context:
- Like profile options: Industry, Site, Responsibility,
User
Actions:
- Property,
Message, Builtin, Menu
Real-Time
Examples
1. Change Displayed data in LOV
Goal:
Change
the LOV in “Supplier Name” field in the Find “Invoice Form (AP_APXINWKB)”
Navigation: Payables Manager > Entry > Invoices
Double Click it to open
In the first filed, Supplier Name change LOV In such a way that no one can see
the TaxPayerID in LOV. It should be masked with *’s.
Navigation: Help Menu >> Diagnostics >> Custom Code >>
Personalize
Enter the following information:
Seq: 5 Description:
Disable Tax Payer Id
Level: Form Enabled: checked
Trigger Event: WHEN-NEW-FORM-INSTANCE
Processing Mode: Not
in Enter-Query Mode
Click on Actions and enter the following.
Seq: 10 Type: Builtin Language: all
Builtin type: Create
Record Group from Query
Argument:
SELECT vendor_name, vendor_number,
DECODE (active_flag, ‘Y’, ‘Yes’, ‘N’, ‘No’, ‘Yes’) active,
‘***’ num_1099,vat_registration_num, vendor_id, ”, ”, ”,
”, hold_all_payments_flag
FROM po_vendors_ap_v
WHERE num_active_pay_sites > 0 OR num_inactive_pay_sites
> 0
ORDER BY UPPER (vendor_name)
Group Name: ERP_SCHOOLS_ALL_VENDORS_NAME
Now
Create New Record with below information
Seq:12 Type: Property Language: All Enabled: Checked
Object Type: LOV
Target Object: INV_ALL_VENDORS_NAME
Property Name: GROUP_NAME
Value: ERP_SCHOOLS_ALL_VENDORS_NAME
Save it.
Click Validate
Click Apply Now.
Go to tools Menu >> click Validate All
Once it is successfully validated you are ready to go.
Click ok and close personalization form.
Close your find invoices form and invoices form completely.
Open it again and click on Supplier name field LOV
Query any supplier. You will see your changes to the LOV as shown below.
Now Taxpayer ID is
shown as ***** instead of number
Q. Have you heard about Zoom function in
Oracle Apps Forms?
Yes. It
is CUSTOM.ZOOM_AVAILABLE function
Q. What
is the use?
Generally
the function CUSTOM.ZOOM_AVAILABLE was used for navigation from a block to
another and it by default returns BOOLEAN value; False. It was used in earlier
time in Oracle Apps. Now we are using Open_Form, Call_Form etc.
Ex: If Zoom is available
for this block, then return TRUE; otherwise FALSE.Always test for the form and
block name. Refer to the SYSTEM variables for form name and block name in your
code and branch accordingly. The module name of your form must match the form
file name.
By default this routine must return FALSE.
The
following example enables Zooms in the following places:
Form:
FNDSCAUS, Block USER and
Form:
FNDCPMCP, Block PROCESS
FUNCTION
zoom_available RETURN BOOLEAN IS
form_name VARCHAR2(30) :=
NAME_IN(‘system.current_form’);
block_name VARCHAR2(30) :=
NAME_IN(‘system.cursor_block’);
BEGIN
IF (form_name = ’FNDSCAUS’ AND block_name
= ’USER’) OR
(form_name = ’FNDCPMCP’ AND block_name = ’PROCESS’)
THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END zoom_available;
Q. What
is the sequence of Trigger firing in Form?
a)
Pre-Form
b)
Pre-Block
c)
Pre-Record
d)
Pre-Text-Item
e)
When-New-Form-Instance
f)
When-New-Block-Instance
g)
When-New-Record-Instance
h)
When-New-Item-Instance
i)
Post-Text-Item
j)
Post-Record
k)
Post-Block
l)
Post-Form
Q. What
is the process of Form registration in Oracle Apps?
·
Send
the file through FTP in binary mode to …/forms/US
·
Generate
*.fmx by running the fmx script
·
f60gen
module=<FORMNAME.fmb> userid=APPS/adm1n output_file=<FORMNAME.fmx>
module_type=form batch=no compile_all=special
Q. What
is the default directory of Forms in Oracle Apps?
Application
top(autop)/forms/US
Q. How
can we disable a form from the menu?
System
Administrator (Responsibility) > Security > Responsibility -> Define
(at Menu) > Find Responsibility Name & The Menu attached to it
> Exclusion > Exclude the Function of the Form
Q. How
can you call DFF from Form?
By
using a procedure called fnd_descr_flex.define
Ex: FND_DESCR_FLEX.DEFINE(BLOCK=>’ORDER_DETAIL’,
FIELD=>’DESCFF’,
APPL_SHORT_NAME=>’FND’,
DESC_FLEX_NAME=>’MYDESC’)
In
Brief,
We need
to follow the following steps in your form:
a) Create a displayed field to hold your concatenated segment values (the [ ]
field).
b) Create fields (normally hidden) for each of the flexfield columns in your
table (the
one used for your flex).
c) In the form-level WHEN-NEW-FORM-INSTANCE,
call
FND_DESCR_FLEX.DEFINE,
setting
BLOCK parameter to the name of the block containing your [ ] field,
the
FIELD parameter to the name of your [ ] field,
the
APPL_SHORT_NAME parameter to the short name of your application and the
DESC_FLEX_NAME parameter to the name of your descriptive flex.
In the form-level WHEN-NEW-ITEM-INSTANCE,
WHEN-VALIDATE-ITEM,
PRE-INSERT,
PRE-UPDATE,
POST-QUERY
and
PRE-QUERY
triggers place a call to FND_FLEX.EVENT as follows:
FND_FLEX.EVENT ( 'TRIGGER_NAME');
where TRIGGER_NAME is the name of the trigger,
e.g. in the PRE-QUERY
trigger .... FND_FLEX.EVENT('PRE-QUERY');
Form Personalization in
Oracle Applications
The Form
Personalization feature allows you to declaratively alter the behavior of
Forms-based screens, including changing properties, executing builtins,
displaying messages, and adding menu entries.
For
each function (a form running in a particular context based on parameters
passed to it), you can specify one or more Rules. Each Rule consists of an
Event, an optional Condition, the Scope for which it applies, and one or more
Actions to perform. An Event is a trigger point within a form, such as startup
(WHEN-NEW-FORM-INSTANCE), or when focus moves to a new record
(WHEN-NEW-RECORD-INSTANCE). There are standard events that almost every form
sends, and certain forms send additional product-specific events.The Scope is
evaluated based on the current runtime context to determine if a Rule should be
processed or not. The Scope can be at the Site, Responsibility, User, or
Industry level. Each Rule can have one or more Scopes associated with it.
The
Condition is an optional SQL code fragment that is evaluated when the Event
occurs; if it evaluates to TRUE then the Actions are processed.
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.EXECUTE
· displaying
a Message
· enabling
a Special menu entry
Once
Rules are defined, when the target function is run then the Rules are
automatically applied as events occur within that form.Although the Form
Personalization feature is declarative, the intended audience is a person
familiar with Oracle Forms including the PL/SQL programming language, and the
Oracle Applications Development Guide. Additionally, any change made could
interfere with the base code of a form (the code that Oracle ships), thus the
Support statements discussed later in this chapter must be followed diligently.
Using
the Personalization Form
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 pulldown 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.
The
Personalization form will open and automatically query existing Rules for that
function. After making changes, Save them then close and re-run the function to
have them take effect. You can also Validate or Apply certain changes
immediately to test them without having to re-run the target form by pressing
the ‘Validate’ or ‘Apply Now’ buttons.
Why personalization?
Ø Oracle Supports
personalization unlike customization
Ø Personalization are
stored in tables rather than files
Ø Will not have a bigger
impact when you upgrade or apply patches to the environment
Ø Can be moved easily
through FNDLOAD from one instance to other
Ø Can be restricted at
site/responsibility/user level
Ø Easy to disable/enable
with click of a button.
Ø Personalization will
store who columns with which we have the ability to track who created/modified
it where as in CUSTOM.PLL we don’t have that ability.
Ø Can be applied to new
responsibilities/users easily.
Ø Can be restricted to
function or form.
What
can be 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
Personalization
Tables:
FND_FORM_CUSTOM_RULES
FND_FORM_CUSTOM_ACTIONS
FND_FORM_CUSTOM_SCOPES
FND_FORM_CUSTOM_PARAMS
FND_FORM_CUSTOM_PROP_LIST
FND_FORM_CUSTOM_PROP_VALUES