Skip to content



Default screen resolution  Wide screen resolution  Increase font size  Decrease font size  Default font size  Skip to content Default color Pink color Green color Green color
This website has now moved to

Forms Personalizations | Print |  E-mail
Written by Anil Passi   
Saturday, 21 April 2007
In this article, I would like to explain different possibilities of Forms Personalizations. Surely before explaining what can be done, first we will touch base upon what exactly it is.

Why was forms personalization  introduced by Oracle in 11.5.10?
1. CUSTOM.pll is a programmatic methodology for extending Oracle Forms, even for trivial tasks.
2. Multiple developers working on same CUSTOM.pll could cause version related headaches

Does Forms Personalization replace CUSTOM.pll?
Not really, however it does provide an alternative to most common activities for which earlier one would use CUSTOM.pll
Forms personalization is driven by the same set of events as that for CUSTOM.pll.
Keep in mind that Oracle Forms Libraries first invoke the Forms Personalization, and then the CUSTOM.pll too for the same set of events.

How do I enable Forms Personalizations?
Enable the personalizations using the Help/Diagnostics menu.

What are the various components of Forms Personalizations?
Different components of Oracle Forms Personalizations are listed below. You begin with recognizing which Triggers/Events that you wish to trap and  under what conditions. The condition can be entered using the syntax as defined in the picture below.

What does the Action Tab do?
Here you will either change form property, or display messages or enable menu etc.

Can I modify SQL Query behind the LOV using Forms Personalizations?
Of course you can. In the below example I am restricting the LOV to less than 3records by introducing where rownum <3 in record group query.
Step 1. Create a new record group
Step 2. Attach the newly created record group to existing LOV in EBS Form.

Can I call a PL/SQL Stored procedure passing it form field variables?
Yes,  using the syntax below.
Note: You can also invoke FORMS_DDL built-in to perform DDL.

Can I call BuiltIn's?
Indeed, as shown below, you can pick  from all the form built-in's as below.

You can also call a form function and pass it parameters using Forms Personalizations

Processing can be aborted if validation were to fail

You can invoke equivalent to app_item_property.set_property.
I am displaying the Required property below, however you can use this option for all supportable properties of app_item_property

You can  initialize a global variable. Initialization code is executed if and only if the global variable does not already exist.
Use global variables for passing variables back and forth between two forms.
Please do not use Global Variables if your logic is restricted to a Single form  itself.

You can assign values to form fields  using global variable.

Using forms personalizations, you can set the Default where clause of the BLOCK too.
Note: Don't forget to reset this clause after your desired operation has been finished. This will facilitate the form to run in standalone mode too.

Ditto for Order by Clause on block.

For displaying messages, you can either enter a plain text, or your message can be displayed from the result of a SQL Statement.

Local variables can be defined and they will be active for throughout the session of the current form.
Use global variables if you wish to share the variable between multiple forms.
Below, just for demo, I am setting the local variable to 0.

In the below picture, I am checking if local variable is 0 then display a message.

You can enable SPECIAL1-15 or MENU1-15, to create new menu entries under the Tool menu.

As seen below, the above two setups have instantiated the new Menu Items

SPECIAL16-30 will create entries under Reports menu
SPECIAL31-45 will create entries under Actions menu

You can capture the click on those newly created menu items by trapping event MENU1 or SPECIAL1 [or whatever you defined]

Comments (92)add
written by gurumurthy , April 21, 2007
hi anil,
This Forms Personalization Presentation is really helpful .could you help me how to get the return value of an Stored procedure or Function .
written by Omkareswar Masala , April 21, 2007
Hi Mr.Anil,
Very useful to me this article.You are giving the lot of information regarding Oracle Apps in your site. I am thankful to you.

Thanks & Regds
written by m.sridhar , April 22, 2007
thanq u very much this article is very good.
written by Rajiv , April 22, 2007
Hi Anil,

Thank you so much for your contribution. Apart from the questions mentioned in ur list, where can I find some more material on HRMS Interview questions?

Thanks in Advance
written by Rakshit , April 23, 2007
Hi Anil,
I tried to put a personalization using WNRI on the quantity field and yes it worked. Now the question is that i tried the same last friday and it did not work for some mysterious reason. I have heard that forms personalization done through this screen in front end is not always stable and may sometimes behave weirdly. Is it True? Thanks a lot for the quick reply.
written by Anil Passi , April 23, 2007
Hi Rakshit

It appears that your personalizations are being over-ridden either by standard Oracle code or something in CUSTOM.pll

As you mentioned, the field gets disabled after you move to quantity field of the next record.

