0% found this document useful (0 votes)
147 views

Forms Personalization

This document discusses customization options in Oracle Applications including the CUSTOM library and form personalization. It provides an overview of how to customize using the CUSTOM library and form personalization. It describes the tools, events, and architecture of the CUSTOM library. It also compares form personalization and the CUSTOM library and discusses limitations and troubleshooting for customizations.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
147 views

Forms Personalization

This document discusses customization options in Oracle Applications including the CUSTOM library and form personalization. It provides an overview of how to customize using the CUSTOM library and form personalization. It describes the tools, events, and architecture of the CUSTOM library. It also compares form personalization and the CUSTOM library and discusses limitations and troubleshooting for customizations.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

Subject: Customization in Oracle Applications

Doc ID: 743490.1


Modified Date: 03-JAN-2009

Type: BULLETIN
Status: PUBLISHED

In this Document
Purpose
Scope and Application
Customization in Oracle Applications
Overview of Customizing Oracle Applications
Tools for Customizing Oracle Application
Why to use Customization?
Customizing Oracle Applications Using CUSTOM Library
What is CUSTOM Library?
Events Passed to the CUSTOM Library
How to customize using CUSTOM library Preliminary setup
Steps To Do
Library Details
CUSTOM Library Architecture
How CUSTOM Library works?
Sample Test cases
Troubleshooting Customization
Customizing using Form personalization
Overview of Form Personalization
Profiles Used in Form Personalization
Sections of Form Personalization
Some Test Cases
Limitations of Form Personalization
Moving Personalizations between instances
Relationship between Form Personalization and CUSTOM library
Comparison between Form personalization and custom library
Similarities
Differences
Limitations
Apps check showing Customization details
Other Sources
References

Applies to:
Oracle Order Management - Version: 11.5.9 to 12.0.6
Information in this document applies to any platform.

Purpose
This note explains how CUSTOM library and form personalization can be used in Oracle Applications forms processing, provides an understanding of different methods of
customizations, troubleshooting, sample examples and Limitations.

Scope and Application


This note is intended for any users who is aware of Oracle form properties and Oracle Applications.
This scope of this note is to understand what customizations customers do.
Examples are provided here for CUSTOM library, Form personalization to enhance the functioning of Oracle Application forms can be used under there own risk.

Customization in Oracle Applications


Overview of Customizing Oracle Applications
Customization is divided basically into two types:
1. Customization By Extension
a. Defining customer based Custom Application
b. Adding custom menu, responsibility, functions, report and so on..
c. Changing the profiles and folder definitions, flex fields
2. Customization By Modification
a. Modifying an Existing Form, Report
b. Creating a new Form, report
There are different ways to customize Oracle Applications. Most common types of customizations include:
1. Changing forms
Appearance
Validation logic
Behavior
2. Changing reports or programs
Appearance
Logic
3. Database customizations
Adding readonly schemas
Augment logic with database triggers

4. Integrating third party or custom software


Re-linking programs
Note: Oracle recommends avoiding customization by modification and suggests doing customization by extension instead. Be aware that modifications are never preserved
during an upgrade or patch process, if the modified file is upgraded.

Tools for Customizing Oracle Application


1. Flexfields
2. Folders
3. Forms CUSTOM Library(CUSTOM.pll) and Personalization
4. Framework Personalization and Extension
This page explains the various applications of CUSTOM Library and Form Personalization in Oracle Applications 11i to 12

Why to use Customization?


Customization is used to cater to customers business needs, which cannot be achieved via standard functionality.
1. Helps to customize implementing business rules
Processing
Security
Compliance
2. Make applications easier to use
3. Make applications to attain/meet business requirements efficiently
4. Display company or organization identity

Customizing Oracle Applications Using CUSTOM Library


The CUSTOM library allows extension of Oracle Applications without modification of the actual Oracle Applications code. The CUSTOM library is a body of PL/SQL code that
is attached to and shared by all Oracle Applications forms.

