Forms Personalization Tutorial

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

Zoom Functionality through Forms Personalization
What is Zoom?

Directly going from one form to another form with click of a button is called zoom functionality in oracle
applications. This can be done in different ways. Firstly, We can just call the second form and then leave it
for user to enter the data. Second way is call the second form from first and then dynamically populate
the data in second form based on first forms data.
How to implement Zoom functionality?
In this tutorial we will zoom from Order Organizer form to Shipping transactions form and also populate
the order number dynamically in destination form.
Know the following things before you start

Know the names of source form and destination form

If you need to populate the data dynamically know what fields that you need to populate.

Global Variables: These variables can be initialized in any form and can be used in any form all over
the applications

Trigger & Action: trigger is an event and action is operation/execution that we do. When an event
occurs we do operation/execution

Source form: Order Organizer form ( )
Destination form: Shipping transactions form (WSHFSTRX)
Source field: Order number ()
Destination field1: Order number low (QM_DLVB.DLVB_SOURCE_HEADER_NUMBER_LO)

DLVB_SOURCE_HEADER_NUMBER_HI) Destination field3: Line Status (QM_DLVB. Initialize the menu/icon in source form Navigation: Order Management Super User > Orders. Returns > Order Organizer .Destination field2: Order number high (QM_DLVB.DLVB_LINE_RELEASED) Process flow:  Initialize the menu/icon in source form  Initialize the global variables  When the menu/icon is clicked copy the order number from source form filed to global variable and then launch the destination form  In the destination form copy the value from global variable to destination form field.


Navigation: Help > Diagnostics > Custom Code > Personalize Follow the screenshots .







Personalization in Destination Form .








Forms personalization call PLSQL procedure Many times we need to execute custom PLSQL procedures and we often choose to create concurrent programs to do that but there are certain cases where we need to use forms personalization to call PLSQL procedure. .

Custom procedure to call from Inventory item Form via Forms personalization.I will take one simple business requirement to help you understand the need for this kind of approach. 3 p_inv_desc VARCHAR2) 4 AS 5 BEGIN 6 INSERT INTO erps_demo_forms_pers VALUES 7 (p_inv_item."ERPS_DEMO_FORMS_PERS" 2 ( "ID" VARCHAR2(100 BYTE). Custom Table Script: 1 CREATE TABLE "APPS". 3 "NAME" VARCHAR2(100 BYTE) 4 ). 1 CREATE OR REPLACE PROCEDURE erps_demo_forms_pers_prc( 2 p_inv_item VARCHAR2. Loging to Apps front end and navigate to Inventory Responsibility. Now having Custom table and custom procedure compiled in database we will move on to front end and personalization to call this procedure. As we don’t want to give our base table MTL_SYSTEM_ITEMS_B table access to agile system we will create a custom table (preferred in custom schema) with limited columns which need to be shared with agile system. 14 END. . 11 EXCEPTION 12 WHEN OTHERS THEN 13 NULL. 10 COMMIT. Let’s say your business has a third party system like Agile to maintain your inventory items but your item creation should start from Oracle Apps. 8 p_inv_desc 9 ).

Navigation: Help > Diagnostics > Custom Code > Personalize . This form being a master form your selection doesn’t matter here in anyway.Navigation: Inventory > Items > Master Items If it prompts for selection of inventory organization select anything as per your preference.

Recommendation: Always limit personalization scope to USER when you are developing so that if something goes wrong you can at least log in as another user and disable it.Enter information as below. .

Navigate to “Actions” Tab and enter the information as shown in screenshot below. .

MTL_SYSTEM_ITEMS.MTL_SYSTEM_ITEMS. 4 ${item.DESCIPTION_MIR.value}||''' ). 5 end' .value}||'''.INVENTORY_ITEM_MIR.Argument: 1 ='declare 2 begin 3 erps_demo_forms_pers_prc('''||${item.

.Save it.

Create new inventory item and save it. Now you should be able to see the item in both standard base table and also in our custom table. Open form again. .Close form.