Try to re-enable this in WHEN-NEW-ITEM-INSTANCE of the QUANTITY field itself and also in WNRI

Also, try to open the form and find the code that disables that field. See if any condition is built around and if that can be bypassed my means of FP.

written by Anil Passi , April 23, 2007
Hi Rakshit

Forms personalization[FP] is as consistent as any other form of coding, because internally FP gets translated into a program itself.

Glad to hear that it is working now.

Anil Passi
written by Anil Passi , April 23, 2007
Hi Niraj

Please use the steps listed in URL below

Anil Passi
written by Niraj , April 23, 2007
Amazing....thanks a lot Anil for the initcap solution. Really appreciate it.

written by Joel , April 25, 2007
Hi Anil, I too have an Oracle Apps blog and I was wondering if you can help me with a requirement from one of the readers on my blog. His requirement is that he wishes that when querying a SO in the Sales Order form, the ITEM_DESCRIPTION_MIR value of the SO line would populate automatically to the USER_ITEM_DESCRIPTION field if NULL, and this needs to be done for all lines, if there are many lines on the SO. Here what he has done so far: CONDITION: Trigger Event: When-New-Item-instance Trigger Object: LINE.USER_ITEM_DESCRIPTION CONDITION: :LINE.USER_ITEM_DESCRIPTION is NULL ACTIONS TAB: Seq 10 Property Object Type: Item Target Object: LINE.USER_ITEM_DESCRIPTION PROPERTY NAME: VALUE VALUE: =${item.line.item_description_mir.value} (This works but it requires the user to click on the USER_ITEM_DESCRIPTION field of each line for the value to populate automatically. What is he missing in order for all lines to populate the value from ITEM_DESCRIPTION_MIR to USER_ITEM_DESCRIPTION)? The requirement is : When querying a Sale Order, click on the Line tab, they want the system to automatically populate, for all lines, the ITEM_DESCRIPTION_MIR field value to USER_ITEM_DESCRIPTION field thru Forms Personalization. Any help would be appreciated... Regards, Joel Asselin
written by Prabhakar , April 25, 2007
You are just awesome..the way things have been explained...just unprecedented...kudos!!!

written by Joel , April 26, 2007

Thank you for your prompt and clear response. The information you have on your site is awsome...

Thanks again.
written by anil passi , May 04, 2007
for the record history, in your block add a column named current_record_indicator with appropriate subclass property.

for iproc, if you wish to add further sub-tabs, then add form functions via sub menus

written by BasavanaGowda , May 08, 2007
Hi Anil,
I would like know how to Add the LOV to text field through Forms Personalization..

Thanks in Advance
written by Anil Passi , May 09, 2007
Greetings Gowda

For the error on Execute stored procedure
use syntax ${item.blockname.fieldname.value}
instead of :blockname.fieldname

written by BasavanaGowda , May 16, 2007
Thank u So much Anil for very very quick reply...
please provide me the steps for attaching new LOV(Customized)/Value Set to a text field through custom.pll

written by Anil Passi , May 27, 2007
Hi Robert

Please perform this validation in WHEN-VALIDATE-RECORD. I believe that will guarantee you to display the message.

You can also enable Show Custom Events using Help menu, to see the trigger name that gets transmitted to FP/CUSTOM.pll when the window is getting closed.

However WVR is the ideal candidate for this requirement.

written by Robert , May 30, 2007
Hi Anil,
I would like to clarify my issue. My error message always displays when the combination of the 3 fields are not legitimate. My problem is that the assignment screen closes even after throwing the FORMS_TRIGGER_FAILURE.
1. The user changes data on the assigment screen.
2. The user closes the assignment screen.
3. A seeded message asks if user wants to save the changes.
4. The user responds, Yes.
5. My function finds the changed data not legitimate.
6. The personalization displays a message.
7. The personalization throws FORMS_TRIGGER_FAILURE.
8. The assignment screen closes anyway.
How can I prevent the assignment screen from closing if there is an error. The FORMS_TRIGGER_FAILURE does not prevent the screen from closing. The person screen is displayed and Oracle asks the user to save the changes.

Thanks for your help
written by Robert , May 31, 2007
Hi Anil,
I tried using WHEN_VALIDATE_RECORD but there are many existing records that produce the personalized error message. The users many times want to just browse the records in production and the error message popup slows them down. They prefer to be presented with the error message only when inserting or updating the assignment record. Is there a way to use WHEN_VALIDATE_RECORD but not produce the message unless the user has inserted or updated the record. I am currently using POST_UPDATE and POST_INSERT but I run into the problem I described in my earlier post.
Thanks for your help,
written by Puja , May 31, 2007
In the above URL []
can you please tell the next step how to do and what builtin to use to move the cursor to the first record.
written by Anil PAssi , May 31, 2007
Hi Robert