What is CUSTOM Library?


The CUSTOM library (CUSTOM.pll) is standard Oracle Forms PL/SQL library supplied by Oracle within Applications. Oracles built-in feature CUSTOM Library allows
customer to enhance the standard functionality of the Applications by implementing site-specific business rules.
Forms developed using the Oracle Application development standards (TEMPLATE.FMB), accesses the CUSTOM library. For more details please refer Oracle Applications
Developers Guide.
CUSTOM Library is used for following purposes
-Zoom
-Logic for generic events
-Logic for productspecific events
-Custom entries for the special menus
-Setting visual attributes

Events Passed to the CUSTOM Library


Generic Events are:
-WHEN-NEW-FORM-INSTANCE initially entering a form
-WHEN-NEW-BLOCK-INSTANCE entering a zone (or block) within a form
-WHEN-NEW-ITEM-INSTANCE moving into a new field within the form
-WHEN-NEW-RECORD-INSTANCE - creating a new record
-WHEN-FORM-NAVIGATE navigating through a form using the mouse
-WHEN-VALIDATE-RECORD saving (committing) the information to the database
-EXPORT triggered when using the Export feature
-ZOOM Feature for moving to another form and querying up specific records
-SPECIALn - (where n is a number between 1 and 45) used to generate entries in Tools menu and the code is triggered by selecting that menu choice from the Special
option
-KEY-Fn (where n is a number between 1 and 8) triggered by pressing the corresponding function key
Some events are application specific (Application Object Library):
-WHEN-LOGIN-CHANGED when a user logs on as a different user
-WHEN-RESPONSIBILITY-CHANGED when a user changes responsibilities
-WHEN-PASSWORD-CHANGED when a user changes their password

How to customize using CUSTOM library


Preliminary setup
To customize some preliminary setup is required:
a.Install Form Builder
b.Start -> Programs -> Form builder
c.Right click properties enter the following
In Target - D:\ORANT\BIN\ifbld60.EXE
In Start In - D:\Custom Library

d.Copy the following required files to local directory say D:\Custom Library
APPCORE.pll
APPCORE2.pll
FNDSQF.pll

e.Open CUSTOM.pll and attach APPCORE2.pll and not APPCORE.pll

Steps To Do
Steps involved in Customization:
1. File name is CUSTOM.pll, located in the $AU_TOP/resource directory
2. Edit with Forms library editor after attaching the APPCORE2.pll, FNDSQF.pll
3. Move the file to server
4. Generate to CUSTOM.plx executable library
Login as APPLMGR user and set up the Applications environment using the file
. ./APPSORA.env
found under $APPL_TOP
Compile the file using below mentioned command
f60gen module=CUSTOM.pll userid=apps/<apps_pwd> module_type=library

Library Details
Generic Libraries
Library details are below:
Set FORMS60_PATH on desktop to location of local libraries (D:\Custom Library)
1. APPCORE.pll Application Standards, toolbar
APPCORE.pll contains
VERT.pll Specific industry features
GLOBE.pll Global or regional features
JA.pll Asia/Pacific features
JE.pll Europe/Middle East/Africa features
JL.pll Latin America Code
CUSTOM.pll Customizations of standard forms
2. FNDSQF.pll Flexfields, Profiles, Currency, Concurrent Request Submission, Record History, Message Dictionary
3. APPDAYPK.pll Calendar
4. APPFLDR.pll Packages for Folder Blocks
Libraries specific to Modules
There are some libraries specific to application modules. Additional libraries attached to TEMPLATE.fmb are:
1 FV.pll Federal Financials
2 HRKPI.pll Human Resources Knowledge Provider
3 GHR.pll Global Human Resources
4 GMS.pll Encumbrances
5 IGILUTIL.pll International Public Sector
6 IGILUTIL2.pll International Public Sector
7 PSAC.pll Public Sector Applications
8 PQH_GEN.pll Public Sector Human Resources
9 PSA.pll Public Sector Applications
10 PSB.pll Public Sector Budgeting
11 OPM.pll Process Manufacturing
All libraries are available in $AU_TOP/resource
12 APPCORE2.pll Application standards (for CUSTOM.pll)
Why APPCORE2 when APPCORE is already available?
APPCORE.pll calls CUSTOM.pll and hence we cannot attach APPCORE directly to CUSTOM , lest this will cause a cyclic reference and hence APPCORE2.pll
This pll contains same routines as in corresponding APPCORE library.
Execution will be in the following manner
APPCORE-->CUSTOM-->APPCORE2
APPCORE2 has most of the APPCORE built-ins in the following packages:
*APP_ITEM_PROPERTY2
*APP_DATE2
*APP_SPECIAL2
The CUSTOM library comes with FNDSQF library already attached. FNDSQF provides Oracle Applications routines for function security (for opening forms), flexfields, and
other utility routines.

