This article will show you how to conditionally set property of an item through personalization. Following is a simple business requirement:
The customer wants to make Hold
from Payment/ All Invoices column readonly when the Operating Unit is UK (
Configured in a lookup XXCUST_EXCLUDED_ORGS ).
To implement the above requirement we need to first identify the the page and VO to be extended. For the above requirement following are the page and view object which we have to extend:
Page: /oracle/apps/pos/supplier/webui/QuickUpdatePG
View Object: oracle.apps.pos.supplier.server.SitesVO
Once the objects are identified lets download oracle.apps.pos.supplier.server.SitesVO from $JAVA_TOP to JDEV_USER_HOME/myprojects. Make
sure the transfer mode of the files are as per following modes specified in the table.
File Type
|
Transfer Mode
|
.xml
|
ASCII
|
.class
|
Binary
|
.tar
|
Binary
|
.java
|
ASCII
|
Since there is no VO
attribute available to determine the Site Org against the lookup Org we have to
add the logic inside a custom VO attribute. So VO extension is required in this
scenario.
Add an attribute "isPymtReadOnlyStr"
in the existing query.This column returns 'Y' if there is a match in the
lookup otherwise 'N'. Create a transient attribute "isPymtReadOnly"
of type BOOLEAN.This will
return TRUE if "isPymtReadOnlyStr"
is "Y" otherwise FALSE.
The reason behind adding the
"isPymtReadOnly" is we are setting the item property as
readonly through SPEL.It
will recognize only BOOLEAN.But
SQL query doesn't support BOOLEAN.So
we are building a BOOLEAN attribute from the SQL which will use
in the personalization layer to set the item property.
Steps For VO Extension:
1) Create a new VO xxcust.oracle.apps.pos.supplier.server.XXCUSTSitesVO which extends from oracle.apps.pos.supplier.server.SitesVO.
Make sure the binding style should be same as SitesVO.
Create the XXCUSTSitesVO which same query of SitesVO.Later we will add the
new attribute to XXCUSTSitesVO.
At this point of time all the existing VO attributes are of Updatable property as "Always".
Press Finish without creating XXCUSTSitesVORowImpl.java
2) Select the XXCUSTSitesVO from JDeveloper Application Navigator.
Modify the query and add the extra column.
3) Create a new transient
attribute as follows.
4) Once you modify the query
all the existing attributes Updatable property will change to Never.So revert that property
back to original.
5) Create XXCUSTSitesVORowImpl.java by checking the following check box.
6) Add the following code
snippet in XXCUSTSitesVORowImpl.java
7) Create the substitution for SitesVO as follows.
Following entry will get
created in current jpx file.
<Substitutes>
<Substitute OldName
="oracle.apps.pos.supplier.server.SitesVO" NewName
="xxcust.oracle.apps.pos.supplier.server.XXCUSTSitesVO" />
</Substitutes>
8) Migrate XXCUSTSitesVOImpl.java,XXCUSTSitesVORowImpl.java and XXCUSTSitesVO.xml from desktop to actual instance.
9) Migrate the substitution
using jpximporter.
10) Restart the server and
verify the substitution has done perfectly.
11) Go to /oracle/apps/pos/supplier/webui/QuickUpdatePG and personalize the page.Set the item
read only property to ${oa.SitesVO.IsPymtReadOnly}
12) Click on Apply and in next page click on Return to Application.
Verify your output.
The above substitution can be removed using following script:
BEGIN jdr_utils.deletedocument('/oracle/apps/pos/supplier/server/customizations/site/0/SitesVO'); COMMIT; END;
Some Other Most Useful OAF Tutorials:
- How To Call A Concurrent Program From OA Framework Pages
- How To Call A PL/SQL Procedure From An OAF Page
- How To Change The Header Of An Advance Table Column Dynamically
- How To Create A Submit Button Dynamically In OAF Page
- How To Implement Train In OAF | Implementation Of Train Functionality In OAF
- How To Import Oaf Pages From Unix Server Or Apps server.
- Implement PopList in OA Framework | OAF Tutorials
- Implementation of PPR [Partial Page Rendering] in OAF Page
- OA Framework Interview Questions And Answers - Part1
COMMENTS