WHEN-VALIDATE-RECORD must not fire if no changes were done to the record.
Is there anything in POST-QUERY of that block? It is possible that in WHEN-NEW-RECORD-INSTANCE or WHEN-NEW-ITEM or POST-QUERY value in one of the database based fields is being altered.

Hence this causes WVR to fire while scrolling through the records.
Please try to fix the source of the problem, then WVR will not fire unless and until record gets modified.

Thanks, Anil Passi
written by Puja , May 31, 2007
Hi Anil

Thank you very Much for a such quick Reply
God Bless you
But, anil i oath i am confused can u send me a screen shot if possible

written by Anil Passi , June 05, 2007
Hi Priya

Unfortunately currently FP does not permit changing block property for Current Record Visual Attribute. If that were to be allowed, then you could have changed the property depending upon the value of attribute column.

As a workaround, you might try changing Visual Attribute for item instance,against each and every item in the record. However, you will also need to find a way to reset the Visual Attribute after the cursor moves away from current record.

I guess, given the constraints, the best bet is to use CUSTOM.pll for this requirement

Anil Passi
written by Priya Viswantha , June 05, 2007
Hi Anil

Thanks for the reply
Well, as you said above i have changed the visual attribute, I am able to change the background colour of an item in a record. But now the problem is the cursor is not going back to the first record.

God Bless You
Priya Viswantha
written by Srinivas , June 06, 2007
my client want to hide the TaxPayerID (SSN) no. for the suppliers accross all modules PO, AP, payments. so i started creating the new recordgroups for the LOV those displaying the SSN info like supplier name, supplier Number columns on Find purchase order form .....

For those record groups which dont have bind variables i am able to hide the ssn info in the LOV but on the find payments form when i tried to create the record group with the same standard record group that was taken from the form which contains bind variables is not working.

Any help will be appreciated.

Thanks in advance
written by Priya Viswantha , June 14, 2007
Hi Anil,

Thanks for all your help
God Bless You
I did it.
Once agian thanks for your time.
written by Avinash , June 15, 2007
Hi Anil,
I am working on Receivables - Transaction Information DFF, there are about 8 segments in the DFF structure which is referenced to $PROFILE$.ORG_ID (context sensitive). As well there are about 8-10 Receivables responsibilities, which are having Transactions functions.
Out of the 8 segments I want to disable 2 segments to specific responsibilities. How can I achieve this through form personalization? I tried different ways but not able to catch the DFF form and specific segment Item,property on it on ARXTWMAI form.
written by Vamsi , June 18, 2007
I have to call a OA page from form. Can you please provide the steps.....
written by Anil Passi , June 19, 2007
Hi Vamsi

I think the call to fnd_function.execute [i.e. Launch a Function] should wor for OA Page too provided you have registered your OAF Page as a Function.

written by Anil Passi , June 19, 2007
Hi Sudhir

Please see my article on FNDLOAD

written by Manoj , June 22, 2007
Hi Anil,
I have a requirement where based on the value selected for a item numeber in the Purchase Order Screen the DFF value set value must change.
Is this possible using Forms Personilization.
written by Anil Passi , June 22, 2007
Hi Manoj

Create a value set dedicated for that DFF Segment.
In that Value Set of type Table, have a OR condition or a UNion to make its SQL sensitive to the desired field.

Alternately, consider using that that field as the context for DFF.

written by Ravi Thota , June 27, 2007
Dear Anil,

First of all, thank you very much for knowledge input.

Can u explain more on creating RECORD GROUPS and attaching to LOV, to restrict the results.

i have gone thru your documents on FP, but something is missing about creating RECORD Groups since the whole process is explaing in short screens in one page.

Please i will be very thankfull, if u can explain more on it...

Thanks in advance
Ravi kumar thota
written by kiran , June 27, 2007
Hi Anil,

I have got a unique kind of requirement on the ARXTWMAI ( AR -> TRansactions Screen).

1. We have a DFF on TRansaction Headers (Transaction Information) where we capture the Company segment of Acct FF for Deposit Class.

2. Now I have to Duplicate the Value in this DFF into the Segment4 of Accounting FF. we have Rec and Rev Accounting for Deposits.

Can this be achived using FP or any other alternative is there?

Appreciate your help.

written by Mohan , June 27, 2007
Hi Anil,

Thanks a lot for your great explanation.

