OA Framework Screen Extension by Embedding a Custom Page
Written by Anil Passi   
Sunday, 27 May 2007
In this OA Framework training article, you will see step by step Audio-Visual demo to Develop a Custom  screen using OA Framework and you will also see how that Custom Screen can be embedded/integrated within a Standard OA Framework screen, using Personalizations.

There are two options available to embed a Custom Screen into a standard OA Framework Screen:-
Option 1. Use personalization and create new item to reference the Custom Screen
Option 2. Extend the Controller, and programatically add custom bean into the Main Page's bean

For this demo, I will use the Personalization approach, and this should be the preferred approach too.

Important: These are bandwidth hungry video tutorials. If the website is non-responsive, then please visit after couple of hours to retry.

Firstly I will do some Q&A

Is this approach patching/upgrade safe?
Indeed, given that all the development happens within a custom java package. This will be deployed underneath a custom directory of $JAVA_TOP on your server.


Will this be a very long Audio Visual Demo?

Correct, hence I have broken this demo into four different Audio-Video sessions. All the four videos can be accessed from this article.
Obviously, you will need your headphones to follow the audio in these training sessions.


Which version of jDeveloper was used for this demo?
This demo was carried out on 11.5.10 Rollup4/CU4 level. If you wish to know the Metalink Patch Number for this version of jDeveloper, then kindly see the comment section of this link


Steps for this OA Framework Extension demo



Audio Video 1: Understand the business requirements.
In this video you will understand the business requirement, i.e. you will see the standard OA Frameworkk screen into which a custom region must be embedded. In this section, we will also create a custom database table that upon which our Custom Screen will be based.
CLICK HERE FOR THE PART 1 OF OA FRAMEWORK VIDEO DEMO


Audio Video 2: Create various BC4Js for our custom screen, followed by creating EO, VO, AM and a AdvancedTable based Custom screen.
In this section, we will design and develop a screen in OA Framework without writing a single line of code.
The steps are:-
    1. Create BC4J and Entity Object
    2. Create View Object and Entity Object
    3. Create Application Module and attach VO
    4. Create a package to hold Custom Page
    5. Build a custom page within StackLayout  region using Advanced Table Bean of OA Framework
CLICK HERE FOR THE PART 2 OF OA FRAMEWORK VIDEO DEMO


Audio Video 3: Write few lines of code for the Controller.
This code will be written in a manner that makes this custom screen pluggable into the standard OA Framework Screen.
The custom screen will execute query to display data for the current PO Header Id of the standard OA Framework Page.
The steps are:-
    1. Find out the page parameter from standard screen that we can use in Custom Screen
    2. In controller, call a AM method passing it the PO Header Id
    3. In AM, set the where clause of the VO, and execute query for the Current PO Header Id of standard page.
CLICK HERE FOR THE PART 3 OF OA FRAMEWORK VIDEO DEMO


Audio Video 4: Finally, we will embed our custom screen into the Main OA Framework Screen.
Here you will see the steps for personalization, and you will also see this working demo of this tutorial
CLICK HERE FOR THE PART 4 OF OA FRAMEWORK VIDEO DEMO


Comments (21)add
...
written by ajaysingh , May 28, 2007
really good one this video
ajay
...
written by Sharad , May 29, 2007
Hi Anil,

The tutorial was very good. The sync between the audio and video was perfect this time. Can you do a similar kind of stuff for example with Extensions as well?

Thanks,
Sharad.
...
written by Anil Passi , May 29, 2007
Hi Sharad,

I will consider doing that, although I have already covered all possible extensions using typed articles.

Cheers,
Anil Passi
...
written by balkrishna , May 30, 2007
It nice to here from you this Excellent Article After long gap in the writing on we site but the topic u have choose and the presentation is excellent .

Just Keep Going on so that we people get some good knowlege

Thanks
balkrishna
...
written by Abhishek , June 06, 2007
Hi Anil,
Thanks very much for this article, its very helpful. I had a request, I am very new to Jdeveloper and currently working on SSHR. I need to make some code changes in some self service pages. Can you please let me know how to get the pages on my local machine, which all files do we need and from where. And how to open them in Jdeveloper and migrate them back after changes.

