Documente Academic
Documente Profesional
Documente Cultură
December 2009
All other third party trademarks and registered trademarks are acknowledged.
This is one of a series of White Papers published by Contractors Network Ltd, each one
focussing on a specific aspect of Oracle.
Further copies of this and other White Papers can be obtained free of charge by contacting us
at whitepapers@Oraclecontractors.com or the address below.
If you have found the content of this White Paper interesting and useful, and wish to explore
the subject matter further, we can introduce you to independent experts in this field.
ABO U T C ON T RA CT O RS N ET W O RK ................................................................... 3
INTRODUCTION........................................................................................................ 5
PURPOSE .................................................................................................................. 5
ANALYSIS ................................................................................................................. 6
DESIGN ..................................................................................................................... 6
SUMMARY ............................................................................................................... 14
Contractors Network Ltd is a Global Oracle Contractors Network with primary focus on
Oracle's E-Business Suite.
We are able to offer access to Global Resolution Groups for adhoc work from
as little as 15 minute increments
We provide the only global Oracle specific job search engine with a view of
10,000 + Oracle specific roles.
We interact with over 15,000 client personnel involved with the Oracle E-
Business Suite.
We offer access for training and demonstration of the latest release via an
online Vision environment at no cost.
We exhibit & present at all Regional Oracle Conferences worldwide as well as local Special
Interest Groups.
Senthil has worked on various R12 projects and has good knowledge on OA Framework, ADF,
BPEL, SOA, Web Services. He is currently working on building custom applications using ADF
and integrates with Oracle Application.
If you have any questions of feedback for Senthilkumar please email him on
Senthilkumar.shanmugam@oraclecontractors.com
OAF Personalisation means personalize the user interface (UI) of Oracle Self-Service Web
Applications without modifying any underlying code whereas OA Framework extensibility is
geared to enable customers to add new functionality and override or extend existing business
logic beyond what can be accomplished via personalisation. In short it the programmatic
approach for personalisation.
PURPOSE
In this article I will explain a case study for OAF Personalisation and Extension by analyzing
real time requirement and how we have to use OAF Personalisation and OAF Extension to
meet the requirement.
A customer defined DFF which is defined on the standard Oracle table needs to be enabled in
the Self Service Web Screens.
There are five segments in the DFF. All the segments need to shown in the screens. Out of 5
segments, 4 are mandatory. However there is an exception to this rule. On certain
circumstances (based on a lookup value) these segments are made non mandatory and
defaulted with a value.
ANALYSIS
On analysis, I found that the attribute columns on the standard Oracle table on which the
DFF is defined was not included in the VO(View Object) on which the Self Service Page is
built.
Also, we need to extend the CO (controller) of the page in order to handle the “mandatory”
and “defaulting” with the DFF segments.
DESIGN
OAF Personalisation: Add the DFF field in the Web Screens using OAF Personalisation
Framework.
CO Extension: Handle the mandatory and defaulting values of segments based on the
Lookup Value.
Step 1: VO Substitution
SELECT PosRcvHdrIntfEO.HEADER_INTERFACE_ID,
PosRcvHdrIntfEO.GROUP_ID,
PosRcvHdrIntfEO.PROCESSING_STATUS_CODE,
PosRcvHdrIntfEO.PROCESSING_REQUEST_ID,
PosRcvHdrIntfEO.RECEIPT_SOURCE_CODE,
PosRcvHdrIntfEO.TRANSACTION_TYPE,
PosRcvHdrIntfEO.SHIP_TO_ORGANIZATION_ID,
PosRcvHdrIntfEO.VENDOR_ID,
PosRcvHdrIntfEO.VENDOR_SITE_ID,
PosRcvHdrIntfEO.SHIPPED_DATE,
PosRcvHdrIntfEO.ASN_TYPE,
PosRcvHdrIntfEO.SHIPMENT_NUM,
PosRcvHdrIntfEO.EXPECTED_RECEIPT_DATE,
PosRcvHdrIntfEO.PACKING_SLIP,
PosRcvHdrIntfEO.WAYBILL_AIRBILL_NUM,
PosRcvHdrIntfEO.BILL_OF_LADING,
PosRcvHdrIntfEO.FREIGHT_CARRIER_CODE,
PosRcvHdrIntfEO.FREIGHT_TERMS,
PosRcvHdrIntfEO.NUM_OF_CONTAINERS,
PosRcvHdrIntfEO.COMMENTS,
PosRcvHdrIntfEO.CARRIER_METHOD,
PosRcvHdrIntfEO.CARRIER_EQUIPMENT,
PosRcvHdrIntfEO.PACKAGING_CODE,
PosRcvHdrIntfEO.SPECIAL_HANDLING_CODE,
PosRcvHdrIntfEO.INVOICE_NUM,
PosRcvHdrIntfEO.INVOICE_DATE,
PosRcvHdrIntfEO.TOTAL_INVOICE_AMOUNT,
PosRcvHdrIntfEO.FREIGHT_AMOUNT,
PosRcvHdrIntfEO.TAX_NAME,
PosRcvHdrIntfEO.TAX_AMOUNT,
PosRcvHdrIntfEO.CURRENCY_CODE,
PosRcvHdrIntfEO.PAYMENT_TERMS_ID,
PosRcvHdrIntfEO.PAYMENT_TERMS_NAME,
PosRcvHdrIntfEO.VALIDATION_FLAG,
PosRcvHdrIntfEO.TAR_WEIGHT,
PosRcvHdrIntfEO.TAR_WEIGHT_UOM_CODE,
PosRcvHdrIntfEO.NET_WEIGHT,
PosRcvHdrIntfEO.NET_WEIGHT_UOM_CODE,
PosRcvHdrIntfEO.REMIT_TO_SITE_ID,
NULL FREIGHT_TERMS_DESC
FROM RCV_HEADERS_INTERFACE PosRcvHdrIntfEO
SELECT PosRcvHdrIntfEO.HEADER_INTERFACE_ID,
PosRcvHdrIntfEO.GROUP_ID,
PosRcvHdrIntfEO.PROCESSING_STATUS_CODE,
PosRcvHdrIntfEO.PROCESSING_REQUEST_ID,
PosRcvHdrIntfEO.RECEIPT_SOURCE_CODE,
PosRcvHdrIntfEO.TRANSACTION_TYPE,
PosRcvHdrIntfEO.SHIP_TO_ORGANIZATION_ID,
PosRcvHdrIntfEO.VENDOR_ID,
PosRcvHdrIntfEO.VENDOR_SITE_ID,
PosRcvHdrIntfEO.SHIPPED_DATE,
PosRcvHdrIntfEO.ASN_TYPE,
PosRcvHdrIntfEO.SHIPMENT_NUM,
PosRcvHdrIntfEO.EXPECTED_RECEIPT_DATE,
PosRcvHdrIntfEO.PACKING_SLIP,
PosRcvHdrIntfEO.WAYBILL_AIRBILL_NUM,
PosRcvHdrIntfEO.BILL_OF_LADING,
PosRcvHdrIntfEO.FREIGHT_CARRIER_CODE,
PosRcvHdrIntfEO.FREIGHT_TERMS,
PosRcvHdrIntfEO.NUM_OF_CONTAINERS,
PosRcvHdrIntfEO.COMMENTS,
PosRcvHdrIntfEO.CARRIER_METHOD,
PosRcvHdrIntfEO.CARRIER_EQUIPMENT,
PosRcvHdrIntfEO.PACKAGING_CODE,
PosRcvHdrIntfEO.SPECIAL_HANDLING_CODE,
PosRcvHdrIntfEO.INVOICE_NUM,
PosRcvHdrIntfEO.INVOICE_DATE,
PosRcvHdrIntfEO.TOTAL_INVOICE_AMOUNT,
PosRcvHdrIntfEO.FREIGHT_AMOUNT,
PosRcvHdrIntfEO.TAX_NAME,
PosRcvHdrIntfEO.TAX_AMOUNT,
PosRcvHdrIntfEO.CURRENCY_CODE,
PosRcvHdrIntfEO.PAYMENT_TERMS_ID,
PosRcvHdrIntfEO.PAYMENT_TERMS_NAME,
PosRcvHdrIntfEO.VALIDATION_FLAG,
PosRcvHdrIntfEO.TAR_WEIGHT,
PosRcvHdrIntfEO.TAR_WEIGHT_UOM_CODE,
PosRcvHdrIntfEO.NET_WEIGHT,
PosRcvHdrIntfEO.NET_WEIGHT_UOM_CODE,
PosRcvHdrIntfEO.REMIT_TO_SITE_ID,
NULL FREIGHT_TERMS_DESC,
PosRcvHdrIntfEO.ATTRIBUTE_CATEGORY,
PosRcvHdrIntfEO.ATTRIBUTE1,
PosRcvHdrIntfEO.ATTRIBUTE2,
PosRcvHdrIntfEO.ATTRIBUTE3,
PosRcvHdrIntfEO.ATTRIBUTE4,
PosRcvHdrIntfEO.ATTRIBUTE5,
PosRcvHdrIntfEO.ATTRIBUTE6,
PosRcvHdrIntfEO.ATTRIBUTE7,
PosRcvHdrIntfEO.ATTRIBUTE8,
PosRcvHdrIntfEO.ATTRIBUTE9,
PosRcvHdrIntfEO.ATTRIBUTE10,
PosRcvHdrIntfEO.ATTRIBUTE11,
PosRcvHdrIntfEO.ATTRIBUTE12,
PosRcvHdrIntfEO.ATTRIBUTE13,
PosRcvHdrIntfEO.ATTRIBUTE14,
PosRcvHdrIntfEO.ATTRIBUTE15
FROM RCV_HEADERS_INTERFACE PosRcvHdrIntfEO
Now we need to add a new item to the Web Screens using the personalisation link which is
explained in the screen shot below:
In order to take this VO Substitution and OAF Personalisation to other environments, we can
use the ‘XMLImporter’ Utility provided by Oracle.
In the extended controller we have to get the handle to the DFF and then make the individual
segments mandatory or default the values based on the boolean flag ‘mandatory’.
OADescriptiveFlexBean dffBean =
(OADescriptiveFlexBean)webBean.findIndexedChildRecursive("DescFF");
dffBean.processFlex(pageContext);
if(mandatory)
{
OAMessageLovInputBean segment2 =
(OAMessageLovInputBean)dffBean.findChildRecursive("DescFF1");
if(segment2 != null)
{
segment2.setRequired("yes");
}
....
}
else
{
OAMessageLovInputBean segment2 =
(OAMessageLovInputBean)dffBean.findChildRecursive("DescFF1");
if(segment2 != null)
{
segment2.setText(pageContext,attr2);
}
...
super.processRequest(pageContext, webBean);
}
This Java file needs to be deployed into the custom directory of the Oracle Apps instance
($XXX_TOP for example)
SUMMARY
Hope this article was helpful in understanding the OAF Personalisation and Extension.