We have a requirement to create a new LOV based on a Record group, which will display 10 fields. As soon as the user selects a value in the LOV, we should default few other fields.

You explained in the earlier threads that it is not possible through Forms Personalizations. Can we do it using CUSTOM.PLL??

Or is it possible to modify an existing Record group to add couple of additional columns and allow the user to search based on the new columns?

How do we address these kind of requirements?

If we open up the form and create a new LOV, the changes will go off if we apply a patch that has newer version of the form.

Thanks in advance,
written by Anil Passi , June 28, 2007
Hi Mohan

Structure of the Record Group must not change, because you can not define the mappings to LOV columns using FP.

In this case, do the below steps:-
1. Create a Custom form that lets you search on your data and it presents results[10 fields] in Multi Record block
2. using FP in main screen, call that form function via tools menu. Tell users that its going to work via tools menu if they wish to see 10 fields in LOV
3. in the custom form, provide a button to select one of the records. on selection initialize global variables. program this custom form to navigate back to main form after global variables have been set
4. back in main form, assign the values from global variable into main screen, using FP

written by Vamsi , July 10, 2007

My requirement is to call OA page from form with 2 paramters.

As you mentioned above I have created Menu Items and attached function to call OA page......

Can you tell me how to pass parameters ?

I have given paramters like this "InvoiceNumber = :TGW_HEADER.TRX_NUMBER&InvoiceSeqNumber = :TGW_HEADER.ATTRIBUTE4" but when am opening the page it is giving error as "Illegal String passed need to encode it"

Appreciate your help....

written by Marcus , July 12, 2007
Hi Anil,

do you know of a way to create new menu items in the tools menu with PL/SQL?

written by Anil Passi , July 12, 2007
Hi Marcus

Have a look at the fndload lct file that creates menu.
You will find your pl/sql there.

written by veera , August 15, 2007
Hi Anil

I would like to know what queries are used by a perticular form (for ex: PO creation form) when i perform save opertation.

Is there any consolidated help page from oracle where it displays all the operations like search, update etc queries?

written by mv , August 18, 2007
Anil..Really useful site...Good source of contributions from yourself and others...

Question to you now regarding one area of personalization which I am getting confused and not able to get the syntax right...
Using the 'Execute Procedure' builtin, I need to read and assign values from form fields.
for eg: There is a block 'ADDR_SU' with a field name 'TAX_CODE'
I need to write a condition in the procedure that if TAX_CODE is null then set TAX_CODE to be 'Exempt'

I am able to do this using
Target object->ADDR_SU.TAX_CODE
Property Name->VALUE

But would like to know how to handle this from within 'execute procedure' builtin.
I have been reading the SPEL and the R12 doco but I should admit I am just going bonkers getting the syntax right..


written by Ashwathy , August 28, 2007

This site is really good.
I need some help. In the PO form,I need to set the invoice match option to PO when the match approval level is set to 2-way and when it is 3-way i need to set it to receipt.How do i acheive this using forms persnalization?


written by Sridhar A R S , September 01, 2007
Hi Anil

The articles on your site are simply Awesome .We are implementing Oracle HRMS here in Middle east .My question is can we launcgh a URL with parameters at run time through Form personalisation.for example

An ORACLE user is navigating an ORACLE form that is displaying the “annual leave” information of an employee dated 12/11/2006, the parameters to be sent to url are:
a.Employee Number: 1123
b.Document Type: Leaves
c.Document Sub Type: Annual
d.Document Date: 12/11/2006

The button should call the custom integration page; The following HTTP Request will summarize the above:

Thanks in advance

written by Anil Passi , September 01, 2007
Hi Sridhar,

Of course you can.
Register this JSP page as a FUNCTION
This jsp page will reside in OA_HTML
Next, simply use fnd_function, with the syntax detailed in link

The jsp page can be registered as

Do let me know if the jsp page in question is hosted outside of eBusiness Suite environment. In which case I can suggest you a separate approach.

Anil Passi
written by Sridhar A R S , September 03, 2007
Hi Anil

You guessed it right this JSP page is a third party page and resides outside the EBS

Thanks a ton for the above suggestions

written by Sridhar A R S , September 04, 2007

The JSP resides outside the E Business Suite (a third party page) .Please suggest how to call that web url by passing the parameters at runtime like employee number etc ;

thanks a ton for the help

written by Paw , September 05, 2007

I have one issue in sales order form in lines block(other tab).

