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]

No comments:

Post a Comment

How to find all cancel Requisitions

SELECT prha . *   FROM po_Requisition_headers_all prha , po_action_history pah   WHERE      1 = 1        AND pah . object_id ...