CUSTOM Library Architecture

CUSTOM Library has 2 Functions and 1 procedure as below


Functions
zoom_available
Style
Procedure
Event
package body custom is
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 = form name and block_name = 'block name') then
return TRUE;
else
return FALSE;
end if;
end zoom_available;
function style(event_name varchar2) return integer is
begin
if event_name = 'Event name' then
return custom.override;
else
return custom.standard;
end if;
end style;
procedure event(event_name varchar2) is
form_name varchar2(30) := name_in('system.current_form');
block_name varchar2(30) := name_in('system.cursor_block');
item_name varchar2(30) := name_in(system.cursor_item);
BEGIN
IF event_name = event name THEN
IF form_name = form name THEN
IF block_name = block name THEN
IF item_name = item name THEN
/* Custom code goes here ... */
END IF;
END IF;
END IF;
END IF;
END event;

How CUSTOM Library works?


Every form calls CUSTOM Library, which is developed using TEMPLATE.fmb for every event.

Sample Test cases


Sample test cases which can be used by customer and the outcome are provided in Note 744065.1

Troubleshooting Customization
Generate the FRD trace to debug the Custom Code.
From 11.5.10 this method enables users to run FRD tracing through the Personal Home Page by setting debugging to true using the profile option 'ICX: Forms Launcher'.
To start tracing in this way, modify Profile Option 'ICX: Forms Launcher' at USER level to include the Forms parameters required for FRD logging as follows:
1. Copy the value for profile option 'ICX: Forms Launcher' from the SITE level to the USER level.
The value should look as follows:
http://<machine.domain>:<port>/dev60cgi/f60cgi

2. Append the FRD parameters to the value at the USER level.


e.g. update the value of ICX: Forms Launcher for the user to be
http://<machine.domain>:<port>/dev60cgi/f60cgi?play=&record=collect&log=/tmp/username_frd.log
3. Save this change at the USER level, and when accessing the applications next time through the Personal Home Page, the FRD trace will be generated.
http://www-apps.us.oracle.com/r115/FRD.html provides detailed
The below mentioned string will be available in FRD Trace when ever a call is passed to custom library.
Entering app_form_customizations when custom.pld is called.
Entering app_form_customizations.currently_valid when validation is performed , this statement would available.
Example: message pops up when the item has odd order quantity
Entering app_form_customizations.apply will show wherever application applies the customization.
Example: When field color is changed.
Check for the string CUSTOM.pld in frd trace file. The code in custom library will be read from custom.pld when Application starts. The call to custom.pld will be available in
FRD trace file also.

Customizing using Form personalization


Form Personalization is an easy way to implement the customers business needs without modifying the forms code or using CUSTOM library.

Overview of Form Personalization


Form personalization provides easier, faster mechanism to achieve the business needs and requires minimum technical knowledge.
Enable and Disable Form Personalization
Open the specific form, which needs to be personalized.
For Example: Sales order form(OEXOEORD.fmb)
Navigation: Help -> Diagnostics -> Custom Code -> Personalize

Profiles Used in Form Personalization