I added column intmed_ship_to column has lov attached.
i'm selecting intmed_ship_to loke(10072DE).on the basis in another field means
intmed_ship_to_locationshould be apeear like as name.Now i'm using custom.pll
block='line' and event='when-new-item-instance'.
when i select value for intmed_ship_to and click on that item.then location name come,
intmed _ship_to_location is not store in database.

when i again query the same order what i see the same value is appering in intmed_ship_to_location
like intmed_ship_to(10072DE).

Please also let me know can i do this by form personalization.
I already enter this queries ib ur portal

Please help me for this issue

Thanks in advance.

written by Andrew , September 07, 2007
Hi Anil,
I follwed the directions you gave in
"Can I modify SQL Query behind the LOV using Forms Personalizations?"
to overwrite country of birth LOV on the PERWSHRG form with the following SQL:

select v.Description, v.Lookup_Code
from Fnd_Lookup_Values v
Where lookup_Type = 'PQP_US_COUNTRY_TRANSLATE'
And Language = fnd_global.BASE_LANGUAGE
And Enabled_Flag = 'Y'
Order by 1

When applying and navigation back to the person form. The LOV returns no list of values. When running this SQL outside the application, it returns 238 rows. Any ideas on what I am doing wrong.

Thank You for some great documentation
written by Deepak Prabhakar , September 11, 2007
Dear Anil, Can you please suggest how to disable delete button on Oracle standard Toolbar for any oracle form.

Appreciate your any suggestion
written by Suree , September 17, 2007
Hi Anil.

Thanks a lot of such a great article.
I have a question here.

In Action: Building and Builtin Type: Execute a Procedure, I am calling a procedure as below:
l_chr_retcode Varchar2(1000);
l_chr_errbuf Varchar2(1000);
l_chr_out_value Varchar2(1000);
xxx_pkg.xxx_proc(out_chr_errbuf => l_chr_errbuf,
out_chr_retcode => l_chr_retcode,
out_chr_out_val => l_chr_out_value);
Now, in this procedure, I need to assign l_chr_out_value that I got from the procedure call to a form item. There are way of doing it like assigning this to package variable and then assigning the package variable back to the form item. But is there any way that I can direcly assign it to form item?

Warm Regards,
written by Mohan1 , September 26, 2007
Hi Anil,

I have a requirement to calculate Collectable Amount (Amount_due_remaining - amount_in_dispute) in Collections Screen (Advanced Collections). It's a weird looking form and its not like other forms.

Can I use FP to calculate the Collectable Amount at run-time and display it on the screen using one of the DFF attributes???

If yes, where should I write my logic?? Which event should i use to reflect this change on each and every record in Transactions Tab of Collections Form?

I'm not able to capute the when-new-record-instance trigger on the "Transactions" Tab. Also, I'm not able to get the values of Amount_due_remaining and Amount_in_dispute fields for a particular Transaction on Transactions Tab.

Please advise.

IT consultant
written by anjali , October 04, 2007
hi Anil
I want to retrieve a value from a stored procedure during Forms Personalization

In Action: Building and Builtin Type: Execute a Procedure, I am calling a procedure as below:

i dnt know if the code is ok but im getting error from executing this statement
in fact i want to call the procedure and retrieve a value from the procedure and use it back in the form
how can i do that?
ive tried several ways but could not find any
When-Validate-Record getting called multiple times
written by Harshad Poogalia , October 25, 2007
Hi Anil,
I am writing an action on When-Validate-Record on Item Cross References form.
But When I click on save button the When-Validate-Record is getting triggered multiple times, thereby casuing the action (Message in this case) to occur multiple times.

Is there any way to specify that the action be performed only once ?
written by Anil Passi , October 25, 2007
Indeed there is, that is if you raise an form trigger failure.

That can be done using the action described below.

Anil Passi
Changing the DFF(Attribute16) read only in Sales Order Line using Form Personalization
written by Prashanth , October 26, 2007
Is it possible makeing the DFF as read only?
How can we do it.
2nd Screen Shot
written by Sachin Ahuja , October 26, 2007
Hi Anil,

As you have shown in 2nd screen shot that we can enter upto 100 personalization. It's basically sequence should be in the range of 1-100 but we can repeat the sequence number and I guess personalization can also by this can be more than 100.

Please correct me if I am wrong.

Once again thanks for putting such a wonderfull efforts on documents all are almost near to perfection.

Happy Diwali to you in Advance.

Thanks Again...!!!!

Sachin Ahuja
Adding LOV in Satndard Form
written by Mani , October 29, 2007
Hi Anil,
I want to add a new lov for an Item in satndard form.
How to do that...

Adding LOV in Satndard Form
written by Sachin Ahuja , October 29, 2007
Hi Mani,