Thanks Again!!
Abhishek
...
written by Anil Passi , June 07, 2007
Hi Abhi

1.To get SSHR Pages, go to $PER_TOP/mds on mid-tier
FTP these into jDevhome/myprojects
2. For BC4J and webui etc
FTP all the classes from $JAVA_TOP/per and FTP those into jdevhome/myclasses/oracle/apps/per
3. Ftp all the xml files from $JAVA_TOP/per and FTP those into jdevhome/myprojects/oracle/apps/per
4. Open the BC4J that you wish to extend, by opening server.xml in respective directory
NOTE: You will also need to FTP all the dependent files in case you wish to Unit test your changes from jDev itself

Thanks
Anil Passi
...
written by ramkumar , June 22, 2007
hi anil,

what are all the files we need to download while doing EO or VO or CO or AM extensions.

regards
ram
...
written by Anil Passi , June 22, 2007
Hi Ram,

I guess you wish to extend some BC4J, hence asking the question?

If so, the BC4J that you wish to extend must be FTP. To keep things simple, FTP everything from related directory java_top and then, FTP the dependent objects too. Doign so, you will be able to rebuild and run your extensions within jDeveloper itself

Thanks,
Anil
...
written by Gayathri , September 15, 2007
Hi,

I am working on a customization in which I am required to add two buttons-Accept and Reject.On the click of the Accept the flow should go to another JSP page. On click of the Reject button the flow should move on to a different page.I believe this is a workflow modification and personalization.Can someone help me out.
...
written by Anil Passi , September 15, 2007
Hi Gayatri

I need more information, if you can please specify the page you are trying to extend.

In case you are extending a standard OA Framework page, then you need to extend the controller class. From the controller class, you can do
if pageContext.getParameter("NameOfButton") != null
pageContext.setForwardURL....

Thanks,
Anil
...
written by yaman , September 25, 2007
THE PART 2 OF OA FRAMEWORK VIDEO DEMO and PART 4 OF OA FRAMEWORK VIDEO DEMO are not working
...
written by Peter , September 27, 2007
Hi Anil,
Thanks very much for this article, its very helpful for a new to OA Framework extension, like me. I had a request, and currently working on AR Credit Management (CMGT). I need to add couple new fields into Create Credit Application page (/oracle/apps/ar/creditmgt/application/webui/ARCMCREDITAPPPAGE). The values in the new fields will be inserted or updated in a custom table when use submits the application. Could you please let me know how to extend this, specially how to save these values into the custom table?

Thanks Again!!

Peter
...
written by Anil Passi , September 27, 2007
Hi Peter

Prior to embarking upon extension of the OAF Screen, see if this can be achieved in a conventional manner.

One idea could be
1. Enable DFF on that screen, for those additional fields
The ValueSet against the segment can be used for validation via LOV/poplist
2. Check if there is a business event that is fired, when the record is changed in that OAF Screen.
3. Subscribe to the businness event via pl/sql API, and in the pl/sql subscription of business event transfer values from DFF to custom table.

Thanks,
Anil Passi
PS: Some of the business events you can look at are
oracle.apps.ar.transaction.CreditMemo.complete
oracle.apps.ar.transaction.CreditMemo.incomplete
oracle.apps.ar.transaction.CreditMemo.modify
oracle.apps.ar.applications.CreditMemoApp.apply
oracle.apps.ar.applications.CreditMemoApp.unapply
oracle.apps.okl.cs.issuecreditmemo
oracle.apps.okl.so.creditapplication
oracle.apps.ar.cmgt.CreditRequestRecommendation.implement
oracle.apps.ar.transaction.SalesCredit.delete
...
written by Peter , September 27, 2007
Hi, Anil,

Thanks very much for your quick response.

Could you advice how to enable the DFF on the screen? I checked the base table of Create Credit Application page and the table does not have attribute fields for DFF. Is this mean I cannot use DFF to capture the values user entered?

I'll look at the business event you pointed.

Thanks again!!

Peter
Great
written by Rakesh Sreenivasa , October 06, 2007
Great tutorial
Very Good Article
written by Naveen Sreeramoju , October 09, 2007
Hi Anil,

This is a very good article and thanks for your effort.. smilies/smiley.gif