The profile controlling this follows


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.

Sections of Form Personalization


Form Personalization has the following four sections:
Rules
Conditions
Context
Actions
Rules and Conditions
Function Name: Personalizations are made for a function, not a form.
Seq: an ordering from 1 (first) to 100 (last)
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
Trigger object: the context for the trigger event, such as a particular block or item
Condition: an optional SQL fragment, when it evaluates to TRUE, allows the rule to execute. It specifies the conditions when this action should be executed.

This is an optional SQL code statement, when the Event occurs; if it returns TRUE the Actions are executed. The condition contains the following:
SQL functions and operators, such as AND, OR, TO_CHAR, DECODE, and NVL
References to bind variables like :block.field, :system, :global and :parameter
values can be used.
Example:
:LINE.ORDERED_QUANTITY is not null
:LINE. ORDER_QUANTITY_UOM is null
:sysdate >= to_date(01-10-2008, DD-MM-RRRR) and :ORDER.ORDERED_DATE >= sysdate+1
Context
Context 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 users context matches any context of a rule, that rule is executed.

Actions
Actions determine what personalization does.
Seq: an ordering from 1 (first) to 100 (last)
Type: Property, Message, Builtin, or Special
Depending on the Type, the panel will change to show additional fields
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 an actions

Type: the type of action to take:


Property: Allows to select a specific object, a property of that object, and specify a new value for that property
Builtin: allows execution of a standard Forms Builtin, such as GO_BLOCK or DO_KEY
Message: displays a message in one of several styles
Special: enables a special menu entry, defining its label, icon name and which blocks it applies to.
Property
For a Type of 'Property':

Object Type: the type of object, including Item, Window, Block, Tab, Canvas, Radio button, View, GLOBAL, or PARAMETER.
Target Object: 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 including:
Item-level properties, which set the property for all instances of that object.
Item-instance properties, which set the property for the current record of that block using set_item_instance_property ()
Applications cover properties, which are a 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: either 'Show', 'Hint', Warn, 'Error', or Debug. Error and Warn if the user selects the Cancel button will raise a form_trigger_failure after executing, and
stop all further processing. Messages of type Debug will only be displayed if the Show Debug Messages checkbox is checked.
Message Text: Text to be displayed in the screen.
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, Repot is needed for the menu entry.

Some Test Cases


Some sample test scenarios used by customers and outcome is there in the Note 744069.1

Limitations of Form Personalization

Form Personalization allows responding to a Zoom event - it does not allow enabling Zoom on a form. To enable ZOOM functionality CUSTOM library - CUSTOM.pll is
required

Moving Personalizations between instances


Form personalization can be moved from one instance to another. Personalizations are extracted by the loader on a per-function basis (that is, each loader file will contain all
of the personalizations for a single function). Note that upon uploading, all prior personalizations for that function are first deleted, and then the contents of the loader file are
inserted.
The loader syntax is as follows:
Download: Function name is a required parameter; if it is not supplied then no personalizations are downloaded.
Upload:
FNDLOAD <userid>/<password> 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct
<filename.ldt> FND_FORM_CUSTOM_RULES function_name=<function name>

FNDLOAD <userid>/<password> 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.lct <filename.ldt>

SQl to find the properties available depending on the object type


select substr(property_name,1,40) property_name, field_type from fnd_form_custom_prop_list;

Below is the list of the properties available for Block and Window
For BLOCK
ALLOW_NON_SELECTIVE_SEARCH
DEFAULT_WHERE
DELETE_ALLOWED
EXPORT_HIDDEN_CANVASES
INSERT_ALLOWED
NEXT_NAVIGATION_BLOCK
ORDER_BY
PREVIOUS_NAVIGATION_BLOCK
QUERY_ALLOWED
SCROLLBAR_X_POS
SCROLLBAR_Y_POS
UPDATE_ALLOWED

For WINDOW
HEIGHT
TITLE
VISIBLE
WIDTH
WINDOW_STATE
X_POS
Y_POS