I think Anil has already covered the point under section below on this page only

Can I modify SQL Query behind the LOV using Forms Personalizations?

Check if this is what you are looking for.


Forms Personalization:: Builtin Type = "Create Record Group from Query"
written by Vinay , October 31, 2007
Hi Anil,

I have gone thru the examples you have given on forms personalization.I got a request to personalize the form and I want to use the Type = "Builtin" and Builtin Type = "Create Record Group from Query" for that form personalization which you have given as an example in the link "".But I could not find Bultin Type = "Create Record Group from Query". I am using version of Oracle Apps.I checked in earlier version 11.5.8 also.But I could not find. May I know by using which version you have given that example and in which versions it is available?

written by Anil Passi , October 31, 2007
Hi Vinay

It certainly works on CU4. This feature was added in a later release of 11.5.10, which explains why this option isn't available for CU2

Anil Passi
CU4 not available to download
written by Vinay , October 31, 2007
Hi Anil,

CU4 is not available to download in metalink. So may I know what is the appropriate patch # to apply. I am planning to personalize the "Reason" field (which is LOV) in the form INVTTMTX.fmb in Inventory module of R11.5.10.2. I will be thankful if you can provide the exact info that we needed.Appreciate your reply.

Entering Multiple Records( Lines) Through form personalization
written by Vivek Jain , November 05, 2007
Hi Anil,

I have been through all your threads on form personalization but couldn't find solution to my problem. I want to enter Lot/Sublot/Qty through FP while receiving goods. The problem is that there can be multiple lot/sublot for the item being received. We normally scan the lot/sublot info from the item barcode and store it in a custom table. Now i want is that when i click on lot entry form it should automatically fill the lot/sublot/qty for that item in the form.

I hope entering multiple records can be done through form personalization.

written by Anil Passi , November 05, 2007
Hi Vivek

You can loop through the records in the table and create multiple records.
See my response to the query raised by Joel on April 25, 2007 [in above thread]

You need to implement something similar to what is described below

Basically, the idea behind this approach is to force a recursive loop.
You make an exit from the recursive loop when all the cursor records have been looped through

Anil Passi
written by Ron , November 09, 2007
I would like to replace a user entered value during a query function. Say the form has a varchar field and the user enters 'ABC' and when the execute query (Ctl/F11), the actual value is 'XYZ'. This hidden value is derived from a standard plsql function. Any idea?
written by Vivek Jain , November 12, 2007
Thanks a lot ANIL. Your solution worked.
Form Personalization
written by S.Kumar , November 19, 2007
Hi Anil,

I am a new learner of Form Personalization.Today I tried to practice
some of them.I tried to get the field values in Purchasing form and
assign it as default value for another field in the form at header level.
For example Agent Name in Po Headers as Po Header Description.
It worked fine.Now I am trying to put the Promised Date in Line Level
as deafult for Need By date.I am facing some Problem.The problem is
After entering the value in Promised date the curosr is automatically moving to
Need By Date and the default value is not getting populated.If i click back in Promised date then the default value is getting populated.Please suggest.Thanks for the Help.
Assiging Value to field
written by Sachin Ahuja , November 19, 2007
Hi Anil,

I have a doubt in performing FP.

I have entered the Order line. Now I'll be calling some procedure which will either return Y or N.

Based on the return value I want to set one attribute on line to this Y or N.

I want all this to happen before line is saved. So I am using FP and trigger When-Validate-Record with Action = Property
Object Type= Item
Target Object=LINE.ATTRIBUTE16
Property Name=Value
Value = *************

Here I am confused how to return the value and assign it to line so that it gets saved when i save my record.

Thanks in advance for your kind help.
Add Button in Supplier Item Catalog is Disabled if Called From PO Form
written by vardhan , December 04, 2007

When I open a catalog form from PO form, Add and Remove buttons are grayed out in the order pad. Is there any way to enable these buttons. But these buttons are enabled when I open the catalog window from Requesition form.

Please help me in this regard.

Calling in-built program unit of the form using Forms Personalization.....
written by sayeed , December 04, 2007
Hi Anil,

Is there any way we can call the inbuilt program unit(package.procedure) of a standard oracle form using forms personalization? I tried the below code for FORMS_DDL and "Execute a Sotred Procedure" builtins but went invain.

Do you think it could be made to work. Any help is highly appreciated.

Form Personalization - can you change the font color of a field?
written by Lucie , December 05, 2007
I am a big fan of your website. Thank you so much for all of your documentation and examples.

Question... I'm trying to change the visual attribute of a field, the font color using form personalization and have not been successful... Have you tried or know how or is it even possible?

