Sie sind auf Seite 1von 21

11/24/10 https://support.oracle.com/CSP/main/article?

cmd=sh…

Customization in Oracle Applications [ID 743490.1]

Modified 07-NOV-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

Rate this document


Applies to:
Oracle Order Management - Version: 11.5.9 to 12.0.6

https://support.oracle.com/CSP/main/article?cmd=sh… 1/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
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 read–only 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.

https://support.oracle.com/CSP/main/article?cmd=sh… 2/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
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 customer’s 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.
Oracle’s 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 Developer’s Guide.

CUSTOM Library is used for following purposes


-Zoom
-Logic for generic events
-Logic for product–specific events
-Custom entries for the special menus
-Setting visual attributes

https://support.oracle.com/CSP/main/article?cmd=sh… 3/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
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

https://support.oracle.com/CSP/main/article?cmd=sh… 4/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
Steps To Do
Steps involved in Customization follows:

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

https://support.oracle.com/CSP/main/article?cmd=sh… 5/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
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

https://support.oracle.com/CSP/main/article?cmd=sh… 6/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
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.

https://support.oracle.com/CSP/main/article?cmd=sh… 7/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…

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

https://support.oracle.com/CSP/main/article?cmd=sh… 8/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
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 customer’s 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

https://support.oracle.com/CSP/main/article?cmd=sh… 9/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…

https://support.oracle.com/CSP/main/article?cmd=sh… 10/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
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.

https://support.oracle.com/CSP/main/article?cmd=sh… 11/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…

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

https://support.oracle.com/CSP/main/article?cmd=sh… 12/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
: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 user’s context matches any context of a rule, that rule is executed.

https://support.oracle.com/CSP/main/article?cmd=sh… 13/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…

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':

https://support.oracle.com/CSP/main/article?cmd=sh… 14/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…

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':

https://support.oracle.com/CSP/main/article?cmd=sh… 15/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…

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.

https://support.oracle.com/CSP/main/article?cmd=sh… 16/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
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.

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:

https://support.oracle.com/CSP/main/article?cmd=sh… 17/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
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

https://support.oracle.com/CSP/main/article?cmd=sh… 18/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…

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

https://support.oracle.com/CSP/main/article?cmd=sh… 19/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
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 Developer’s Guide - A83705–03
http://download-uk.oracle.com/docs/cd/B25516_17/current/html/docset.html

References
NOTE:438922.1 - ORDER MANAGEMENT SUITE - USAGE OF CUSTOM LIBRARY CUSTOM.pll
NOTE:743389.1 - Order Management Testcase Repository Library
NOTE:744065.1 - Sample CUSTOM Library Code To Customize Applications
NOTE:744069.1 - Sample Testcase For Using Form Personalization In Oracle Applications

https://support.oracle.com/CSP/main/article?cmd=sh… 20/21
11/24/10 https://support.oracle.com/CSP/main/article?cmd=sh…
Attachments

Custom Library.jpg (28.9 KB)


form personalization1.jpg (112.63 KB)
form personalization3.JPG (80.44 KB)
form personalization4.JPG (77.19 KB)
form personalization5.jpg (17.96 KB)
form personalization6.jpg (15.68 KB)
form personalization7.jpg (28 KB)
form personalization8.jpg (36.33 KB)
form personalization9.jpg (43.42 KB)

Related

Products

Oracle E-Business Suite > Order Management > Order Management > Oracle Order Management

Keywords

FND_FORM_CUSTOM_PROP_LIST; PERSONALIZE; FORM CUSTOMIZATION; FORM PERSONALIZATION;


CUSTOM LIBRARY; CUSTOM.PLL

Back to top

https://support.oracle.com/CSP/main/article?cmd=sh… 21/21

Das könnte Ihnen auch gefallen