Relationship between Form Personalization and CUSTOM library


The Form Personalization feature receives and processes them first, then passes them to the CUSTOM library, so both the mechanisms can be used simultaneously. (Note:
SPECIALXX and MENUXX events are not passed to the CUSTOM library).
Oracle Forms Libraries first invoke the Forms Personalization, and then call goes to the CUSTOM library for the same set of events. Forms personalization will override if the
same set of events are passed as that of CUSTOM library.
The first call goes to Form personalization from Oracle Form libraries so the customization done using form personalization will be effective even if same set of events are
available in custom library. So in this case custom library would not be effective.

Comparison between Form personalization and custom library


Similarities
Both Form Personalization and the CUSTOM library are driven by same events.
Both features also respond identically to the Custom Code events of 'Normal', 'Off' and 'Core Code Only'.
Help > Diagnostics > Custom Code > Off
Switches off the custom codes in both the CUSTOM Library and Form Personalization.

Differences
Form Personalization allows personalizations that is possible using CUSTOM library, but it does not require using Oracle Forms Builder to edit and compile the file.
Depending on the complexity of business needs, it may still require a degree of coding skills. The CUSTOM library is able to support more complex personalizations because
it gives access to all of the capabilities of PL/SQL programming language, including calling client-side program units, all Oracle Forms built-ins, and issuing any SQL.
Once a menu has been enabled using Forms Personalization, it then cannot be conditionally disabled. But using CUSTOM Library this can be done.
Form Personalization is an alternate way to do the same task as done in the custom library. Form Personalization has all the commonly used activities of CUSTOM library.
However form personalization has its own limitations, does not allow achieving complex business logics.
CUSTOM library still can be used for forms customization to implement the complex business logic.

Limitations
1 SQL is not allowed
-No Select, update, delete and insert
-Should use record cursors
2 Overwritten during upgrades
3 Use FND_FUNCTION while using ZOOM feature instead of call form
4 Loaded only for one session
5 Custom Specification cannot be modified
6 Cannot create new items
7 Cannot move items between canvases
8 Cannot display an item which is not on a canvas (thus, individual flexfield segments cannot be displayed)
9 Cannot set certain properties such as the Datatype of an Item.
10 Cannot change frames, graphics, or boilerplate
11 Cannot hide the item that currently has focus

Apps check showing Customization details


Apps check provides custom library and custom triggers
Custom Library would provide some details about the custom codes in the below mentioned are
Custom Library Information
Customizations are available in CUSTOM Library, if FORM_NAME, BLOCK_NAME, ITEM_NAME strings are available in the apps check.
"CUSTOM"ZOOM_AVAILABLE"STYLE"EVENT_NAME"EVENT"FORM_NAME"BLOCK_NAME"ITEM_NAME"A"B""
"CUSTOM"ZOOM_AVAILABLE"STYLE"EVENT_NAME"EVENT"FORM_NAME"BLOCK_NAME"ITEM_NAME"A"B""
"CUSTOM"ZOOM_AVAILABLE"STYLE"EVENT_NAME"EVENT"FORM_NAME"BLOCK_NAME"ITEM_NAME"A"B""
Entire Library will not be captured in the Apps check.
Database Triggers
Database triggers, which are not specific to Modules, will be captured in Database Triggers section.
Verify the Trigger Name and check if it is custom trigger or a standard one.

Other Sources
Oracle Applications Developers Guide - A8370503
http://download-uk.oracle.com/docs/cd/B25516_17/current/html/docset.html

References
Note 744065.1 - Sample CUSTOM Library Code To Customize Applications

Keywords

CUSTOM~LIBRARY ; PERSONALIZATION ; PERSONALIZE ; FORM~PERSONALIZATION ; FORM~CUSTOMIZATION ; CUSTOM.PLL ; FND_FORM_CUSTOM_PROP_LIS


Help us improve our service. Please email us your comments for this document. .

You might also like