Hope you can help.
written by Krishna reddy81 , December 10, 2007
Not able to see the images of the personalizations.
Forms Personalization - FRM-40502: ORACLE error: unable to read list of values
written by AN , December 14, 2007
Hi Anil,

Your website helped me a lot in creating an LOV using Forms Personalization. I am struck up with a problem and I need your advice on this if I am missing some thing. I am using Forms Personalization to create an LOV using builtin. In the Builtin, I have put the sql query under create record group from query. In the query, when I hardcode a value, in a where condition, the LOV works fine but when I replace the hardcoded value with :block.field value, it gives the error, FRM-40502: ORACLE error: unable to read list of values. Below is the part of the sql query where I am facing this issue.
"WHERE related_customer_id = :ORDER.INVOICE_TO_CUSTOMER_ID"
Please get back to me if you have faced with this kind of problem.

Thanks all in advance,

Boolean expression in Personalization Condition
written by Wolfie , December 17, 2007

How can i use a procedure, that returns boolean value, in persinalization condition field?
-- Wolfie
Form Personalization - Order By
written by Gord , December 21, 2007
Hello; I'm trying to order contact names (vendor site form; contact tab) so that inactive contacts are listed at the bottom and active contacts are at the top.
Using the Target Object: CONTACTS I used the Property Name: ORDER_BY and Value: INACTIVE_DATE DESC but this didn't work. Any suggestions?
Thanks in advance.

Defaulting a value in the Confirm Delivery Screen of Shipping Transactions
written by Aravind Gorthy , December 28, 2007
Hi Anil,
I have a requirement in Order Management - Shipping Transactions - in which I need to default the Ship Confirm Rule with a new value based on the responsibility the user gets into. But the Document Set is also attached with this rule and based on this rule the document set should change. When I am trying to do it I dont any errors but dont get even the value populated. I tried using the When new item instance and when new block instance by trying to put forth all the possible conditions in defaulting it to some value. I logged in re-logged in and tried several times but no value is appearing. If I try to restrict it with some particular value for the DLVY_SHIP_CONFIRM_RULE_NAME then I find the app hangs out with some wierd errors. Could you please help me out in putting this straight.

validate record based on other records
written by Vivek Jain , December 28, 2007
Hi anil,

In purchase order lines, i have a DFF with value set as yes/no. What i want is that if there are n lines(records) then only one of them has DFF value as yes and rest of the lines should have value no. I tried using when-validate-record instance but it validates only for the current record and does not compare t with other records. Is there any way we can do it through form personalization

Disable Save Button / Disallow saving a form
written by V V Bhargav , January 05, 2008
Hi Anil,

I am trying to do a forms personalization, for AP (Invoice Batches - Distributions)

The personalization is done for the activity when the user enters invoice through invoice batches, and enters distribution info for each invoice line. and now when the user selects a code combination in the account field it is verified from the account code segment (as to whether it is not a liability account). Now i have restricted the user to move ahead or back in the form, and have also shown him an error message through personalization. But ironically if the user just presses the OK button of the message box, he can still save the record. I dont want the users to save the record after entering restricted account codes

written by Anil Passi , January 05, 2008
Hi VV Bharghav
You need to raise form trigger failure.
Please see a comment above posted on October 25, 2007

Anil Passi
written by V V Bhargav , January 05, 2008
Hi Anil,

I agree for raising the form trigger failure. But the distributions window has many lines. so suppose if didnt have that personalization and the user had entered some few correct lines and some few wrong codes in some lines. how to stop the user from saving.. that is if i put the code in when-validate-record... the trigger will only verify the latest record... will the trigger get fired for all lines in the block.

Please help.

Thanks and regards,
written by Anil Passi , January 05, 2008
Hi Bhargav

WHEN-VALIDATE-RECORD will fire for each record that gets modified. Hence when you raise exception, user will not be allowed to proceed to next record

written by V V Bhargav , January 05, 2008
Thanks a ton dude.

Thanks once again.. it worked.. i had different ideas about when-validate-record.

And by the way i have the same kind of issue but its a bit varied..

like i have done one more personalization in Order management (Sales Orders) form. When you enter the line items for a sales order.. the requirement was that we need to disable the DFF when the user selects an item of the same company but different organization ID.. so when i disable the DFF for the first line with personalization.. and if the user again selects a valid item in the next line.. then the dff which was disabled in the previous line(s) gets enabled again smilies/sad.gif

how to beat that...!!!

Thanks and regards,