Regards,
Naveen S
hai Anil
written by loganathan s , October 19, 2007
This website is used for all kind OA framework users.From the beginners side its very usefull.

Thanks,
loganathan s
...
written by karan76 , January 08, 2008
Anil,

First thanks for spending time to help people in need.GREAT JOB.

1). I need help in create a self-service page, in which I need to get assignment_id of the person that logged into the sshr application.

2). Is there some source code available or able to rep some code from seeded self-serivce pages.

3). what is this about extending ? I know personalizations but how does this extensions work.

OA Framework Version 11.5.10.5RUP.
MDS Version 9.0.5.4.89 (build 555)
UIX Version 2.2.24.1.0
BC4J Version 9.0.3.13.97

Jdeveloper Version 9.0.3.5 ( build 1453)
Oa framework value : 11.5.10CU3 ( 903813_1550_4)

Please help
karan
...
written by Madhu Goyal , February 18, 2008
To get SSHR Pages, go to $PER_TOP/mds on mid-tier
FTP these into jDevhome/myprojects
2. For BC4J and webui etc
FTP all the classes from $JAVA_TOP/per and FTP those into jdevhome/myclasses/oracle/apps/per
3. Ftp all the xml files from $JAVA_TOP/per and FTP those into jdevhome/myprojects/oracle/apps/per
4. created work space and project.
how to run this application from jdeveloper before modifying it.
How to add a seeded region from another page?
written by Mike W. , March 12, 2008
Your website is terrific, I've been studying it daily. I hope you can help with a problem I'm having. In IExpense, OIE_AUD_AUDIT_PAGE has a tab with expense lines that have detail buttons for some of the lines. Another page, OIEMAINPAGE, has ExpensesSubTabsRN which shows the same expense lines with detail buttons for all of the lines. I'd like to hide the tab contents on OIE_AUD_AUDIT_PAGE and insert the ExpensesSubTabsRN. I've tried this by doing the personalization steps in AudioVideo 4, but it crashes. The 2 pages use the same AuditReportLinesVO, but OIE_AUD_AUDIT_PAGE has AuditAM, AuditPageCO, and ExpensesTabCO, whereas OIEMAINPAGE has WebExpensesAM and ConfirmationPageCO. Can you give any recommendations on how to proceed?
Thanks again for making such a great website!
Need help! to add custom region to a oracle apps seeded page.
written by Francis , March 14, 2008
Hi Anil,

I went thru the whole training videos fro this customization as I have a very similar task onhand. But this is on one of the iSupplier pages. Below is what I am doing: Any help is appreciated. Thanks in advance.
======================================================= =================
>> I have created a standalone custom region. Meaning, I haven't imported any seeded packages into this project. (All the packages are custom... mycompany.oracle.apps.pos.suppreg.schema.server (EO) and mycompany.oracle.apps.pos.suppreg.server (VO, AM) and mycompany.oracle.apps.pos.suppreg.webui (RN.xml, CO.java))

>> Compiled the region and it works fine on JDeveloper.
>> Imported the custom region into DB using import command successfully.
>> Zipped up all files from /myclasses/mycompany directory and unloaded into $JAVA_TOP on the middle tier.
>> Apache bounced.
>> Logged into Apps, opened up the page and personalized the page:
>>>>> Create new Item of type "FlexLayout" and underneath that layout created another Item of type "FlexLayout Container" and extended the custom region into it.
**** This works fine *** The custom region shows up on the seeded page. But, also comes out with an error:

**********Message not found. Application: FND, Message Name: FND_VIEWOBJECT_NOT_FOUND. Tokens: VONAME = xxSuppRegVO; APPLICATION_MODULE = oracle.apps.pos.suppreg.server.SupplierRegAM;
***********

I checked the "About Page" link and I see that the "FlexLayout" region is pointing to OAFlexibleCO and the "FlexConatinerLayout" is pointing to OAFlexibleContentCO and NOT picking up my custom CO that I created in the project !!!

Do I need to personalize this region to add the custom CO to this custom region ?

OR extend the stand VO and substitute with the custom one?

Or what am I missing ?

Please let me know and Thanks for your help.

FR
You must be logged in to a comment. Please register if you do not have an account yet.

busy