Saturday, May 9, 2009

My OAF Learnings



  • To have a proper layout and all the message components (messageTextInput, messageStyleText) rendered properly, put them under a message layout region.


  • Changes to BC4J object code require complete mid-tier bounce.


  • Advance table component can be used for a dynamice table (run-time addition of columns)


  • To navigate to home page, use OA.jsp?page=/oracle/apps/fnd/framework/navigate/webui/HomePG&homePage=Y


  • Different CSS styles can be found at \myhtml\OA_HTML\cabo\styles. Custom.css can be used to create custom CSS styles and it needs to be then deployed.


  • It is not like that we always need extension to pass runtime parameters from one page to another. We can pass runtime VO attribute values from one page to another using personalization, however for that we should have initialized/executed the VO. Also in that case the UI component used for forwarding (button, link) should have that VO available. One of the example of passing VO attributes runtime using personalization of destination URL is OA.jsp?page=&retainAM=Y&Timecard_id={@TimecardId}&StartTime={@VoPeriodStarts}&StopTime={@VoPeriodEnds}&TimecardApprovalStatus={@StatusCode}


  • While navigating from one page to another through OAF code, use retainAM flag depending upon whether you want to start fresh on next ptage or retain the values of exisiting page.


  • Use the below code in processRequest in case you are using advance table for showing your data and you are not using search panel.




OAAdvancedTableBean tableBean = (OAAdvancedTableBean) webBean.findChildRecursive("TimecardAdvTabRN");





tableBean.queryData(pageContext);







  • The webui xml files can be found at the mds directory of the product top i.e. for PER, it is at $PER_TOP/mds. The other OAF code (class files and xml files for server components) can be found under $JAVA_TOP/oracle/apps/.










  • To share values between controller and BC4J objects, use transaction values. In controller they can be used as oapagecontext.putTransactionValue, oapagecontext.getTransactionValue and oapagecontext.removeTransactionValue. In AM it can be accessed as




OADBTransactionImpl dbTrans = (OADBTransactionImpl)getOADBTransaction();





dbTrans.getValue, dbTrans.putValue.







  • To share values between multiple pages, we can use session parameters which can be used with oapagecontext.putSessionValue, oapagecontext.getSessionValue


  • When an item, link or button raise an action which is used to navigate to new page, the page parameters can be passed to new page from following



  • The error java.sql.SQLException: Missing IN or OUT parameter at index:: 1 can have following reasons

1. Using some VO methods before executing the VO

2. Some database objects used (package) not valid

3. Using same number bind variable (say :2) more than once in query.

1 comment:

Unknown said...

Hi,
Thanks for sharing great information in your blog. Got to learn new things from your Blog . It was very nice blog to learn. Oracle EBS training
Thank you.