V. V. Bhargav
written by Santhosh ND , January 05, 2008
Dear Anil,
I have a basic doubt in Form Personalization.
Level - Function
Trigger Object - ASSIGNMENT
Processing Mode- Not in Enter-Query Mode
Level - Site
in Action Type - Message
Message Type - Error
Message - You have entered a Position Flexfield combination which is already assigned to an employee. Please choose an unassigned Position Flexfield combination.


l_count NUMBER:= 0;

INTO l_count
FROM per_all_assignments_f
WHERE position_id = p_pos_id;

IF l_count >0 THEN

return (9);

Here the error message is coming always ie. whenever the record is querying from db also.
Could u pls suggest one solution to prevent the error message whenever the record is querying.

written by Madhubala , January 13, 2008
Dear Anil,
I have 1 requirement in FP.. I have enable a DFF in Purchase Requisition form at header level.Also 1 DFF with the same name in PO at header level.My requirement is when going thru Autocreate , the value entered in the requisition form should come default in the PO form when using Autocreate. How to do this?
When-validate-Item trigger is getting fired multiple times
written by Maneesha M , January 18, 2008
Hi Anil,
It woud be great if you can help me with this. I'm a beginer in Oracle froms.

I've used when-validate-item trigger to validate the item field there by calling a procedure in it. The procedure is validating and when failed raising an exception which is gettign captured as folows.
if then
WHEN error_location THEN
message('Invalid carton for this transaction, please check carton location.');
raise form_trigger_failure;
end if;
WHEN error_pick_released THEN
message('Order is already Pick Released');
raise form_trigger_failure;
this is the proc which is gettign called in when-validate-item trigger
if then

validate_cc; --Proc given above

end if;
when others then
raise form_trigger_failure;

in the form when the validation fails I do see the error message 'Order is already Pick Released' thrice. The trigger is getting fired thrice. When the validation fails the control it movign back tot eh same field and it gets fired again i guess..How can I overcome this.


Disable the attachment in Supplier form
written by Joel , February 05, 2008
Good morning Anil,
Would you be able to show me how to disable the attachment icon in the Supplier form using form Personalization?. I need to make unavailable for a group of users.

Best regards,
Joel Asselin
Call procedure with out parameter using forms personalizations
written by silpa , February 07, 2008
Hi Anil

I need to call a pocedure with out parameter using forms personalization and based on the value of the out parameter need to do some more validations.
Can you tell me how this can be done?
or do we have to use custom.pll only??

Thanks & Regards

Adding Sub Menus in Forms Personalization
written by Sanjay Bhatia , February 13, 2008
Hi Anil,
Is it possible to add Sub Menu's under the Tools Menu using Forms Personalization. For eg under Tools if I have Menu 1, can I have Sub Menu 1, Sub Menu 2 etc under Menu1.


Requires to fire a triggen when standard menu item is clicked
written by Ravi Nuka , February 15, 2008
Hi Anil,
I want to fire a form block level trigger when the user clicks on one of the menu item which is a standard menu item but not custom menu item. I am able to add a new menu item which is custom menu item and fire the trigger when the new custom menu item is clicked but im unable to fire the trigger when it is for standard menu item ( for me its "Actions" menu item in the form). How can I handle this through personalization.
Flexfield definition update
written by kris , February 28, 2008

Is it possible to update a key flexfield definition through personalization (like with custom.pll)?
I would only need to update the where_clause:

I searched, but found nothing i could use.

Keep the good work.
Kind Regards,

oracle Internet expenses
written by aaron , March 05, 2008
Hi Anil,
one of my requirement is to hide the location field in the oracle internet expenses page(the screen user uses to enter their expenses). Is it possible to achieve it using forms personalization?

i hope you will help me

Thanks for your help.

written by Anil Passi , March 05, 2008

For Internet Expenses, you need to use OA Framework personalizations.
Forms Personalization is not applicable in this case

Functional COn
written by Ali Khan , March 23, 2008
Hi Anil,

Nice page here, very helpful.
I faced the same issue as in '...written by Joel , April 25, 2007 ' above.
The only difference is that mine is in Receiving-Receipts form of PURCHASING.
I want to stamp the RECEIPT NUMBER of HEADER block into each line of RECEIVING TXN block.
For this I used POST INSERT and action PROPERTY to update the value of ATTRIBUTE1 to the HEADER.RECEIPT_NUM's value.
But the problem is this happens only for 1 line incase of multiple lines its for the last one being enetered. How can I achieve to update all for all the lines.

please help its kindof urgent,

Thanks and Regards
Ali Khan
You must be logged in to a comment. Please register if you do not have an account yet.