<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CU8HQ3k_fyp7ImA9WhRWEU4.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406</id><updated>2011-12-28T20:43:52.747-08:00</updated><category term="http://garethroberts.blogspot.com/2008/01/changing-default-layout-format-from-pdf.html" /><title>Become Oracle Apps Technical By || Kamlesh Nikhade</title><subtitle type="html">This blog is the daily experiences and learnings of myself as a Oracle Applications Consultant and Implementor.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://oracleappsexperience.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/BecomeOracleAppsTechnicalByKamleshNikhade" /><feedburner:info uri="becomeoracleappstechnicalbykamleshnikhade" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUEFSXoyeSp7ImA9WxBUEEU.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-5090025909880844197</id><published>2010-02-24T23:17:00.000-08:00</published><updated>2010-02-24T23:40:18.491-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-24T23:40:18.491-08:00</app:edited><title>My Favourite Links</title><content type="html">OA Framework&lt;br /&gt;===============&lt;br /&gt;http://oracle.anilpassi.com/oa-framework.html&lt;br /&gt;http://oracle.anilpassi.com/xmlimporter-in-oracle-applications-framework.html&lt;br /&gt;http://apps2fusion.com/at/61-kv/317-oa-framework-page-without-login-guest-no-security&lt;br /&gt;http://www.orafaq.com/wiki/JDeveloper&lt;br /&gt;http://oracle.anilpassi.com/jdr-utils.html&lt;br /&gt;http://oracle.anilpassi.com/oa-framework-tutorials-training.html&lt;br /&gt;http://www.dulcian.com/papers/MAOP-AOTC/2002/Don'tBeAMuggle.htm&lt;br /&gt;http://www.dulcian.com/papers/OracleOpenWorld/2002/What%20You%20Need%20to%20Know%20Before%20Building%20Applications%20with%20JDeveloper%209i.htm&lt;br /&gt;http://apps2fusion.com/apps/oa-framework/14-fwk/151-oa-framework-screen-extension-by-embedding-a-custom-page&lt;br /&gt;http://oracle.anilpassi.com/oa-framework-tutorial-01-2.html&lt;br /&gt;http://oracle.anilpassi.com/oa-framework-table-based-screen-2.html&lt;br /&gt;http://www.dbforums.com/oracle/1630066-jdeveloper-resolving-errors-encountered.html&lt;br /&gt;http://appstechnical.blogspot.com/2007/01/oa-framework-tutorials.html&lt;br /&gt;http://oraclearea51.com/oracle-technical-articles/oa-framework/oa-framework-beginners-guide/322-exporting-oa-page-definitions.html&lt;br /&gt;http://oraclearea51.com/oracle-technical-articles/oa-framework/oa-framework-beginners-guide.html&lt;br /&gt;http://www.oracle.com/technology/products/jdev/tips/muench/designpatterns/index.html&lt;br /&gt;http://www.oracle.com/technology/pub/articles/vohra-jdev-xmlpub.html&lt;br /&gt;http://mukx.blogspot.com/2010/01/upload-file-to-application-server-using.html&lt;br /&gt;http://blog.cholaconsulting.com/search/label/OA%20Framework&lt;br /&gt;http://sabersurge.com/oracleappsdev/index.php?option=com_content&amp;view=article&amp;id=54%3Afile-upload-to-database-server-oa-framework&amp;catid=34%3Aoa-framework&amp;Itemid=1&lt;br /&gt;http://www.tier1inc.com/blog_comments.php?pid=12-----Comparing OA Framework with Forms 6i&lt;br /&gt;http://oracle-applications-rama.blogspot.com/2009/01/how-to-search-apps-documents-in-google.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Oracle Forms Web&lt;br /&gt;Upload, edit and download files from/to the database with the&lt;br /&gt;Webutil library&lt;br /&gt;================================&lt;br /&gt;http://sheikyerbouti.developpez.com/webutil-docs/Webutil_store_edit_docs.htm&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Check Java Version&lt;br /&gt;===============&lt;br /&gt;http://java.com/en/download/installed.jsp?jre_version=1.6.0_07&amp;vendor=Sun+Microsystems+Inc.&amp;os=Windows+2000&amp;os_version=5.0&lt;br /&gt;&lt;br /&gt;Linux Commands&lt;br /&gt;===============&lt;br /&gt;http://www.ss64.com/bash/&lt;br /&gt;http://teachmeoracle.com/unixa.html&lt;br /&gt;http://www.nixblog.org/post/2008/03/14/UNIX-ID-ORACLE-SESSION&lt;br /&gt;http://www.unix.com/shell-programming-scripting/84635-unix-script-detect-new-file-entry-directory.html&lt;br /&gt;&lt;br /&gt;Register Shell Scripts As Concurrent Program&lt;br /&gt;===================================&lt;br /&gt;http://www.notesbit.com/index.php/scripts-oracle/oracle-applications-steps-to-register-shell-script-as-a-concurrent-program/&lt;br /&gt;&lt;br /&gt;UTL_FILE_DIR&lt;br /&gt;======================&lt;br /&gt;http://oracleappstechnology.blogspot.com/2008/03/minimize-usage-of-utlfiledir.html&lt;br /&gt;&lt;br /&gt;Oracle Applications&lt;br /&gt;===============&lt;br /&gt;http://becomeappsdba.blogspot.com/&lt;br /&gt;http://www.ddbcinc.com/askDDBC/&lt;br /&gt;http://beginapps.blogspot.com/2007_09_01_archive.html&lt;br /&gt;http://knoworacle.wordpress.com/tag/apps-table/&lt;br /&gt;http://appsdba4u.blogspot.com/2007/08/oracle-apps-dba-interview-questions.html&lt;br /&gt;http://cnubandi.blogspot.com/&lt;br /&gt;http://idbasolutions.com/category/papers/3480000-115102/3480000-final-run/&lt;br /&gt;http://becomeappsdba.blogspot.com/2006/08/startup-shutdown-apps-services.html&lt;br /&gt;http://oracleappss.blogspot.com/2008/07/supplier-additional-information.html&lt;br /&gt;http://erp-consultancy.blogspot.com/2008/03/tds-flow-in-accounts-payable-oracle.html&lt;br /&gt;http://etrm.oracle.com/license/MustLogin.html&lt;br /&gt;http://oracle-magic.blogspot.com/2007/06/concurrent-request-and-its-database-sid.html&lt;br /&gt;http://oracle-applications-rama.blogspot.com/&lt;br /&gt;http://www.oracleappshub.com/11i/purchase-order-approval-hierarchy/&lt;br /&gt;http://confluentminds.com/Trainings/SCM/Topic1.1_Ch1_Part4.html&lt;br /&gt;http://forums.oracle.com/forums/thread.jspa?threadID=457983&lt;br /&gt;http://download.oracle.com/docs/cd/A60725_05/html/comnls/us/alr/multins.htm&lt;br /&gt;http://oracle.ittoolbox.com/groups/technical-functional/oracle-apps-l/&lt;br /&gt;http://www.aboutoracleapps.com/2007/07/oracle-purchasing-po-faq.html&lt;br /&gt;http://forums.oracle.com/forums/thread.jspa?threadID=664806&amp;tstart=0&lt;br /&gt;http://oracle.anilpassi.com/technical-interview-questions-in-oracle-apps.html&lt;br /&gt;http://www.oracleappshub.com/accounts-receivable/ar-back-to-basictechnical-foundation/&lt;br /&gt;http://www.oracleappshub.com/aol/setting-default-to-excel-for-exported-file-from-file-export/&lt;br /&gt;http://asoracle.blogspot.com/2007/11/key-tables-financials.html&lt;br /&gt;http://oracle.ittoolbox.com/groups/technical-functional/oracle-apps-l/switch-responsibility-icon-on-toolbar-283079&lt;br /&gt;http://oracle.anilpassi.com/forms-personalizations.html&lt;br /&gt;http://www.erpschools.com/Oracle_Apps_Form_Customization.asp&lt;br /&gt;http://www.erpschools.com/&lt;br /&gt;http://realworldoracleapps.blogspot.com/search/label/Welcome%20Note&lt;br /&gt;http://oracleappsrealworld.blogspot.com/&lt;br /&gt;http://mastanreddy.blogspot.com/&lt;br /&gt;http://www.scribd.com/doc/3256741/Oracle-Applications-Developers-Guide&lt;br /&gt;http://garethroberts.blogspot.com/2007/10/excel-file-output-from-oracle.html&lt;br /&gt;http://garethroberts.blogspot.com/2008/01/changing-default-layout-format-from-pdf.html&lt;br /&gt;http://erpcrmapps.blogspot.com/2008/01/using-keyboard-shortcuts.html&lt;br /&gt;http://www.hrmsaces.co.uk/ubbthreads.php/forums/8/1&lt;br /&gt;http://bbs.erp100.com/archiver/tid-36506.html&lt;br /&gt;http://edelivery.oracle.com/EPD/WelcomePage/get_form?ARU_LANG=US&lt;br /&gt;http://oraclepitstop.wordpress.com/2007/04/18/versions-of-components-in-oracle-apps/&lt;br /&gt;http://www.aboutoracleapps.com/2007/08/oracle-general-ledger.html&lt;br /&gt;http://oracle.anilpassi.com/oracle-payroll-tables.html&lt;br /&gt;http://confluentminds.com/Trainings/SCM/Topic2.3_Ch2_Part2.html&lt;br /&gt;http://aksenthil.blogspot.com/&lt;br /&gt;http://knoworacle.wordpress.com/category/oracle-applications-technical/oracle-fixed-assets-technical/&lt;br /&gt;https://metalink.oracle.com/&lt;br /&gt;http://solutionbeacon.blogspot.com/2007/07/simple-tutorial-for-publishing-fsg.html&lt;br /&gt;http://sbllc3.solutionbeacon.net/pls/a159vis2/fndgfm/fnd_help.get/US@PSA_US/fnd/@e_cp&lt;br /&gt;http://apps2fusion.com/apps/oracle-hrms/oracle-hr/hrms&lt;br /&gt;http://oracle.anilpassi.com/creating-customer-address-in-tca-step-by-step.html&lt;br /&gt;http://www.aboutoracleapps.com/2007/07/oracle-apps-manufacturingaolforms.html&lt;br /&gt;http://forums.oracle.com/forums/thread.jspa?threadID=590547&lt;br /&gt;(All In one Blog) http://www.sap-img.com/oracle-database/oracle-application-hints-and-tips.htm&lt;br /&gt;http://www.dba-oracle.com/art_dbazine_conc_mgr.htm&lt;br /&gt;http://dineshnair.wordpress.com/&lt;br /&gt;http://oracle.anilpassi.com/basic-concepts-list-of-useful-oracle-apps-articles-2.html&lt;br /&gt;http://chandramatta.blogspot.com/search/label/Concurrent%20Programs------Very Useful Blog for all Topics&lt;br /&gt;&lt;br /&gt;Interfaces&lt;br /&gt;===========&lt;br /&gt;(AR Customer Interface Info.)&lt;br /&gt;http://sbllc3.solutionbeacon.net/pls/a159vis2/fndgfm/fnd_help.get/US@PSA_US/ar/@n_tbl_val@PSA_US&lt;br /&gt;http://download-west.oracle.com/docs/cd/A60725_05/html/comnls/us/ar/cusimprt.htm#n_cust_import&lt;br /&gt;http://download.oracle.com/docs/cd/A60725_05/html/comnls/us/ar/autoin05.htm#n_autoval&lt;br /&gt;http://www.erpschools.com/apps/oracle-applications/Articles/General/Interfaces-and-Conversions-in-Oracle-Applications/index.aspx&lt;br /&gt;(Payables)&lt;br /&gt;http://sbllc3.solutionbeacon.net/pls/a159vis2/fndgfm/fnd_help.get/US@PSA_US/AP/@r_openaud@PSA_US&lt;br /&gt;http://irep11i10.oracle.com/OA_HTML/OA.jsp?page=/oracle/apps/fnd/rep/webui/OpenInterfaceDetailsPG&amp;CategoryValue=F&amp;_ti=199580375&amp;retainAM=Y&amp;addBreadCrumb=Y&amp;oapc=7&amp;oas=biKg9_cvMvUQM4gNQIA6ug..&lt;br /&gt;( Customer Interface Error Code Meaning )&lt;br /&gt;http://sbllc3.solutionbeacon.net/pls/a159vis2/fndgfm/fnd_help.get/US@PSA_US/ar/@custerrs@PSA_US&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FND LOAD&lt;br /&gt;===========&lt;br /&gt;http://oracle.anilpassi.com/fndload-for-oracle-web-adi.html&lt;br /&gt;&lt;br /&gt;R12 Vision Instance Login&lt;br /&gt;=======================&lt;br /&gt;http://vis1200.solutionbeacon.net/OA_HTML/RF.jsp?function_id=1032924&amp;resp_id=-1&amp;resp_appl_id=-1&amp;security_group_id=0&amp;lang_code=US&amp;params=gEzpj7eR1-rfQLgP8Ol8DQ3u3xBOeCmcdxx.JgrY94g&amp;oas=-Q6TtBxoQEySwZJoZFr0Fw..&lt;br /&gt;&lt;br /&gt;General &lt;br /&gt;==============&lt;br /&gt;http://www.httpsurf.com/&lt;br /&gt;http://www.webindia123.com/history/index.html&lt;br /&gt;http://download.oracle.com/docs/cd/A57673_01/DOC/api/doc/PC_22/ch02.htm&lt;br /&gt;http://www.wapuser.co.cc/2009/12/how-to-hack-others-yahoo-password.html&lt;br /&gt;http://www.osun.org/&lt;br /&gt;http://oracle-applications-rama.blogspot.com/2009/01/how-to-search-apps-documents-in-google.html&lt;br /&gt;&lt;br /&gt;Oracle Apps Data Structure &lt;br /&gt;=======================&lt;br /&gt;http://www.scribd.com/doc/404946/Oracle-Apps-Data-Structure&lt;br /&gt;&lt;br /&gt;Oracle Apps Scripts&lt;br /&gt;=================&lt;br /&gt;http://www.erpschools.com/Oracle_Apps_Scripts.asp&lt;br /&gt;http://www.erpschools.com/&lt;br /&gt;http://scripts4oracle.blogspot.com/&lt;br /&gt;&lt;br /&gt;Metalink Notes&lt;br /&gt;===============&lt;br /&gt;http://teachmeoracle.com/metalink.html&lt;br /&gt;http://www.oracle.com/technology/tech/globalization/index.html&lt;br /&gt;&lt;br /&gt;Orcale DB Concepts&lt;br /&gt;===============&lt;br /&gt;http://www.adp-gmbh.ch/ora/concepts/&lt;br /&gt;&lt;br /&gt;Autoconfig&lt;br /&gt;===============&lt;br /&gt;http://becomeappsdba.blogspot.com/2006/10/autoconfig-in-apps-template-files.html&lt;br /&gt;http://onlineappsdba.com/index.php/2008/01/28/autoconfig-in-oracle-apps-11i-r12-12i/&lt;br /&gt;&lt;br /&gt;TroubleShooting Concurrent Managers&lt;br /&gt;================&lt;br /&gt;http://becomeappsdba.blogspot.com/2006/10/troubleshooting-concurrent-managers.html&lt;br /&gt;&lt;br /&gt;NLS Language Parameters&lt;br /&gt;===================&lt;br /&gt;http://it.toolbox.com/wiki/index.php/ORA-12700#NLS_Parameters&lt;br /&gt;http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm#_Toc110410543&lt;br /&gt;&lt;br /&gt;Trace Concurrent Request and Generate TKPROF&lt;br /&gt;=======================&lt;br /&gt;http://knoworacle.wordpress.com/2008/06/27/tkprof-trace-a-program/&lt;br /&gt;&lt;br /&gt;How to find Processes running in Sunsolaris Operating System&lt;br /&gt;=================================================&lt;br /&gt;http://www.unix.com/sun-solaris/25208-how-find-number-processes.html&lt;br /&gt;&lt;br /&gt;Character Set &lt;br /&gt;===================&lt;br /&gt;http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14225/ch11charsetmig.htm&lt;br /&gt;http://download.oracle.com/docs/cd/B10500_01/server.920/a96529/ch2.htm#745&lt;br /&gt;http://download.oracle.com/docs/cd/B28359_01/server.111/b28298/applocaledata.htm#i634428&lt;br /&gt;http://www.oracledba.co.uk/tips/character_set.htm&lt;br /&gt;&lt;br /&gt;ASCII Characters&lt;br /&gt;===================&lt;br /&gt;http://www.alcyone.com/max/reference/compsci/ascii.html&lt;br /&gt;http://www.oracle.com/technology/obe/obe9ir2/obe-nls/localbld/localbld.htm&lt;br /&gt;&lt;br /&gt;Oracle SMS Getway Guide&lt;br /&gt;=====================&lt;br /&gt;http://www3.ozekisms.com/index.php?ow_page_number=166&lt;br /&gt;&lt;br /&gt;Hindustan Times Corporate News&lt;br /&gt;======================&lt;br /&gt;http://www.hindustantimes.com/ListingPage/ListingPage.aspx?Category=Chunk-HT-UI-BusinessSectionPage-Corporate&amp;SectionName=BusinessSectionPage&amp;BC=CorporateNews&lt;br /&gt;&lt;br /&gt;MS Word Mail Merge Tutorial&lt;br /&gt;=======================&lt;br /&gt;http://personal-computer-tutor.com/mailmerge.htm&lt;br /&gt;http://www.frontpage2002.com/frontpage_2003_tutorial_guide.htm&lt;br /&gt;&lt;br /&gt;How to start perticular Concurrent Manager&lt;br /&gt;============================&lt;br /&gt;http://teachmeoracle.com/forum/viewtopic.php?t=4320&lt;br /&gt;&lt;br /&gt;Company Profile &amp; Overview&lt;br /&gt;==========================&lt;br /&gt;http://info.shine.com/company/Infosys-Technologies-Ltd/102.aspx&lt;br /&gt;&lt;br /&gt;Letter Generation using WEB-ADI&lt;br /&gt;=============================&lt;br /&gt;http://apps2fusion.com/at/38-ss/351-generate-recruitment-letters-web-adi&lt;br /&gt;&lt;br /&gt;Oracle HRMS Fast Farmula Tutorial&lt;br /&gt;=============================&lt;br /&gt;http://www.aboutoracleapps.com/2008/11/oracle-hrms-fast-formula-tutorial.html&lt;br /&gt;http://oracle.anilpassi.com/index.php?Itemid=4&amp;id=117&amp;option=com_content&amp;show=1&amp;task=view&lt;br /&gt;http://www.erpschools.com/Apps/oracle-applications/articles/hrms/fast-formulas-in-hrms/index.aspx&lt;br /&gt;http://www.aboutoracleapps.com/2009/01/how-to-generate-develop-or-edit.html&lt;br /&gt;&lt;br /&gt;Oracle Workflow&lt;br /&gt;========&lt;br /&gt;http://oracleappstechnology.blogspot.com/2008/02/workflow-mails-not-moving-after-fresh.html&lt;br /&gt;http://forums.oracle.com/forums/thread.jspa?messageID=2327979&lt;br /&gt;http://apps2fusion.com/at/gt/tc/328-workflow-mailer-debugging-script-for-debugging-emails-issues&lt;br /&gt;http://onlineappsdba.com/index.php/2008/07/16/oracle-workflow-notification-mailer-outbound-processing/&lt;br /&gt;http://oracleebusinesssuite.wordpress.com/2008/10/18/debugging-the-approval-workflow-for-purchase-order-or-purchase-requisition/&lt;br /&gt;http://oracle.anilpassi.com/workflows-business-events-training-lesson-4.html&lt;br /&gt;http://oracleappstechnology.blogspot.com/2008/05/disable-retention-on-workflow-queues.html&lt;br /&gt;http://www.freelists.org/post/ora-apps-dba/EXPIRED-messages-in-the-WF-NOTIFICATION-OUT-queue-THE-SOLUTION&lt;br /&gt;https://csslxa03.hkcss.org.hk:16298/OA_HTML/oam/helpdoc/oam_wfoam_notificationmailerg.htm&lt;br /&gt;http://arunrathod.blogspot.com/2008/08/workflow-wfload-through-unix.html&lt;br /&gt;http://oracle.anilpassi.com/apps-technology/2.html&lt;br /&gt;http://www.erpschools.com/Oracle_Applications_Workflow_Launching.asp&lt;br /&gt;http://www.erpschools.com/Oracle_Applications_Workflow_Tutorial.asp&lt;br /&gt;http://oracleebusinesssuite.wordpress.com/2008/10/18/debugging-the-approval-workflow-for-purchase-order-or-purchase-requisition/&lt;br /&gt;&lt;br /&gt;AME &lt;br /&gt;======&lt;br /&gt;http://greenoracleapps.blogspot.com/&lt;br /&gt;&lt;br /&gt;Make Packages Valid&lt;br /&gt;====================&lt;br /&gt;http://idbasolutions.com/3480000-115102-first-run/&lt;br /&gt;&lt;br /&gt;DB Upgrade Context File Creation&lt;br /&gt;=========================&lt;br /&gt;http://forums.oracle.com/forums/thread.jspa?threadID=672921&amp;tstart=0&amp;messageID=2612978&lt;br /&gt;&lt;br /&gt;Oracle PL/SQL SMS&lt;br /&gt;===========================&lt;br /&gt;http://forums.oracle.com/forums/thread.jspa?messageID=1827704&lt;br /&gt;http://www.dbasupport.com/forums/archive/index.php/t-24763.html&lt;br /&gt;http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:839412906735&lt;br /&gt;http://www.erpschools.com/Apps/oracle-applications/Interview-Questions/Tools/PL-SQL/default.aspx&lt;br /&gt;&lt;br /&gt;Oracle Apps DBA&lt;br /&gt;============================&lt;br /&gt;http://www.teachmeoracle.com/imptables.html&lt;br /&gt;http://www.dba-oracle.com/art_tr_dyn_sga.htm&lt;br /&gt;http://download.oracle.com/docs/cd/A60725_05/html/comnls/us/alr/multins.htm&lt;br /&gt;http://blogs.oracle.com/gverma/2007/11/accrue_economically_dont_recal.html&lt;br /&gt;http://becomeappsdba.blogspot.com/2007/01/change-oracle-apps-password-fndcpass.html&lt;br /&gt;http://oracleappstechnology.blogspot.com/2007/07/query-to-find-out-your-atgpfh-rollup.html&lt;br /&gt;http://onlineappsdba.blogspot.com/2008/06/personalizing-login-page.html&lt;br /&gt;http://www.oracleutilities.com/&lt;br /&gt;http://www.shutdownabort.com/&lt;br /&gt;http://www.dbatoolz.com/sql-scripts&lt;br /&gt;http://krackoracle.blogspot.com/2009_02_01_archive.html&lt;br /&gt;&lt;br /&gt;Insert BOB Object (Image) in Database and Display In Report 6i&lt;br /&gt;===============================================&lt;br /&gt;http://sureshvaishya.blogspot.com/2009/08/insert-blob-image-file-into-database.html&lt;br /&gt;http://oracleappsexperience.blogspot.com/&lt;br /&gt;&lt;br /&gt;Tunning Oracle Reports&lt;br /&gt;==========================&lt;br /&gt;http://download.oracle.com/docs/cd/B10464_05/bi.904/b13673/pbr_tune.htm#i1007365&lt;br /&gt;&lt;br /&gt;FSG Reports&lt;br /&gt;=======================&lt;br /&gt;http://www.oracleappshub.com/finance/fsg-what-is-it/&lt;br /&gt;&lt;br /&gt;XML / BI Publisher&lt;br /&gt;======================&lt;br /&gt;http://www.oracleappshub.com/xml-publisher/migration-of-xmlpub-templates-and-data-definitions-across-instances/#more-1084&lt;br /&gt;http://blogs.oracle.com/xmlpublisher/2007/05/howto_java_concurrent_programs.html&lt;br /&gt;http://blogs.oracle.com/xmlpublisher/templates/templates_rtf/&lt;br /&gt;http://asun.ifmo.ru/docs/XMLP/help/en_US/htmfiles/B25951_01/T421739T421827.htm&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oracle.anilpassi.com/oa-framework.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-5090025909880844197?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Z0q-WsJ_fkyFuJv1PUkKaFOKqr4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z0q-WsJ_fkyFuJv1PUkKaFOKqr4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Z0q-WsJ_fkyFuJv1PUkKaFOKqr4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z0q-WsJ_fkyFuJv1PUkKaFOKqr4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/rgeI4t9840c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/5090025909880844197/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2010/02/my-favourite-links.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/5090025909880844197?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/5090025909880844197?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/rgeI4t9840c/my-favourite-links.html" title="My Favourite Links" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>5</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2010/02/my-favourite-links.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQESHcycCp7ImA9WxBWF0w.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-2194022050212545106</id><published>2010-02-09T04:22:00.000-08:00</published><updated>2010-02-09T04:25:09.998-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-09T04:25:09.998-08:00</app:edited><title>Delete Records from Table (OA Page )</title><content type="html">Step 1 :&lt;br /&gt;&lt;br /&gt;Create method in application module as&lt;br /&gt;&lt;br /&gt;public void deleteitemMethod(String pAction,String pEntityCode)&lt;br /&gt; {&lt;br /&gt;    &lt;br /&gt;   /*System.out.println("xxDebug Inside deleteItemMethod());*/&lt;br /&gt;   XxTest01ViewImpl pervo=getXxTest01View1();&lt;br /&gt;   System.out.println(pEntityCode);&lt;br /&gt;   Row row []=pervo.getAllRowsInRange();&lt;br /&gt;   for (int i=0;i&lt;row.length;i++)&lt;br /&gt;   {&lt;br /&gt;     XxTest01ViewRowImpl rowi=(XxTest01ViewRowImpl)row[i];&lt;br /&gt;     &lt;br /&gt;     if (rowi.getEntityCode().toString().equals(pEntityCode))&lt;br /&gt;     {&lt;br /&gt;       rowi.remove();&lt;br /&gt;       getDBTransaction().commit();&lt;br /&gt;       return;&lt;br /&gt;       &lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;2) Call this method in your controller class's process form request as&lt;br /&gt;&lt;br /&gt;public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)&lt;br /&gt;  {&lt;br /&gt;    super.processFormRequest(pageContext, webBean);&lt;br /&gt;    String actionInMainPage = pageContext.getParameter(EVENT_PARAM);&lt;br /&gt;    String paramEntityCode = pageContext.getParameter("paramEntityCode");&lt;br /&gt;    if (actionInMainPage.equals("deleteitem"))&lt;br /&gt;    {&lt;br /&gt;      Serializable paramdelete []={actionInMainPage,paramEntityCode};&lt;br /&gt;      OAApplicationModule am =pageContext.getApplicationModule(webBean);&lt;br /&gt;      am.invokeMethod("deleteitemMethod",paramdelete);&lt;br /&gt;     &lt;br /&gt;    }&lt;br /&gt;  }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-2194022050212545106?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8hSwgp9FjbNMK9Ig57mXny7N8Hs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8hSwgp9FjbNMK9Ig57mXny7N8Hs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8hSwgp9FjbNMK9Ig57mXny7N8Hs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8hSwgp9FjbNMK9Ig57mXny7N8Hs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/ogmBsAF2L58" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/2194022050212545106/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2010/02/delete-records-from-table-oa-page.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/2194022050212545106?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/2194022050212545106?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/ogmBsAF2L58/delete-records-from-table-oa-page.html" title="Delete Records from Table (OA Page )" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2010/02/delete-records-from-table-oa-page.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4BQHo5fip7ImA9WxBWF0w.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-793461839696686223</id><published>2010-02-09T04:17:00.000-08:00</published><updated>2010-02-09T04:19:11.426-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-09T04:19:11.426-08:00</app:edited><title>Download File From Application Server (OA Framework)</title><content type="html">Download file from Application Server&lt;br /&gt;&lt;br /&gt;1) Only Page and controller is different  in download file, rest all is same as upload example given  earlier.&lt;br /&gt;&lt;br /&gt;2) Create one OA page in oracle.apps.download.webui.&lt;br /&gt;&lt;br /&gt;3) SET  form property to TRUE of main region , Create one region with region style&lt;br /&gt;&lt;br /&gt;Message component layout., set AM Defination.&lt;br /&gt;      &lt;br /&gt;4) create one submit button in main region.&lt;br /&gt;&lt;br /&gt;Set properties as below :&lt;br /&gt;Action type =fireAction&lt;br /&gt;Event=download&lt;br /&gt;Prompt=submit&lt;br /&gt;&lt;br /&gt;5) create one controller class in oracle.apps.download.webui.&lt;br /&gt;&lt;br /&gt;import all below packages :&lt;br /&gt;&lt;br /&gt;import oracle.apps.fnd.common.VersionInfo;&lt;br /&gt;import oracle.apps.fnd.framework.webui.OAControllerImpl;&lt;br /&gt;import oracle.apps.fnd.framework.webui.OAPageContext;&lt;br /&gt;import oracle.apps.fnd.framework.webui.beans.OAWebBean;&lt;br /&gt;import oracle.cabo.ui.data.DataObject;&lt;br /&gt;import java.io.FileOutputStream;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import oracle.jbo.domain.BlobDomain;&lt;br /&gt;import java.io.File;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;import javax.servlet.ServletOutputStream;&lt;br /&gt;import javax.servlet.*;&lt;br /&gt;import oracle.apps.fnd.framework.OAException;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;6) create two methods in controller class as below :-&lt;br /&gt;&lt;br /&gt;public void downloadFileFromServer(OAPageContext pageContext, &lt;br /&gt;String file_name_with_path, &lt;br /&gt;String file_name_with_ext)&lt;br /&gt;{&lt;br /&gt;HttpServletResponse response = &lt;br /&gt;(HttpServletResponse) pageContext.getRenderingContext().getServletResponse();&lt;br /&gt;if (((file_name_with_path == null) || &lt;br /&gt;("".equals(file_name_with_path))))&lt;br /&gt;{&lt;br /&gt;throw new OAException("File path is invalid.");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;File fileToDownload = null;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;fileToDownload = new File(file_name_with_path);&lt;br /&gt;}&lt;br /&gt;catch (Exception e)&lt;br /&gt;{&lt;br /&gt;throw new OAException("Invalid File Path or file does not exist.");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (!fileToDownload.exists())&lt;br /&gt;{&lt;br /&gt;throw new OAException("File does not exist.");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (!fileToDownload.canRead())&lt;br /&gt;{&lt;br /&gt;throw new OAException("Not Able to read the file.");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String fileType = getMimeType(file_name_with_ext);&lt;br /&gt;response.setContentType(fileType);&lt;br /&gt;response.setContentLength((int)fileToDownload.length()); &lt;br /&gt;response.setHeader("Content-Disposition", "attachment; filename=\"" + file_name_with_ext + "\"");&lt;br /&gt;&lt;br /&gt;InputStream in = null;&lt;br /&gt;ServletOutputStream outs = null;&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;outs = response.getOutputStream();&lt;br /&gt;in = new BufferedInputStream(new FileInputStream(fileToDownload));&lt;br /&gt;int ch;&lt;br /&gt;while ((ch = in.read()) != -1)&lt;br /&gt;{&lt;br /&gt;outs.write(ch);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;catch (IOException e)&lt;br /&gt;{&lt;br /&gt;// TODO&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;outs.flush();&lt;br /&gt;outs.close();&lt;br /&gt;if (in != null)&lt;br /&gt;{&lt;br /&gt;in.close();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;catch (Exception e)&lt;br /&gt;{&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;7) Create another method as below :&lt;br /&gt;&lt;br /&gt;public String getMimeType(String s)&lt;br /&gt;{&lt;br /&gt;int i = s.lastIndexOf(".");&lt;br /&gt;if (i &gt; 0 &amp;&amp; i &lt; s.length() - 1)&lt;br /&gt;{&lt;br /&gt;String s1 = s.substring(i + 1);&lt;br /&gt;if (s1.equalsIgnoreCase("amr"))&lt;br /&gt;{&lt;br /&gt;return "audio/amr";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mid"))&lt;br /&gt;{&lt;br /&gt;return "audio/midi";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mmf"))&lt;br /&gt;{&lt;br /&gt;return "application/vnd.smaf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("qcp"))&lt;br /&gt;{&lt;br /&gt;return "audio/vnd.qcelp";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("hqx"))&lt;br /&gt;{&lt;br /&gt;return "application/mac-binhex40";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("cpt"))&lt;br /&gt;{&lt;br /&gt;return "application/mac-compactpro";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("doc"))&lt;br /&gt;{&lt;br /&gt;return "application/msword";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jsp"))&lt;br /&gt;{&lt;br /&gt;return "application/jsp";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("oda"))&lt;br /&gt;{&lt;br /&gt;return "application/oda";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("pdf"))&lt;br /&gt;{&lt;br /&gt;return "application/pdf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ai"))&lt;br /&gt;{&lt;br /&gt;return "application/postscript";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("eps"))&lt;br /&gt;{&lt;br /&gt;return "application/postscript";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ps"))&lt;br /&gt;{&lt;br /&gt;return "application/postscript";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ppt"))&lt;br /&gt;{&lt;br /&gt;return "application/powerpoint";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("rtf"))&lt;br /&gt;{&lt;br /&gt;return "application/rtf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("bcpio"))&lt;br /&gt;{&lt;br /&gt;return "application/x-bcpio";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("vcd"))&lt;br /&gt;{&lt;br /&gt;return "application/x-cdlink";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("Z"))&lt;br /&gt;{&lt;br /&gt;return "application/x-compress";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("cpio"))&lt;br /&gt;{&lt;br /&gt;return "application/x-cpio";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("csh"))&lt;br /&gt;{&lt;br /&gt;return "application/x-csh";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("dcr"))&lt;br /&gt;{&lt;br /&gt;return "application/x-director";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("dir"))&lt;br /&gt;{&lt;br /&gt;return "application/x-director";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("dxr"))&lt;br /&gt;{&lt;br /&gt;return "application/x-director";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("dvi"))&lt;br /&gt;{&lt;br /&gt;return "application/x-dvi";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("gtar"))&lt;br /&gt;{&lt;br /&gt;return "application/x-gtar";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("gz"))&lt;br /&gt;{&lt;br /&gt;return "application/x-gzip";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("hdf"))&lt;br /&gt;{&lt;br /&gt;return "application/x-hdf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("cgi"))&lt;br /&gt;{&lt;br /&gt;return "application/x-httpd-cgi";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jnlp"))&lt;br /&gt;{&lt;br /&gt;return "application/x-java-jnlp-file";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("skp"))&lt;br /&gt;{&lt;br /&gt;return "application/x-koan";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("skd"))&lt;br /&gt;{&lt;br /&gt;return "application/x-koan";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("skt"))&lt;br /&gt;{&lt;br /&gt;return "application/x-koan";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("skm"))&lt;br /&gt;{&lt;br /&gt;return "application/x-koan";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("latex"))&lt;br /&gt;{&lt;br /&gt;return "application/x-latex";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mif"))&lt;br /&gt;{&lt;br /&gt;return "application/x-mif";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("nc"))&lt;br /&gt;{&lt;br /&gt;return "application/x-netcdf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("cdf"))&lt;br /&gt;{&lt;br /&gt;return "application/x-netcdf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sh"))&lt;br /&gt;{&lt;br /&gt;return "application/x-sh";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("shar"))&lt;br /&gt;{&lt;br /&gt;return "application/x-shar";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sit"))&lt;br /&gt;{&lt;br /&gt;return "application/x-stuffit";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sv4cpio"))&lt;br /&gt;{&lt;br /&gt;return "application/x-sv4cpio";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sv4crc"))&lt;br /&gt;{&lt;br /&gt;return "application/x-sv4crc";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tar"))&lt;br /&gt;{&lt;br /&gt;return "application/x-tar";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tcl"))&lt;br /&gt;{&lt;br /&gt;return "application/x-tcl";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tex"))&lt;br /&gt;{&lt;br /&gt;return "application/x-tex";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("textinfo"))&lt;br /&gt;{&lt;br /&gt;return "application/x-texinfo";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("texi"))&lt;br /&gt;{&lt;br /&gt;return "application/x-texinfo";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("t"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tr"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("roff"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("man"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff-man";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("me"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff-me";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ms"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff-ms";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ustar"))&lt;br /&gt;{&lt;br /&gt;return "application/x-ustar";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("src"))&lt;br /&gt;{&lt;br /&gt;return "application/x-wais-source";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xml"))&lt;br /&gt;{&lt;br /&gt;return "text/xml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ent"))&lt;br /&gt;{&lt;br /&gt;return "text/xml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("cat"))&lt;br /&gt;{&lt;br /&gt;return "text/xml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sty"))&lt;br /&gt;{&lt;br /&gt;return "text/xml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("dtd"))&lt;br /&gt;{&lt;br /&gt;return "text/dtd";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xsl"))&lt;br /&gt;{&lt;br /&gt;return "text/xsl";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("zip"))&lt;br /&gt;{&lt;br /&gt;return "application/zip";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("au"))&lt;br /&gt;{&lt;br /&gt;return "audio/basic";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("snd"))&lt;br /&gt;{&lt;br /&gt;return "audio/basic";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mpga"))&lt;br /&gt;{&lt;br /&gt;return "audio/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mp2"))&lt;br /&gt;{&lt;br /&gt;return "audio/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mp3"))&lt;br /&gt;{&lt;br /&gt;return "audio/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("aif"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-aiff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("aiff"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-aiff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("aifc"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-aiff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ram"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-pn-realaudio";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("rpm"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-pn-realaudio-plugin";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ra"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-realaudio";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wav"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-wav";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("pdb"))&lt;br /&gt;{&lt;br /&gt;return "chemical/x-pdb";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xyz"))&lt;br /&gt;{&lt;br /&gt;return "chemical/x-pdb";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("gif"))&lt;br /&gt;{&lt;br /&gt;return "image/gif";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ief"))&lt;br /&gt;{&lt;br /&gt;return "image/ief";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jpeg"))&lt;br /&gt;{&lt;br /&gt;return "image/jpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jpg"))&lt;br /&gt;{&lt;br /&gt;return "image/jpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jpe"))&lt;br /&gt;{&lt;br /&gt;return "image/jpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("png"))&lt;br /&gt;{&lt;br /&gt;return "image/png";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tiff"))&lt;br /&gt;{&lt;br /&gt;return "image/tiff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tif"))&lt;br /&gt;{&lt;br /&gt;return "image/tiff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ras"))&lt;br /&gt;{&lt;br /&gt;return "image/x-cmu-raster";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("pnm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-portable-anymap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("pbm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-portable-bitmap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("pgm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-portable-graymap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ppm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-portable-pixmap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("rgb"))&lt;br /&gt;{&lt;br /&gt;return "image/x-rgb";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xbm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-xbitmap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xpm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-xpixmap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xwd"))&lt;br /&gt;{&lt;br /&gt;return "image/x-xwindowdump";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("html"))&lt;br /&gt;{&lt;br /&gt;return "text/html";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("htm"))&lt;br /&gt;{&lt;br /&gt;return "text/html";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("txt"))&lt;br /&gt;{&lt;br /&gt;return "text/plain";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("rtx"))&lt;br /&gt;{&lt;br /&gt;return "text/richtext";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tsv"))&lt;br /&gt;{&lt;br /&gt;return "text/tab-separated-values";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("etx"))&lt;br /&gt;{&lt;br /&gt;return "text/x-setext";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sgml"))&lt;br /&gt;{&lt;br /&gt;return "text/x-sgml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sgm"))&lt;br /&gt;{&lt;br /&gt;return "text/x-sgml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mpeg"))&lt;br /&gt;{&lt;br /&gt;return "video/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mpg"))&lt;br /&gt;{&lt;br /&gt;return "video/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mpe"))&lt;br /&gt;{&lt;br /&gt;return "video/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("qt"))&lt;br /&gt;{&lt;br /&gt;return "video/quicktime";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mov"))&lt;br /&gt;{&lt;br /&gt;return "video/quicktime";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("avi"))&lt;br /&gt;{&lt;br /&gt;return "video/x-msvideo";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("movie"))&lt;br /&gt;{&lt;br /&gt;return "video/x-sgi-movie";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ice"))&lt;br /&gt;{&lt;br /&gt;return "x-conference/x-cooltalk";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wrl"))&lt;br /&gt;{&lt;br /&gt;return "x-world/x-vrml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("vrml"))&lt;br /&gt;{&lt;br /&gt;return "x-world/x-vrml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wml"))&lt;br /&gt;{&lt;br /&gt;return "text/vnd.wap.wml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wmlc"))&lt;br /&gt;{&lt;br /&gt;return "application/vnd.wap.wmlc";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wmls"))&lt;br /&gt;{&lt;br /&gt;return "text/vnd.wap.wmlscript";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wmlsc"))&lt;br /&gt;{&lt;br /&gt;return "application/vnd.wap.wmlscriptc";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wbmp"))&lt;br /&gt;{&lt;br /&gt;return "image/vnd.wap.wbmp";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("css"))&lt;br /&gt;{&lt;br /&gt;return "text/css";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jad"))&lt;br /&gt;{&lt;br /&gt;return "text/vnd.sun.j2me.app-descriptor";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jar"))&lt;br /&gt;{&lt;br /&gt;return "application/java-archive";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("3gp"))&lt;br /&gt;{&lt;br /&gt;return "video/3gp";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("3g2"))&lt;br /&gt;{&lt;br /&gt;return "video/3gpp2";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mp4"))&lt;br /&gt;{&lt;br /&gt;return "video/3gpp";&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return "application/octet-stream";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;8) in process form request of the controller class call this method to download&lt;br /&gt;&lt;br /&gt;public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)&lt;br /&gt;  {&lt;br /&gt;    super.processFormRequest(pageContext, webBean);&lt;br /&gt;&lt;br /&gt;    //on button click in process form request&lt;br /&gt;    //call this method&lt;br /&gt;    downloadFileFromServer(pageContext,"/cmupload/OWF_Clt_2635_WINNT.zip","/cmupload/OWF_Clt_2635_WINNT.zip"); &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;9) Your controller class look like &lt;br /&gt;&lt;br /&gt;package oracle.apps.ak.download.webui.webui;&lt;br /&gt;import oracle.apps.fnd.common.VersionInfo;&lt;br /&gt;import oracle.apps.fnd.framework.webui.OAControllerImpl;&lt;br /&gt;import oracle.apps.fnd.framework.webui.OAPageContext;&lt;br /&gt;import oracle.apps.fnd.framework.webui.beans.OAWebBean;&lt;br /&gt;import oracle.cabo.ui.data.DataObject;&lt;br /&gt;import java.io.FileOutputStream;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import oracle.jbo.domain.BlobDomain;&lt;br /&gt;import java.io.File;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;import javax.servlet.ServletOutputStream;&lt;br /&gt;import javax.servlet.*;&lt;br /&gt;import oracle.apps.fnd.framework.OAException;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * Controller for ...&lt;br /&gt; */&lt;br /&gt;public class MyCO extends OAControllerImpl&lt;br /&gt;{&lt;br /&gt;  public static final String RCS_ID="$Header$";&lt;br /&gt;  public static final boolean RCS_ID_RECORDED =&lt;br /&gt;        VersionInfo.recordClassVersion(RCS_ID, "%packagename%");&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Layout and page setup logic for a region.&lt;br /&gt;   * @param pageContext the current OA page context&lt;br /&gt;   * @param webBean the web bean corresponding to the region&lt;br /&gt;   */&lt;br /&gt;  public void processRequest(OAPageContext pageContext, OAWebBean webBean)&lt;br /&gt;  {&lt;br /&gt;    super.processRequest(pageContext, webBean);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @param pageContext the current OA page context&lt;br /&gt;* @param file_name_with_path - this is fully qualified file name with its path on unix application&lt;br /&gt;* server. eg "/xxcrp/xxapplcrp/mukul/abc.pdf"&lt;br /&gt;* @param file_name_with_ext - this is file name with extension, you wanna display user&lt;br /&gt;* for download. eg- i wanna display the abc.pdf file download with name five_point_someone.pdf&lt;br /&gt;* then I can pass this as "five_point_someone.pdf"&lt;br /&gt;*/&lt;br /&gt;public void downloadFileFromServer(OAPageContext pageContext, &lt;br /&gt;String file_name_with_path, &lt;br /&gt;String file_name_with_ext)&lt;br /&gt;{&lt;br /&gt;HttpServletResponse response = &lt;br /&gt;(HttpServletResponse) pageContext.getRenderingContext().getServletResponse();&lt;br /&gt;if (((file_name_with_path == null) || &lt;br /&gt;("".equals(file_name_with_path))))&lt;br /&gt;{&lt;br /&gt;throw new OAException("File path is invalid.");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;File fileToDownload = null;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;fileToDownload = new File(file_name_with_path);&lt;br /&gt;}&lt;br /&gt;catch (Exception e)&lt;br /&gt;{&lt;br /&gt;throw new OAException("Invalid File Path or file does not exist.");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (!fileToDownload.exists())&lt;br /&gt;{&lt;br /&gt;throw new OAException("File does not exist.");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (!fileToDownload.canRead())&lt;br /&gt;{&lt;br /&gt;throw new OAException("Not Able to read the file.");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String fileType = getMimeType(file_name_with_ext);&lt;br /&gt;response.setContentType(fileType);&lt;br /&gt;response.setContentLength((int)fileToDownload.length()); &lt;br /&gt;response.setHeader("Content-Disposition", "attachment; filename=\"" + file_name_with_ext + "\"");&lt;br /&gt;&lt;br /&gt;InputStream in = null;&lt;br /&gt;ServletOutputStream outs = null;&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;outs = response.getOutputStream();&lt;br /&gt;in = new BufferedInputStream(new FileInputStream(fileToDownload));&lt;br /&gt;int ch;&lt;br /&gt;while ((ch = in.read()) != -1)&lt;br /&gt;{&lt;br /&gt;outs.write(ch);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;catch (IOException e)&lt;br /&gt;{&lt;br /&gt;// TODO&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;outs.flush();&lt;br /&gt;outs.close();&lt;br /&gt;if (in != null)&lt;br /&gt;{&lt;br /&gt;in.close();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;catch (Exception e)&lt;br /&gt;{&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @param s&lt;br /&gt;* @return file mime type from its name&lt;br /&gt;*/&lt;br /&gt;public String getMimeType(String s)&lt;br /&gt;{&lt;br /&gt;int i = s.lastIndexOf(".");&lt;br /&gt;if (i &gt; 0 &amp;&amp; i &lt; s.length() - 1)&lt;br /&gt;{&lt;br /&gt;String s1 = s.substring(i + 1);&lt;br /&gt;if (s1.equalsIgnoreCase("amr"))&lt;br /&gt;{&lt;br /&gt;return "audio/amr";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mid"))&lt;br /&gt;{&lt;br /&gt;return "audio/midi";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mmf"))&lt;br /&gt;{&lt;br /&gt;return "application/vnd.smaf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("qcp"))&lt;br /&gt;{&lt;br /&gt;return "audio/vnd.qcelp";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("hqx"))&lt;br /&gt;{&lt;br /&gt;return "application/mac-binhex40";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("cpt"))&lt;br /&gt;{&lt;br /&gt;return "application/mac-compactpro";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("doc"))&lt;br /&gt;{&lt;br /&gt;return "application/msword";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jsp"))&lt;br /&gt;{&lt;br /&gt;return "application/jsp";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("oda"))&lt;br /&gt;{&lt;br /&gt;return "application/oda";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("pdf"))&lt;br /&gt;{&lt;br /&gt;return "application/pdf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ai"))&lt;br /&gt;{&lt;br /&gt;return "application/postscript";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("eps"))&lt;br /&gt;{&lt;br /&gt;return "application/postscript";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ps"))&lt;br /&gt;{&lt;br /&gt;return "application/postscript";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ppt"))&lt;br /&gt;{&lt;br /&gt;return "application/powerpoint";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("rtf"))&lt;br /&gt;{&lt;br /&gt;return "application/rtf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("bcpio"))&lt;br /&gt;{&lt;br /&gt;return "application/x-bcpio";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("vcd"))&lt;br /&gt;{&lt;br /&gt;return "application/x-cdlink";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("Z"))&lt;br /&gt;{&lt;br /&gt;return "application/x-compress";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("cpio"))&lt;br /&gt;{&lt;br /&gt;return "application/x-cpio";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("csh"))&lt;br /&gt;{&lt;br /&gt;return "application/x-csh";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("dcr"))&lt;br /&gt;{&lt;br /&gt;return "application/x-director";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("dir"))&lt;br /&gt;{&lt;br /&gt;return "application/x-director";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("dxr"))&lt;br /&gt;{&lt;br /&gt;return "application/x-director";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("dvi"))&lt;br /&gt;{&lt;br /&gt;return "application/x-dvi";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("gtar"))&lt;br /&gt;{&lt;br /&gt;return "application/x-gtar";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("gz"))&lt;br /&gt;{&lt;br /&gt;return "application/x-gzip";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("hdf"))&lt;br /&gt;{&lt;br /&gt;return "application/x-hdf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("cgi"))&lt;br /&gt;{&lt;br /&gt;return "application/x-httpd-cgi";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jnlp"))&lt;br /&gt;{&lt;br /&gt;return "application/x-java-jnlp-file";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("skp"))&lt;br /&gt;{&lt;br /&gt;return "application/x-koan";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("skd"))&lt;br /&gt;{&lt;br /&gt;return "application/x-koan";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("skt"))&lt;br /&gt;{&lt;br /&gt;return "application/x-koan";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("skm"))&lt;br /&gt;{&lt;br /&gt;return "application/x-koan";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("latex"))&lt;br /&gt;{&lt;br /&gt;return "application/x-latex";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mif"))&lt;br /&gt;{&lt;br /&gt;return "application/x-mif";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("nc"))&lt;br /&gt;{&lt;br /&gt;return "application/x-netcdf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("cdf"))&lt;br /&gt;{&lt;br /&gt;return "application/x-netcdf";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sh"))&lt;br /&gt;{&lt;br /&gt;return "application/x-sh";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("shar"))&lt;br /&gt;{&lt;br /&gt;return "application/x-shar";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sit"))&lt;br /&gt;{&lt;br /&gt;return "application/x-stuffit";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sv4cpio"))&lt;br /&gt;{&lt;br /&gt;return "application/x-sv4cpio";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sv4crc"))&lt;br /&gt;{&lt;br /&gt;return "application/x-sv4crc";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tar"))&lt;br /&gt;{&lt;br /&gt;return "application/x-tar";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tcl"))&lt;br /&gt;{&lt;br /&gt;return "application/x-tcl";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tex"))&lt;br /&gt;{&lt;br /&gt;return "application/x-tex";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("textinfo"))&lt;br /&gt;{&lt;br /&gt;return "application/x-texinfo";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("texi"))&lt;br /&gt;{&lt;br /&gt;return "application/x-texinfo";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("t"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tr"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("roff"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("man"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff-man";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("me"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff-me";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ms"))&lt;br /&gt;{&lt;br /&gt;return "application/x-troff-ms";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ustar"))&lt;br /&gt;{&lt;br /&gt;return "application/x-ustar";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("src"))&lt;br /&gt;{&lt;br /&gt;return "application/x-wais-source";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xml"))&lt;br /&gt;{&lt;br /&gt;return "text/xml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ent"))&lt;br /&gt;{&lt;br /&gt;return "text/xml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("cat"))&lt;br /&gt;{&lt;br /&gt;return "text/xml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sty"))&lt;br /&gt;{&lt;br /&gt;return "text/xml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("dtd"))&lt;br /&gt;{&lt;br /&gt;return "text/dtd";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xsl"))&lt;br /&gt;{&lt;br /&gt;return "text/xsl";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("zip"))&lt;br /&gt;{&lt;br /&gt;return "application/zip";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("au"))&lt;br /&gt;{&lt;br /&gt;return "audio/basic";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("snd"))&lt;br /&gt;{&lt;br /&gt;return "audio/basic";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mpga"))&lt;br /&gt;{&lt;br /&gt;return "audio/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mp2"))&lt;br /&gt;{&lt;br /&gt;return "audio/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mp3"))&lt;br /&gt;{&lt;br /&gt;return "audio/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("aif"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-aiff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("aiff"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-aiff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("aifc"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-aiff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ram"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-pn-realaudio";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("rpm"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-pn-realaudio-plugin";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ra"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-realaudio";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wav"))&lt;br /&gt;{&lt;br /&gt;return "audio/x-wav";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("pdb"))&lt;br /&gt;{&lt;br /&gt;return "chemical/x-pdb";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xyz"))&lt;br /&gt;{&lt;br /&gt;return "chemical/x-pdb";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("gif"))&lt;br /&gt;{&lt;br /&gt;return "image/gif";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ief"))&lt;br /&gt;{&lt;br /&gt;return "image/ief";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jpeg"))&lt;br /&gt;{&lt;br /&gt;return "image/jpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jpg"))&lt;br /&gt;{&lt;br /&gt;return "image/jpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jpe"))&lt;br /&gt;{&lt;br /&gt;return "image/jpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("png"))&lt;br /&gt;{&lt;br /&gt;return "image/png";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tiff"))&lt;br /&gt;{&lt;br /&gt;return "image/tiff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tif"))&lt;br /&gt;{&lt;br /&gt;return "image/tiff";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ras"))&lt;br /&gt;{&lt;br /&gt;return "image/x-cmu-raster";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("pnm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-portable-anymap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("pbm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-portable-bitmap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("pgm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-portable-graymap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ppm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-portable-pixmap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("rgb"))&lt;br /&gt;{&lt;br /&gt;return "image/x-rgb";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xbm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-xbitmap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xpm"))&lt;br /&gt;{&lt;br /&gt;return "image/x-xpixmap";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("xwd"))&lt;br /&gt;{&lt;br /&gt;return "image/x-xwindowdump";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("html"))&lt;br /&gt;{&lt;br /&gt;return "text/html";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("htm"))&lt;br /&gt;{&lt;br /&gt;return "text/html";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("txt"))&lt;br /&gt;{&lt;br /&gt;return "text/plain";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("rtx"))&lt;br /&gt;{&lt;br /&gt;return "text/richtext";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("tsv"))&lt;br /&gt;{&lt;br /&gt;return "text/tab-separated-values";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("etx"))&lt;br /&gt;{&lt;br /&gt;return "text/x-setext";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sgml"))&lt;br /&gt;{&lt;br /&gt;return "text/x-sgml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("sgm"))&lt;br /&gt;{&lt;br /&gt;return "text/x-sgml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mpeg"))&lt;br /&gt;{&lt;br /&gt;return "video/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mpg"))&lt;br /&gt;{&lt;br /&gt;return "video/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mpe"))&lt;br /&gt;{&lt;br /&gt;return "video/mpeg";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("qt"))&lt;br /&gt;{&lt;br /&gt;return "video/quicktime";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mov"))&lt;br /&gt;{&lt;br /&gt;return "video/quicktime";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("avi"))&lt;br /&gt;{&lt;br /&gt;return "video/x-msvideo";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("movie"))&lt;br /&gt;{&lt;br /&gt;return "video/x-sgi-movie";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("ice"))&lt;br /&gt;{&lt;br /&gt;return "x-conference/x-cooltalk";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wrl"))&lt;br /&gt;{&lt;br /&gt;return "x-world/x-vrml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("vrml"))&lt;br /&gt;{&lt;br /&gt;return "x-world/x-vrml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wml"))&lt;br /&gt;{&lt;br /&gt;return "text/vnd.wap.wml";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wmlc"))&lt;br /&gt;{&lt;br /&gt;return "application/vnd.wap.wmlc";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wmls"))&lt;br /&gt;{&lt;br /&gt;return "text/vnd.wap.wmlscript";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wmlsc"))&lt;br /&gt;{&lt;br /&gt;return "application/vnd.wap.wmlscriptc";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("wbmp"))&lt;br /&gt;{&lt;br /&gt;return "image/vnd.wap.wbmp";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("css"))&lt;br /&gt;{&lt;br /&gt;return "text/css";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jad"))&lt;br /&gt;{&lt;br /&gt;return "text/vnd.sun.j2me.app-descriptor";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("jar"))&lt;br /&gt;{&lt;br /&gt;return "application/java-archive";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("3gp"))&lt;br /&gt;{&lt;br /&gt;return "video/3gp";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("3g2"))&lt;br /&gt;{&lt;br /&gt;return "video/3gpp2";&lt;br /&gt;}&lt;br /&gt;if (s1.equalsIgnoreCase("mp4"))&lt;br /&gt;{&lt;br /&gt;return "video/3gpp";&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return "application/octet-stream";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Procedure to handle form submissions for form elements in&lt;br /&gt;   * a region.&lt;br /&gt;   * @param pageContext the current OA page context&lt;br /&gt;   * @param webBean the web bean corresponding to the region&lt;br /&gt;   */&lt;br /&gt;  public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)&lt;br /&gt;  {&lt;br /&gt;    super.processFormRequest(pageContext, webBean);&lt;br /&gt;&lt;br /&gt;    //on button click in process form request&lt;br /&gt;    //call this method&lt;br /&gt;    downloadFileFromServer(pageContext,"/cmupload/OWF_Clt_2635_WINNT.zip","/cmupload/OWF_Clt_2635_WINNT.zip"); &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;10)  Rebuild the .jpr and run the page. Happy Coding…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-793461839696686223?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xfv1tEOLeI8uYpBuHdx7RR4Zvuc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xfv1tEOLeI8uYpBuHdx7RR4Zvuc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xfv1tEOLeI8uYpBuHdx7RR4Zvuc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xfv1tEOLeI8uYpBuHdx7RR4Zvuc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/GjWameK5AIs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/793461839696686223/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2010/02/download-file-from-application-server.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/793461839696686223?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/793461839696686223?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/GjWameK5AIs/download-file-from-application-server.html" title="Download File From Application Server (OA Framework)" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2010/02/download-file-from-application-server.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08MSHo-fSp7ImA9WxBWF0w.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-2856048764859633118</id><published>2010-02-09T03:39:00.000-08:00</published><updated>2010-02-09T03:44:49.455-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-09T03:44:49.455-08:00</app:edited><title>Upload Files on UNIX Application Server (OA Framework)</title><content type="html">&lt;a href="http://3.bp.blogspot.com/_5CJfFGvefnI/S3FKEFO_TmI/AAAAAAAAALw/YGB0enSG6qI/s1600-h/image1.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_5CJfFGvefnI/S3FKEFO_TmI/AAAAAAAAALw/YGB0enSG6qI/s320/image1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5436207659197877858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_5CJfFGvefnI/S3FKKuVefoI/AAAAAAAAAL4/08djif_vvGI/s1600-h/image2.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_5CJfFGvefnI/S3FKKuVefoI/AAAAAAAAAL4/08djif_vvGI/s320/image2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5436207773310156418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1) Create Project in jdeveloper.&lt;br /&gt;2) Create two business components as&lt;br /&gt;     oracle.apps.ak.upload.server and&lt;br /&gt;     oracle.apps.ak.upload.webui without any entity,view or application module.&lt;br /&gt;3)  in oracle.apps.ak.upload.server create entity object with dual table.&lt;br /&gt;4)  create view and application module for the same.&lt;br /&gt;5)  in oracle.apps.ak.upload.webui &lt;br /&gt;     create one OA page.&lt;br /&gt;6)  Also set the form property to TRUE of main region of the type pageLayout.&lt;br /&gt;7)  Create one region with messageComponenet Layout&lt;br /&gt;      Set AM Defination property.&lt;br /&gt;8)  Create one item of type=&gt;messageFileUpload in the messageComponenet Layout region.&lt;br /&gt;9)   set prompt,additional text properties of item.&lt;br /&gt;10) create one submit button under the main region.set prompt,additional text,action type=&gt;fire action,event=&gt;uploadFileToServer.&lt;br /&gt;11) under oracle.apps.ak.upload.webui create one controller class.&lt;br /&gt;import following packages in the class.&lt;br /&gt;&lt;br /&gt;import oracle.apps.fnd.common.VersionInfo;&lt;br /&gt;import oracle.apps.fnd.framework.webui.OAControllerImpl;&lt;br /&gt;import oracle.apps.fnd.framework.webui.OAPageContext;&lt;br /&gt;import oracle.apps.fnd.framework.webui.beans.OAWebBean;&lt;br /&gt;import oracle.cabo.ui.data.DataObject;&lt;br /&gt;import java.io.FileOutputStream;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import oracle.jbo.domain.BlobDomain;&lt;br /&gt;import java.io.File;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;12 ) create one method as below in controller class :&lt;br /&gt;&lt;br /&gt;public void fileupload(OAPageContext pageContext, String fileuploadBeanId,String server_dir_path)&lt;br /&gt;  {&lt;br /&gt;    System.out.println("kamlesh");&lt;br /&gt;    DataObject fileUploadData = (DataObject) pageContext.getNamedDataObject(fileuploadBeanId);&lt;br /&gt;    if(fileUploadData!=null)&lt;br /&gt;     {&lt;br /&gt;      String uFileName =(String) fileUploadData.selectValue(null, "UPLOAD_FILE_NAME");&lt;br /&gt;      String contentType = (String) fileUploadData.selectValue(null, "UPLOAD_FILE_MIME_TYPE");&lt;br /&gt;&lt;br /&gt;     File file = new File(server_dir_path, uFileName);&lt;br /&gt;     FileOutputStream output = null;&lt;br /&gt;     InputStream input = null;&lt;br /&gt;&lt;br /&gt;      try&lt;br /&gt;  {&lt;br /&gt;      output = new FileOutputStream(file);&lt;br /&gt;       BlobDomain uploadedByteStream = &lt;br /&gt;       (BlobDomain) fileUploadData.selectValue(null, uFileName);&lt;br /&gt;        input = uploadedByteStream.getInputStream();&lt;br /&gt;     for (int bytes = 0; bytes &lt; uploadedByteStream.getLength(); bytes++)&lt;br /&gt;     {&lt;br /&gt;      output.write(input.read());&lt;br /&gt;     }&lt;br /&gt;  }&lt;br /&gt;     catch (Exception e)&lt;br /&gt;     {&lt;br /&gt;       e.printStackTrace();&lt;br /&gt;     }&lt;br /&gt;    finally&lt;br /&gt;   {&lt;br /&gt;    try&lt;br /&gt;   {&lt;br /&gt;  if (input != null)&lt;br /&gt;   {&lt;br /&gt;   input.close();&lt;br /&gt;   }&lt;br /&gt;   if (output != null)&lt;br /&gt;   {&lt;br /&gt;   output.close();&lt;br /&gt;   output.flush();&lt;br /&gt;   }&lt;br /&gt;   }&lt;br /&gt;   catch (Exception ez)&lt;br /&gt;   {&lt;br /&gt;   ez.printStackTrace();&lt;br /&gt;   }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;13)  In  process form request write as below &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)&lt;br /&gt;  {&lt;br /&gt;    super.processFormRequest(pageContext, webBean);&lt;br /&gt;--- your coding as below in PFR process form request-----&lt;br /&gt;    fileupload(pageContext,"item1","/cmload");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;14) Rebuild your .jpr and run the page.&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt; 15) If giving error or warning paste below in Impl.java file of Entity.&lt;br /&gt;&lt;br /&gt;public void setCreatedBy(Number number) &lt;br /&gt;{ &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;public void setCreationDate(Date date) &lt;br /&gt;{ &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;public void setLastUpdatedBy(Number number) &lt;br /&gt;{ &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;public void setLastUpdateDate(Date date) &lt;br /&gt;{ &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;public void setLastUpdateLogin(Number number) &lt;br /&gt;{ &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Controller Class will be like :-&lt;br /&gt;&lt;br /&gt;package oracle.apps.ak.upload.webui.webui;&lt;br /&gt;import oracle.apps.fnd.common.VersionInfo;&lt;br /&gt;import oracle.apps.fnd.framework.webui.OAControllerImpl;&lt;br /&gt;import oracle.apps.fnd.framework.webui.OAPageContext;&lt;br /&gt;import oracle.apps.fnd.framework.webui.beans.OAWebBean;&lt;br /&gt;import oracle.cabo.ui.data.DataObject;&lt;br /&gt;import java.io.FileOutputStream;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import oracle.jbo.domain.BlobDomain;&lt;br /&gt;import java.io.File;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * Controller for ...&lt;br /&gt; */&lt;br /&gt;public class MyCO extends OAControllerImpl&lt;br /&gt;{&lt;br /&gt;  public static final String RCS_ID="$Header$";&lt;br /&gt;  public static final boolean RCS_ID_RECORDED =&lt;br /&gt;        VersionInfo.recordClassVersion(RCS_ID, "%packagename%");&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Layout and page setup logic for a region.&lt;br /&gt;   * @param pageContext the current OA page context&lt;br /&gt;   * @param webBean the web bean corresponding to the region&lt;br /&gt;   */&lt;br /&gt;  public void processRequest(OAPageContext pageContext, OAWebBean webBean)&lt;br /&gt;  {&lt;br /&gt;    super.processRequest(pageContext, webBean);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  public void fileupload(OAPageContext pageContext, String fileuploadBeanId,String server_dir_path)&lt;br /&gt;  {&lt;br /&gt;    System.out.println("kamlesh");&lt;br /&gt;    DataObject fileUploadData = (DataObject) pageContext.getNamedDataObject(fileuploadBeanId);&lt;br /&gt;    if(fileUploadData!=null)&lt;br /&gt;     {&lt;br /&gt;      String uFileName =(String) fileUploadData.selectValue(null, "UPLOAD_FILE_NAME");&lt;br /&gt;      String contentType = (String) fileUploadData.selectValue(null, "UPLOAD_FILE_MIME_TYPE");&lt;br /&gt;&lt;br /&gt;     File file = new File(server_dir_path, uFileName);&lt;br /&gt;     FileOutputStream output = null;&lt;br /&gt;     InputStream input = null;&lt;br /&gt;&lt;br /&gt;      try&lt;br /&gt;  {&lt;br /&gt;      output = new FileOutputStream(file);&lt;br /&gt;       BlobDomain uploadedByteStream = &lt;br /&gt;       (BlobDomain) fileUploadData.selectValue(null, uFileName);&lt;br /&gt;        input = uploadedByteStream.getInputStream();&lt;br /&gt;     for (int bytes = 0; bytes &lt; uploadedByteStream.getLength(); bytes++)&lt;br /&gt;     {&lt;br /&gt;      output.write(input.read());&lt;br /&gt;     }&lt;br /&gt;  }&lt;br /&gt;     catch (Exception e)&lt;br /&gt;     {&lt;br /&gt;       e.printStackTrace();&lt;br /&gt;     }&lt;br /&gt;    finally&lt;br /&gt;   {&lt;br /&gt;    try&lt;br /&gt;   {&lt;br /&gt;  if (input != null)&lt;br /&gt;   {&lt;br /&gt;   input.close();&lt;br /&gt;   }&lt;br /&gt;   if (output != null)&lt;br /&gt;   {&lt;br /&gt;   output.close();&lt;br /&gt;   output.flush();&lt;br /&gt;   }&lt;br /&gt;   }&lt;br /&gt;   catch (Exception ez)&lt;br /&gt;   {&lt;br /&gt;   ez.printStackTrace();&lt;br /&gt;   }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Procedure to handle form submissions for form elements in&lt;br /&gt;   * a region.&lt;br /&gt;   * @param pageContext the current OA page context&lt;br /&gt;   * @param webBean the web bean corresponding to the region&lt;br /&gt;   */&lt;br /&gt;  public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)&lt;br /&gt;  {&lt;br /&gt;    super.processFormRequest(pageContext, webBean);&lt;br /&gt;    fileupload(pageContext,"item1","/cmload");&lt;br /&gt;    fileupload(pageContext,"item3","/cmload");&lt;br /&gt;    fileupload(pageContext,"item4","/cmload");&lt;br /&gt;    fileupload(pageContext,"item5","/cmload");&lt;br /&gt;    fileupload(pageContext,"item6","/cmload");&lt;br /&gt;    fileupload(pageContext,"item7","/cmload");&lt;br /&gt;    fileupload(pageContext,"item8","/cmload");&lt;br /&gt;    fileupload(pageContext,"item9","/cmload");&lt;br /&gt;    fileupload(pageContext,"item10","/cmload");&lt;br /&gt;    fileupload(pageContext,"item11","/cmload");&lt;br /&gt;    fileupload(pageContext,"item12","/cmload");&lt;br /&gt;    fileupload(pageContext,"item13","/cmload");&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Kindly note that if your requirement is uploading files on Database server instead of Application Server then you have to create one NFS MOUNT POINT for that in Unix  server. While testing this page you can give here the path of your local machine unless it won’t work because here the path given is the server path.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-2856048764859633118?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zFbX78FjKXOe_kUGqrONFOUH1AQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zFbX78FjKXOe_kUGqrONFOUH1AQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zFbX78FjKXOe_kUGqrONFOUH1AQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zFbX78FjKXOe_kUGqrONFOUH1AQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/YcNE55oPP4Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/2856048764859633118/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2010/02/upload-files-on-unix-application-server.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/2856048764859633118?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/2856048764859633118?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/YcNE55oPP4Y/upload-files-on-unix-application-server.html" title="Upload Files on UNIX Application Server (OA Framework)" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_5CJfFGvefnI/S3FKEFO_TmI/AAAAAAAAALw/YGB0enSG6qI/s72-c/image1.JPG" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2010/02/upload-files-on-unix-application-server.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08GQnczfyp7ImA9WxBREUs.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-2678484168313315687</id><published>2009-12-30T01:19:00.000-08:00</published><updated>2009-12-30T01:37:03.987-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-30T01:37:03.987-08:00</app:edited><title>User Creation - From Personalization To Avoid Special Characters.</title><content type="html">Open User Creation Form , Querry any one of the existing Username.Then Go to &lt;br /&gt;Help =&gt; Digonostics =&gt; Custom Code =&gt; Personalize &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Create one function as below :&lt;br /&gt;=========================&lt;br /&gt;&lt;br /&gt;seq: 1&lt;br /&gt;description : Avoid Specila Characters in USERNAME.&lt;br /&gt;&lt;br /&gt;Create Condition : &lt;br /&gt;=============&lt;br /&gt;&lt;br /&gt;Trigger Event :WHEN-NEW-ITEM-INSTANCE&lt;br /&gt;Trigger Object :USER.USER_PASSWORD&lt;br /&gt;Condition :&lt;br /&gt;:USER.USER_NAME like ('%#%') or&lt;br /&gt;:USER.USER_NAME like ('%@%') or&lt;br /&gt;:USER.USER_NAME like ('%!%') or&lt;br /&gt;:USER.USER_NAME like ('%$%') or&lt;br /&gt;:USER.USER_NAME like ('%^%') or&lt;br /&gt;:USER.USER_NAME like ('%&amp;%') or&lt;br /&gt;:USER.USER_NAME like ('%%%') or&lt;br /&gt;:USER.USER_NAME like ('%*%') and ${item.user.user_password.navigable.current}='TRUE'&lt;br /&gt;&lt;br /&gt;Processing Mode : Both.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_5CJfFGvefnI/SzsbcbX8kBI/AAAAAAAAALY/z8SyeYFEUM4/s1600-h/Image1.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_5CJfFGvefnI/SzsbcbX8kBI/AAAAAAAAALY/z8SyeYFEUM4/s320/Image1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5420956751669006354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_5CJfFGvefnI/Szsbci2r7HI/AAAAAAAAALg/evvif7xiltQ/s1600-h/image2.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_5CJfFGvefnI/Szsbci2r7HI/AAAAAAAAALg/evvif7xiltQ/s320/image2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5420956753676987506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now Create Actions For the True Condition :&lt;br /&gt;======================================&lt;br /&gt;seq : 1 &lt;br /&gt;Type : Builtin&lt;br /&gt;Language : All&lt;br /&gt;Built Type : GO_ITEM&lt;br /&gt;Argument : USER.USER_NAME&lt;br /&gt;&lt;br /&gt;seq: 2&lt;br /&gt;Type :Message&lt;br /&gt;Language : All&lt;br /&gt;Message Type : Error&lt;br /&gt;Message Text : Username Should not Contain Special Characters like !,@,#,$,%,^,&amp;,*.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_5CJfFGvefnI/Szsbc7OnmdI/AAAAAAAAALo/0dZDsd_Z348/s1600-h/image3.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_5CJfFGvefnI/Szsbc7OnmdI/AAAAAAAAALo/0dZDsd_Z348/s320/image3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5420956760219818450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Save. &lt;br /&gt;Open New User Creation Form and try to create user with special characters.&lt;br /&gt;It Throws Error : Username Should not Contain Special Characters like !,@,#,$,%,^,&amp;,*.&lt;br /&gt;when cursor is navigated to password field after entering the username.&lt;br /&gt;&lt;br /&gt;Thanks ,&lt;br /&gt;Kamlesh Nikhade&lt;br /&gt;Email : Kamlesh3659@gmail.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-2678484168313315687?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/r3E9daDAHFs7SsBF96K2oLTBTgg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r3E9daDAHFs7SsBF96K2oLTBTgg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/r3E9daDAHFs7SsBF96K2oLTBTgg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r3E9daDAHFs7SsBF96K2oLTBTgg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/Oo9np3gqE24" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/2678484168313315687/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/12/create-one-function-as-below-seq-1.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/2678484168313315687?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/2678484168313315687?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/Oo9np3gqE24/create-one-function-as-below-seq-1.html" title="User Creation - From Personalization To Avoid Special Characters." /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_5CJfFGvefnI/SzsbcbX8kBI/AAAAAAAAALY/z8SyeYFEUM4/s72-c/Image1.JPG" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/12/create-one-function-as-below-seq-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UFRXczeyp7ImA9WxBSGEk.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-471901838543762659</id><published>2009-12-25T20:54:00.000-08:00</published><updated>2009-12-26T07:26:54.983-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-26T07:26:54.983-08:00</app:edited><title>AP Invoice Technical Details with Functional Inputs</title><content type="html">When Invoice Booked and Saved&lt;br /&gt;=============================&lt;br /&gt;One row created in ap_invoices_all and its distribution lines created in ap_invoice_distributions_all&lt;br /&gt;&lt;br /&gt;When Invoice Validated :&lt;br /&gt;======================&lt;br /&gt;ap_invoice_distributions_all.MATCH_STATUS_FLAG='A'&lt;br /&gt;ap_invoice_distributions_all.ACCOUNTING_EVENT_ID=NOT NULL(Here 1370092)&lt;br /&gt;one row created in ap_accounting_events_all with accounting_event_id=ap_invoice_distributions_all.ACCOUNTING_EVENT_ID ap_accounting_events_all.EVENT_STATUS_CODE='CREATED' ap_accounting_events_all.SOURCE_TABLE='AP_INVOICES'&lt;br /&gt;ap_accounting_events_all.SOURCE_ID=ap_invoice_distributions_all.INVOICE_ID=&lt;br /&gt;AP_INVOICE_ALL.INVOICE_ID&lt;br /&gt;&lt;br /&gt;When Invoice Accounted :&lt;br /&gt;=====================&lt;br /&gt;ap_invoice_distributions_all.ACCRUAL_POSTED_FLAG='Y'&lt;br /&gt;ap_invoice_distributions_all.POSTED_FLAG='Y' ap_accounting_events_all.EVENT_STATUS_CODE='ACCOUNTED'&lt;br /&gt;ONE ROW CREATED IN AP_AE_HEADERS_ALL where AP_AE_HEADERS_ALL. accounting_event_id=ap_accounting_events_all.accounting_event_id Rows created in ap_ae_lines_all &lt;br /&gt;where AP_AE_HEADERS_ALL.ae_header_id=ap_ae_lines_all.ae_header_id as &lt;br /&gt;below The number of rows generally created in ap_ae_lines_all counted as 1) &lt;br /&gt;one row for invoice with ap_ae_lines_all.AE_LINE_TYPE_CODE='LIABILITY'&lt;br /&gt;ap_ae_lines_all.SOURCE_TABLE='AP_INVOICES' ,ap_ae_lines_all.source_id=ap_invoices_all.invoice_id2) &lt;br /&gt;Other rows are created for the invoice distribution lines (one line per invoice distribution line).ap_ae_lines_all.AE_LINE_TYPE_CODE='CHARGE',&lt;br /&gt;SOURCE_TABLE='AP_INVOICE_DISTRIBUTIONS',&lt;br /&gt;ap_ae_lines_all.SOURCE_ID=AP_INVOICE_DISTRIBUTIONS.INVOICE_ID&lt;br /&gt;&lt;br /&gt;When Invoice Approved : &lt;br /&gt;========================&lt;br /&gt;ap_invoices_all.WFAPPROVAL_STATUS='MANUALLY APPROVED', initially it was 'REQUIRED'&lt;br /&gt;&lt;br /&gt;When Payment Created&lt;br /&gt;=====================&lt;br /&gt;when payment created the one record created in ap_checks_all table.&lt;br /&gt;&lt;br /&gt;When Payment Accounted&lt;br /&gt;=============================&lt;br /&gt;When payment document accounted then one row is created in ap_accounting_events_all table.&lt;br /&gt;AP_invoice_payments_all.ACCOUNTING_EVENT_ID=&lt;br /&gt;ap_accounting_events_all.ACCOUNTING_EVENT_ID&lt;br /&gt;ap_accounting_events_all.EVENT_STATUS_CODE='ACCOUNTED'. andap_accounting_events_all.source_id=AP_INVOICE_PAYMENTS_ALL.check_id.&lt;br /&gt;&lt;br /&gt;After Doing the Payment (paid) of invoice with Created Payment Document&lt;br /&gt;=============================================================&lt;br /&gt;ap_invoices_all.payment_status_flag='Y' BEFORE 'N'It creates the linKing between ap_invoices_all and ap_checks_all by AP_INVOICE_PAYMENTS_ALL.one row created in AP_INVOICE_PAYMENTS_ALL with reference of invoice id.&lt;br /&gt;AP_INVOICE_PAYMENTS_ALL.ACCRUAL_POSTED_FLAG='Y'&lt;br /&gt;AP_INVOICE_PAYMENTS_ALL.CASH_POSTED_FLAG='Y'&lt;br /&gt;AP_INVOICE_PAYMENTS_ALL.POSTED_FLAG='Y'and when get void the AP_INVOICE_PAYMENTS_ALL.REVERSAL_FLAG='Y' unless it is 'N'&lt;br /&gt;When payment got accounted the one row created in ap_accounting_events_all with ap_accounting_events_all.source_id=AP_INVOICE_PAYMENTS_ALL.check_id and AP_INVOICE_PAYMENTS_ALL.source_table='AP_CHECKS'&lt;br /&gt;&lt;br /&gt;After Clearing Check from cash management&lt;br /&gt;=====================================&lt;br /&gt;open payment document and create accounting for it, showing partial now.&lt;br /&gt;after successfull accounting of the document:&lt;br /&gt;one line is created in AP_PAYMENT_HISTORY_all with new accounting _event_id.&lt;br /&gt;AP_PAYMENT_HISTORY_all.accounting_event_id=&lt;br /&gt;ap_accounting_events_all.accounting_event_idone new line created in ap_accounting_events_all with EVENT_TYPE_CODE='PAYMENT CLEARING'and AP_INVOICE_PAYMENTS_ALL.source_table='AP_CHECKS'&lt;br /&gt;ap_accounting_events_all.source_id=AP_INVOICE_PAYMENTS_ALL.check_id andAP_PAYMENT_HISTORY_all.accounting_event_id=&lt;br /&gt;ap_accounting_events_all.accounting_event_id&lt;br /&gt;one row created in AP_AE_HEADERS_ALL with new accounting_event_id and two rows in this case created in ap_ae_lines_all with AE_LINE_TYPE_CODE='CASH CLEARING ' AND 'CASH',SOURCE_TABLE='AP_CHECKS'.&lt;br /&gt;&lt;br /&gt;When Posted in GL (GL_POSTING)&lt;br /&gt;===============================&lt;br /&gt;after running the request "Payables Transfer to General Ledger".The ap_ae_lines_all.GL_SL_LINK_ID populates.AP_AE_HEADERS_ALL.GL_TRANSFER_FLAG='Y'AP_AE_HEADERS_ALL.&lt;br /&gt;GL_TRANSFER_RUN_ID IS NOT NULL AP_AE_HEADERS_ALL.TRIAL_BALANCE_FLAG='Y'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-471901838543762659?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_fem3zvR84_wIbntWJgKbQ5ShSE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_fem3zvR84_wIbntWJgKbQ5ShSE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_fem3zvR84_wIbntWJgKbQ5ShSE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_fem3zvR84_wIbntWJgKbQ5ShSE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/V9Y4UGWyjE8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/471901838543762659/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/12/ap-invoice-technical-details-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/471901838543762659?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/471901838543762659?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/V9Y4UGWyjE8/ap-invoice-technical-details-with.html" title="AP Invoice Technical Details with Functional Inputs" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/12/ap-invoice-technical-details-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcHQns6eCp7ImA9WxBTGUo.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-5998505609227721817</id><published>2009-12-16T06:32:00.000-08:00</published><updated>2009-12-16T06:33:53.510-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-16T06:33:53.510-08:00</app:edited><title>Interview Questions Reports 6i</title><content type="html">What are the various types of reports ?&lt;br /&gt;* Tabular, Master Detail, Form, Form Letter, Mailing Labels, Matrix&lt;br /&gt;&lt;br /&gt;2. What is the difference between Master - Detail Report and report created by breaks ?&lt;br /&gt;* Master/detail data models are very similar to break report data models. However, a master/detail data model is created using two queries, each of which owns at least one group, and a data link. A break report data model is created using one query and at least two groups. While reports based on a single query are usually more efficient than reports based on multiple queries, sometimes the structure of your data tables may require you to link multiple tables.&lt;br /&gt;&lt;br /&gt;3. What are Anchors ?&lt;br /&gt;* An anchor defines the relative position of an object to the object to which it is anchored. Anchors are used to determine the vertical and horizontal positioning of a child object relative to its parent. Since the size of some layout objects may change when the report runs (and data is actually fetched), you need anchors to define where you want objects to appear relative to one another.&lt;br /&gt;&lt;br /&gt;4. What are the various types of anchors in Reports ?&lt;br /&gt;A There are two types of anchors in Oracle Reports:&lt;br /&gt;* implicit (anchors that Oracle Reports creates when a report is run)&lt;br /&gt;* explicit (anchors you create)&lt;br /&gt;&lt;br /&gt;Implicit Anchors : At runtime, Oracle Reports generates an implicit anchor for each layout object that does not already have an explicit anchor. It determines for each layout object which objects, if any, can overwrite it, then creates an anchor from the layout object to the closest object that can overwrite it. This prevents the object from being overwritten. The implicit anchor functionality saves you from having to define the positioning of each object. Implicit anchors are not visible in the Layout editor. However, you can specify that the Object Navigator display anchoring information using the Object Navigator Options dialog.&lt;br /&gt;&lt;br /&gt;Explicit Anchors : Create an anchor in the Layout editor by clicking on the Anchor tool, dragging from one edge of the child to the one of the parent's edges, then specifying the anchor's properties in its property sheet. Any anchor you create for an object will override its implicit anchoring. Explicit anchors are always visible in the Layout editor unless you specify otherwise via the Layout Options dialog&lt;br /&gt;&lt;br /&gt;9. What are the various report triggers ? What is their order of firing ?&lt;br /&gt;A There are eight report triggers. Of these there are five global triggers called the Report Triggers. They are fired in the following order :&lt;br /&gt;* Before Parameter Form&lt;br /&gt;* After Parameter Form&lt;br /&gt;* Before Report&lt;br /&gt;* Between Pages&lt;br /&gt;* After Report&lt;br /&gt;&lt;br /&gt;Apart from the above Five Report Triggers, there are three other types of triggers :&lt;br /&gt;* Validation Triggers&lt;br /&gt;* Format Triggers&lt;br /&gt;* Action Triggers&lt;br /&gt;&lt;br /&gt;Before Form : Fires before the Runtime Parameter Form is displayed. From this trigger, you can access and change the values of parameters, PL/SQL global variables, and report-level columns. (Note : If the Runtime Parameter Form is suppressed, this trigger still fires. Consequently, you can use this trigger for validation of command line parameters).&lt;br /&gt;&lt;br /&gt;After Form : Fires after the Runtime Parameter Form is displayed. From this trigger, you can access parameters and check their values. This trigger can also be used to change parameter values or, if an error occurs, return to the Runtime Parameter Form. Columns from the data model are not accessible from this trigger. (Note : If the Runtime Parameter Form is suppressed, the After Form trigger still fires. Consequently, you can use this trigger for validation of command line parameters or other data).&lt;br /&gt;&lt;br /&gt;Before Report : Fires before the report is executed but after queries are parsed and data is fetched.&lt;br /&gt;&lt;br /&gt;Between Pages : Fires before each page of the report is formatted, except the very first page. This trigger can be used for customized page formatting. (Note : In the Previewer, this trigger only fires the first time that you go to a page. If you subsequently return to the page, the trigger does not fire again.)&lt;br /&gt;&lt;br /&gt;After Report : Fires after you exit the Previewer, or after report output is sent to a specified destination, such as a file, a printer, or an Oracle*Mail userid. This trigger can be used to clean up any initial processing that was done, such as deleting tables. Note, however, that this trigger always fires, whether or not your report completed successfully.&lt;br /&gt;&lt;br /&gt;Validation Triggers : Validation Triggers are PL/SQL functions that are executed when parameter values are specified on the command line and when you accept the Runtime Parameter Form. (Notice that this means each Validation Trigger may fire twice when you execute the report). Validation Triggers are also used to validate the Initial Value of the parameter in the Parameter property sheet.&lt;br /&gt;&lt;br /&gt;Format Triggers : Format Triggers are PL/SQL functions executed before the object is formatted. The trigger can be used to dynamically change the formatting attributes of the object.&lt;br /&gt;&lt;br /&gt;Action Triggers : Action Triggers are PL/SQL procedures executed when a button is selected in the Previewer. The trigger can be used to dynamically call another report (drill down) or execute any other PL/SQL.&lt;br /&gt;&lt;br /&gt;19. What are Placeholder Columns ?&lt;br /&gt;A A placeholder is a "dummy" column for which you can conditionally set the datatype and value via PL/SQL or a user exit. Placeholder columns are useful when you want to selectively populate a column with a value (e.g., each time the nth record is fetched, or each time a record is fetched containing a specific value, etc.).&lt;br /&gt;&lt;br /&gt;20. What are the various Module Types in Reports ?&lt;br /&gt;A You can build three types of modules with Oracle Reports:&lt;br /&gt;* external queries, which are ANSI-standard SQL SELECT statements that can be referenced by modules&lt;br /&gt;* external PL/SQL libraries, which are collections of PL/SQL source code that can be referenced by modules&lt;br /&gt;* reports, which are collections of report-level objects and references to external queries and PL/SQL libraries (optional) that can be referenced by modules&lt;br /&gt;&lt;br /&gt;22. What are Physical and Logical pages in Reports ?&lt;br /&gt;A A report page can have any length and any width. Because printer pages may be smaller or larger than your report's "page," the concept of physical and logical pages is used.&lt;br /&gt;&lt;br /&gt;Physical Page : A physical page (or panel) is the size of a page that will be output by your printer.&lt;br /&gt;&lt;br /&gt;Logical Page : A logical page is the size of one page of your actual report; one logical page may be made up of multiple physical pages. The Previewer displays the logical pages of your report output, one at a time.&lt;br /&gt;&lt;br /&gt;23. What are the various page layout sections in Oracle Reports ?&lt;br /&gt;A A report has three sections : the report header pages, report body/margin pages, and report trailer pages.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;27. What are various types of parameters ?&lt;br /&gt;A There are two types of parameters:&lt;br /&gt;* default (called system parameters)&lt;br /&gt;* user-created (called bind and lexical parameters)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;30. How do you reference parameters and columns in reports ?&lt;br /&gt;A In two ways :&lt;br /&gt;* As bind references&lt;br /&gt;* As lexical references&lt;br /&gt;&lt;br /&gt;31. What are Bind Referencing and Lexical Referencing ?&lt;br /&gt;* Bind Referencing : Bind references are used to replace a single value in SQL or PL/SQL, such as a character string, number, or date. Use bind reference when you want the parameter to substitute only one value at runtime. Specifically, bind references may be used to replace expressions in SELECT, WHERE, GROUP BY, ORDER BY, HAVING, CONNECT BY, and START WITH clauses of queries.&lt;br /&gt;&lt;br /&gt;Lexical Referencing : Lexical references are placeholders for text that you embed in a SELECT statement. Use Lexical reference when you want the parameter to substitute multiple values at runtime. You can use lexical references to replace the clauses appearing after SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING, CONNECT BY, and START WITH.&lt;br /&gt;&lt;br /&gt;33. Can you create a group without any break columns ?&lt;br /&gt;* No.&lt;br /&gt;&lt;br /&gt;35. Types of Matrix report ?&lt;br /&gt;* 1. Single query 2. Multi query 3. Nested Query 4. Matrix Break&lt;br /&gt;&lt;br /&gt;37. In Reports, how can you print one record per page in the output ?&lt;br /&gt;* Set the Maximum records per page property of the Repeating frame to 1.&lt;br /&gt;&lt;br /&gt;38. How do you print a Report 2.5 report in character mode ?&lt;br /&gt;* Set MODE = 'Character' in the Parameter form&lt;br /&gt;&lt;br /&gt;39. What are widow lines ?&lt;br /&gt;* Widow lines are the minimum number of lines of the boilerplate text or field that should appear on the logical page where the text starts to print. If the number of lines specified for this property cannot fit on the logical page, then all lines of the boilerplate are moved to the next page.&lt;br /&gt;&lt;br /&gt;40. What are widow records ?&lt;br /&gt;* Widow records are the minimum number of instances (records) that should appear on the logical page where the repeating frame starts to print. If the number of instances specified for this property cannot fit on the logical page where the repeating frame is initially triggered to print, then the repeating frame will start formatting on the next page.&lt;br /&gt;&lt;br /&gt;41. What is 'page protect' property for objects ?&lt;br /&gt;* Page protect property for an object indicates whether to try to keep the entire object and its contents on the same logical page. Checking Page Protect means that if the contents of the object cannot fit on the current logical page, the object and all of its contents will be moved to the next logical page.&lt;br /&gt;&lt;br /&gt;42. What is the 'Print Condition Type' property ?&lt;br /&gt;* 'Print Condition Type' property specifies the frequency with which you want the object to appear in the report. The Print Condition Type options indicate the logical page(s) on which the object should be triggered to print with regard to the Print Condition Object.&lt;br /&gt;&lt;br /&gt;44. What are the various values of the 'Print Condition Type' property in Reports ?&lt;br /&gt;* The various values are :&lt;br /&gt;All : All means the object and all of its contents will be printed on all logical pages of the Print Condition Object. The object will be repeated on any overflow pages of the Print Condition Object and will be truncated at the logical page boundary, if necessary.&lt;br /&gt;&lt;br /&gt;All but First : All but First means the object and all of its contents will be printed on all logical pages of the Print Condition Object except the first logical page. The object will be formatted only on overflow pages of the Print Condition Object and will be truncated at the logical page boundary, if necessary.&lt;br /&gt;&lt;br /&gt;All but Last : All but Last means the object and all of its contents will be printed on all logical pages of the Print Condition Object except the last logical page. The object will be repeated on any overflow pages of the Print Condition Object except the last one and will be truncated at the logical page boundary, if necessary.&lt;br /&gt;&lt;br /&gt;*Default : Default means that Oracle Reports will use object positioning to set the Print Condition Type to either *First or *Last for you. (The asterisk indicates that Oracle Reports specified the setting for you.)&lt;br /&gt;&lt;br /&gt;First : First means that the object and all of its contents will only be printed on the first logical page of the Print Condition Object. The object will be formatted and will overflow to subsequent pages, if necessary.&lt;br /&gt;&lt;br /&gt;Last : Last means that the object and all of its contents will only be printed on the last logical page of the Print Condition Object. The object will be formatted after the Print Condition Object and will overflow to subsequent pages, if necessary.&lt;br /&gt;&lt;br /&gt;* For repeating frames, the print condition type property refers to every logical page of every instance (record) of the repeating frame. If you specify a Print Condition Type setting of All and a Print Condition Object setting of Enclosing Object for a field F_1, it prints in every instance of repeating frame R_1 on every logical page. If you specify a Print Condition Type setting of All but First in the above case , then the field will be printed only in those cases where a single instance (row or record) of the repeating frame spans across more than one page (which is normally not the case since many records are there in a single logical page and not one record in many pages). In such a case the field will be printed on all subsequent pages of this instance except the first page.&lt;br /&gt;&lt;br /&gt;43. What is the 'Print Condition Object' property ?&lt;br /&gt;* 'Print Condition Object' property specifies the object on which to base the Print Condition Type of the current object. For example, if you specify a Print Condition Type of All and a Print Condition Object of Anchoring Object, the current object will be triggered to print on every logical page on which its anchoring object (parent object) appears.&lt;br /&gt;&lt;br /&gt;45. What are the various values of the 'Print Condition Object' property in Reports ?&lt;br /&gt;* The various values are :&lt;br /&gt;Anchoring Object : Anchoring Object is the parent object to which the current object is implicitly or explicitly anchored.&lt;br /&gt;Enclosing Object : Enclosing Object is the object that encloses the current object.&lt;br /&gt;&lt;br /&gt;46. What is the horizontal of vertical sizing property of objects ?&lt;br /&gt;* Horizontal of vertical sizing property specifies how the horizontal or vertical size of the object may change at runtime to accommodate the objects or data within it.&lt;br /&gt;&lt;br /&gt;47. What are the various values of the horizontal of vertical sizing property ?&lt;br /&gt;* The various values are :&lt;br /&gt;Contract : Contract means the vertical size of the object decreases, if the formatted objects or data within it are short enough, but it cannot increase to a height greater than that shown in the editor. Note : Truncation of data may occur. (You can think of this option as meaning "only contract, do not expand.")&lt;br /&gt;&lt;br /&gt;Expand : Expand means the vertical size of the object increases, if the formatted objects or data within it are tall enough, but it cannot decrease to a height less than that shown in the editor. (You can think of this option as meaning "only expand, do not contract.")&lt;br /&gt;&lt;br /&gt;Fixed : Fixed means the height of the object is the same on each logical page, regardless of the size of the objects or data within it. Note : Truncation of data may occur. The height of the object is defined to be its height in the editor.&lt;br /&gt;&lt;br /&gt;Variable : Variable means the object may expand or contract vertically to accommodate the objects or data within it (with no extra space), which means the height shown in the editor has no effect on the object's height at runtime.&lt;br /&gt;&lt;br /&gt;51. How do you display a message in reports ?&lt;br /&gt;* SRW.Message&lt;br /&gt;&lt;br /&gt;54. What are the various values of 'Print Panel Order' property of report ?&lt;br /&gt;* The various values are :&lt;br /&gt;Across/Down : Across/Down means the physical pages of the report body will print left-to-right then top-to-bottom.&lt;br /&gt;&lt;br /&gt;Down/Across : Down/Across means the physical pages of the report body will print top-to-bottom and then left-to-right.&lt;br /&gt;&lt;br /&gt;55. What is the 'Print Direction' Property of Repeating frames ?&lt;br /&gt;* 'Print Direction' Property specifies the direction in which successive instances of the repeating frame appear.&lt;br /&gt;&lt;br /&gt;56. What are the various values of the 'Print Direction' Property of Repeating frames ?&lt;br /&gt;* The various values are :&lt;br /&gt;Across : Across means that each instance of the repeating frame subsequent to the first instance is printed to the right of the previous instance across the logical page.&lt;br /&gt;&lt;br /&gt;Across/Down : Across/Down means that each instance of the repeating frame subsequent to the first instance is printed to the right of the previous instance until an entire instance cannot fit between the previous instance and the right margin of the logical page. At that time, Oracle Reports prints the instance below the left-most instance on the logical page, provided there is enough vertical space left on the logical page for the instance to print completely.&lt;br /&gt;&lt;br /&gt;Down : Down means that each instance of the repeating frame subsequent to the first instance is printed below the previous instance down the logical page.&lt;br /&gt;&lt;br /&gt;Down/Across : Down/Across means that each instance of the repeating frame subsequent to the first instance is printed below the previous instance until an entire instance cannot fit inside the bottom margin of the logical page. At that time, Oracle Reports prints the instance to the right of the topmost instance on the logical page, provided there is enough horizontal space left on the logical page for the instance to print completely.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;59. What is the 'Keep with Anchoring Object' object property ?&lt;br /&gt;* 'Keep with Anchoring Object' object property indicates whether to keep an object and the object to which it is anchored on the same logical page. Checking Keep with Anchoring Object means that if the object, its anchoring object, or both cannot fit on the logical page, they will be moved to the next logical page.&lt;br /&gt;&lt;br /&gt;60. What is 'Page Break Before' object property ?&lt;br /&gt;* 'Page Break Before' object property indicates that you want the object to be formatted on the page after the page on which it is initially triggered to print. Note that this does not necessarily mean that all the objects below the object with Page Break Before will move to the next page.&lt;br /&gt;&lt;br /&gt;61. What is 'Page Break After' object property ?&lt;br /&gt;* 'Page Break After' object property indicates that you want all children of the object to be moved to the next page. In other words, any object that is a child object of an anchor (implicit or explicit) to this object will be treated as if it has Page Break Before set. Note that this does not necessarily mean that all the objects below the object with Page Break After will move to the next page.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;63. What is the 'Break Order' property of columns ?&lt;br /&gt;* The 'Break Order' property is the order in which to display the column's values. This property applies only to columns that identify distinct values of user-created groups (i.e., break groups). The order of column values in a default group is determined by the ORDER BY clause of the query. For column values in user-created groups, however, you must use Break Order to specify how to order the break column's values.&lt;br /&gt;&lt;br /&gt;64. What are the various types of links ?&lt;br /&gt;* The Data Link tool draws a link between a parent group and a child query. Creating a link is a drag and drop operation. Clicking and dragging from one column to another creates a link between those two columns (column to column link). Clicking and dragging from one query to another creates all possible links between columns selected by the queries based on database constraints (query to query link). Clicking and dragging between two groups creates a group-to-group link (i.e., a link with no columns).&lt;br /&gt;&lt;br /&gt;65. Name some of the procedures in the SRW package ?&lt;br /&gt;* SRW.Message, SRW.User_Exit, SRW.Do_Sql, SRW.Run_Report&lt;br /&gt;&lt;br /&gt;66. What are the various report layout regions ?&lt;br /&gt;* There are three report regions in the Layout editor :&lt;br /&gt;* header&lt;br /&gt;* body/margin&lt;br /&gt;* trailer&lt;br /&gt;&lt;br /&gt;Header : The report header pages appear once at the beginning of each report on a set of separate pages. They can contain text, graphics, data, and computations.&lt;br /&gt;&lt;br /&gt;Body/Margin : The body/margin pages appear between the header and trailer pages, and are the bulk of the report. Each physical page in this section consists of a body and a margin. The body contains the majority of the report's text, graphics, data, and computations.&lt;br /&gt;A top and bottom margin appear on each page, until all data within the body has been formatted. A margin may include text, graphics, page numbers, page totals, and grand totals. The default margin size is one half inch each for the top and bottom margins and zero for the left and right margins.&lt;br /&gt;&lt;br /&gt;Trailer : The report trailer pages appear once at the end of each report on a set of separate pages. They can contain text, graphics, data, and computations.&lt;br /&gt;&lt;br /&gt;70. What is more efficient : Maximum rows or Group Filter ?&lt;br /&gt;* Maximum Rows in the Query property sheet restricts the number of records fetched by the query. A group filter determines which records to include and which records to exclude. Since Maximum Rows actually restricts the amount of data retrieved, it is faster than a group filter in most cases. If you are using a Filter of Last or Conditional, Oracle Reports must retrieve all of the records in the group before applying the filter criteria. As a result, Maximum Rows or a Filter of First is faster.&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-5998505609227721817?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A0NXRKveg10-w5MAOx7vAzdesbo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A0NXRKveg10-w5MAOx7vAzdesbo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A0NXRKveg10-w5MAOx7vAzdesbo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A0NXRKveg10-w5MAOx7vAzdesbo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/cZCWQKT6tTw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/5998505609227721817/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/12/interview-questions-reports-6i.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/5998505609227721817?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/5998505609227721817?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/cZCWQKT6tTw/interview-questions-reports-6i.html" title="Interview Questions Reports 6i" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>2</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/12/interview-questions-reports-6i.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YDQ3Y-cCp7ImA9WxBTGUk.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-7891562798895916500</id><published>2009-12-15T21:20:00.000-08:00</published><updated>2009-12-15T21:26:12.858-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-15T21:26:12.858-08:00</app:edited><title>Procure to Pay Cycle Query</title><content type="html">&lt;p&gt;Includes two scripts to fetch all the transactions information related with in a procure to pay cycle.&lt;/p&gt;&lt;p&gt;Two scripts are provided to use one with receipts and other when receipts are not created.&lt;br /&gt;Few important fields that were included in the script are Requisition Number, Purchase Order Number, Invoice Number, Customer Number, Invoice Amount, GL Transfer flag e.t.c&lt;br /&gt;&lt;/p&gt;&lt;p&gt;WITH OUT RECEIPTS &lt;/p&gt;&lt;p&gt;===========================&lt;br /&gt;    -- WITH OUT RECEIPTS&lt;br /&gt;    -- procure to pay cycle query&lt;br /&gt;    select distinct&lt;br /&gt;           reqh.segment1 REQ_NUM,&lt;br /&gt;           reqh.AUTHORIZATION_STATUS REQ_STATUS,&lt;br /&gt;    --       poh.po_header_id,&lt;br /&gt;           poh.segment1 PO_NUM,&lt;br /&gt;           pol.line_num,&lt;br /&gt;           poh.AUTHORIZATION_STATUS PO_STATUS,&lt;br /&gt;    --       i.invoice_id,&lt;br /&gt;           i.invoice_num,&lt;br /&gt;           i.invoice_amount,&lt;br /&gt;           i.amount_paid,&lt;br /&gt;            i.vendor_id,&lt;br /&gt;    --       v.vendor_name,&lt;br /&gt;    --       p.check_id,&lt;br /&gt;           c.check_number,&lt;br /&gt;           h.gl_transfer_flag,&lt;br /&gt;           h.period_name &lt;br /&gt;    from ap_invoices_all i,&lt;br /&gt;         ap_invoice_distributions_all invd,&lt;br /&gt;         po_headers_all poh,&lt;br /&gt;         po_lines_all pol,&lt;br /&gt;         po_distributions_all pod,&lt;br /&gt;         po_vendors v,&lt;br /&gt;         po_requisition_headers_all reqh,&lt;br /&gt;         po_requisition_lines_all reql,&lt;br /&gt;         po_req_distributions_all reqd,    &lt;br /&gt;         ap_invoice_payments_all p,&lt;br /&gt;         ap_checks_all c,&lt;br /&gt;         ap_ae_headers_all h,&lt;br /&gt;         ap_ae_lines_all l&lt;br /&gt;    where 1=1    &lt;br /&gt;    and i.vendor_id = v.vendor_id&lt;br /&gt;    and c.check_id = p.check_id&lt;br /&gt;    and p.invoice_id = i.invoice_id&lt;br /&gt;    and poh.PO_HEADER_ID = pol.PO_HEADER_ID&lt;br /&gt;    and reqh.REQUISITION_HEADER_ID = reql.REQUISITION_HEADER_ID&lt;br /&gt;    and reqd.REQUISITION_LINE_ID = reql.REQUISITION_LINE_ID&lt;br /&gt;    and pod.REQ_DISTRIBUTION_ID = reqd.DISTRIBUTION_ID&lt;br /&gt;    and pod.PO_HEADER_ID = poh.PO_HEADER_ID&lt;br /&gt;    and pod.PO_DISTRIBUTION_ID = invd.PO_DISTRIBUTION_ID&lt;br /&gt;    and invd.INVOICE_ID = i.INVOICE_ID&lt;br /&gt;    and h.ae_header_id = l.ae_header_id&lt;br /&gt;    and l.SOURCE_TABLE = 'AP_INVOICES'&lt;br /&gt;    AND l.SOURCE_ID = i.invoice_id&lt;br /&gt;    --and poh.segment1 = 4033816 -- PO NUMBER&lt;br /&gt;    and reqh.segment1 = '501'   -- REQ NUMBER&lt;br /&gt;    --and i.invoice_num = 3114     -- INVOICE NUMBER&lt;br /&gt;    --and c.check_number =     -- CHECK NUMBER&lt;br /&gt;        --and vendor_id =          -- VENDOR ID   &lt;/p&gt;&lt;p&gt;===========================================&lt;/p&gt;&lt;p&gt;WITH RECEIPTS &lt;/p&gt;&lt;p&gt;===========================================&lt;br /&gt;-- PROCURE TO PAY CYCLE QUERY WITH RECEIPTS&lt;br /&gt;SELECT DISTINCT reqh.segment1 req_num, reqh.authorization_status req_status,              &lt;br /&gt;      --       POH.PO_HEADER_ID,&lt;br /&gt;                poh.segment1 po_num, pol.line_num,&lt;br /&gt;                poh.authorization_status po_status, rcvh.receipt_num,&lt;br /&gt;                rcv.inspection_status_code,&lt;br /&gt;      --       I.INVOICE_ID,&lt;br /&gt;                i.invoice_num, i.invoice_amount,&lt;br /&gt;                i.amount_paid, i.vendor_id,&lt;br /&gt;      --       V.VENDOR_NAME,&lt;br /&gt;      --       P.CHECK_ID,&lt;br /&gt;                c.check_number, h.gl_transfer_flag,&lt;br /&gt;                h.period_name&lt;br /&gt;           FROM ap_invoices_all i,&lt;br /&gt;                ap_invoice_distributions_all invd,&lt;br /&gt;                po_headers_all poh,&lt;br /&gt;                po_lines_all pol,&lt;br /&gt;                po_distributions_all pod,&lt;br /&gt;                po_vendors v,&lt;br /&gt;                po_requisition_headers_all reqh,&lt;br /&gt;                po_requisition_lines_all reql,&lt;br /&gt;                po_req_distributions_all reqd,&lt;br /&gt;                rcv_transactions rcv,&lt;br /&gt;                rcv_shipment_headers rcvh,&lt;br /&gt;                rcv_shipment_lines rcvl,&lt;br /&gt;                ap_invoice_payments_all p,&lt;br /&gt;                ap_checks_all c,&lt;br /&gt;                ap_ae_headers_all h,&lt;br /&gt;                ap_ae_lines_all l&lt;br /&gt;          WHERE 1 = 1&lt;br /&gt;            AND i.vendor_id = v.vendor_id&lt;br /&gt;            AND c.check_id = p.check_id&lt;br /&gt;            AND p.invoice_id = i.invoice_id&lt;br /&gt;            AND poh.po_header_id = pol.po_header_id&lt;br /&gt;            AND reqh.requisition_header_id = reql.requisition_header_id&lt;br /&gt;            AND reqd.requisition_line_id = reql.requisition_line_id&lt;br /&gt;            AND pod.req_distribution_id = reqd.distribution_id&lt;br /&gt;            AND pod.po_header_id = poh.po_header_id&lt;br /&gt;            --AND POH.PO_HEADER_ID = RCV.PO_HEADER_ID&lt;br /&gt;            AND rcvh.shipment_header_id = rcv.shipment_header_id(+)&lt;br /&gt;            --AND RCVH.SHIPMENT_HEADER_ID = RCVL.SHIPMENT_HEADER_ID&lt;br /&gt;            --AND RCV.TRANSACTION_TYPE = 'RECEIVE'&lt;br /&gt;            --AND RCV.SOURCE_DOCUMENT_CODE = 'PO'&lt;br /&gt;            --AND POL.PO_LINE_ID = RCV.PO_LINE_ID&lt;br /&gt;            --AND POD.PO_DISTRIBUTION_ID = RCV.PO_DISTRIBUTION_ID&lt;br /&gt;            AND pod.po_distribution_id = invd.po_distribution_id&lt;br /&gt;            AND invd.invoice_id = i.invoice_id&lt;br /&gt;            AND h.ae_header_id = l.ae_header_id&lt;br /&gt;            AND l.source_table = 'AP_INVOICES'&lt;br /&gt;            AND l.source_id = i.invoice_id&lt;br /&gt;            --AND POH.SEGMENT1 = 36420 -- PO NUMBER&lt;br /&gt;            AND reqh.segment1 = '501'  -- REQ NUMBER&lt;br /&gt;            --AND I.INVOICE_NUM = 3114     -- INVOICE NUMBER&lt;br /&gt;            --AND C.CHECK_NUMBER =     -- CHECK NUMBER&lt;br /&gt;            --AND VENDOR_ID =          -- VENDOR ID&lt;br /&gt;            --AND RECEIPT_NUM = 692237&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-7891562798895916500?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PYCMnzBjhC_AZzXgO3CyjpY0Ano/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PYCMnzBjhC_AZzXgO3CyjpY0Ano/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PYCMnzBjhC_AZzXgO3CyjpY0Ano/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PYCMnzBjhC_AZzXgO3CyjpY0Ano/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/fCeQHK3FRy8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/7891562798895916500/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/12/procure-to-pay-cycle-query.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/7891562798895916500?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/7891562798895916500?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/fCeQHK3FRy8/procure-to-pay-cycle-query.html" title="Procure to Pay Cycle Query" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/12/procure-to-pay-cycle-query.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEERnY_fCp7ImA9WxBTGEU.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-9120542657242641296</id><published>2009-12-15T04:33:00.000-08:00</published><updated>2009-12-15T04:36:47.844-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-15T04:36:47.844-08:00</app:edited><title>Form Personalization : UPDATE ALLOWED :FALSE</title><content type="html">The requirment is  to restrict Libiality code field against updatation , once the invoice validated. The libiality code field is hidden in the form means from show field we have to select that for display. I tried with personalizations on the field as follows :&lt;br /&gt;&lt;br /&gt;Go to the Invoice Form with querry one of the invoice :Navigation : Help &gt; Digonostics &gt; Custom Code &gt; Personalize&lt;br /&gt;&lt;br /&gt;Condition&lt;br /&gt;==========&lt;br /&gt;Trigger Event : WHEN-NEW-ITEM-INSTANCE&lt;br /&gt;Trigger Object : INV_SUM_FOLDER.APPROVAL_STATUS_DISPLAY&lt;br /&gt;Condition : ${item.inv_sum_folder.approval_status_display.value} ='Validated'&lt;br /&gt;Note : We can use IN operator in Condition like             &lt;br /&gt;${item.inv_sum_folder.approval_status_display.value} in ('Validated','Never Validated')&lt;br /&gt;Processing Mode : Both&lt;br /&gt;&lt;br /&gt;Action&lt;br /&gt;========&lt;br /&gt;Type : Property&lt;br /&gt;Language : All&lt;br /&gt;&lt;br /&gt;Object Type : Item&lt;br /&gt;Target Object : INV_SUM_FOLDER.LIABILITY_ACCOUNT&lt;br /&gt;Property Name : UPDATE_ALLOWED (ITEM-INSTANCE)&lt;br /&gt;Value : False&lt;br /&gt;&lt;br /&gt;Thanks &amp;amp; Regards,&lt;br /&gt;Kamlesh Nikhade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-9120542657242641296?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/q9HUMAXzDsYjnw_oVHkD-dxCato/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/q9HUMAXzDsYjnw_oVHkD-dxCato/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/q9HUMAXzDsYjnw_oVHkD-dxCato/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/q9HUMAXzDsYjnw_oVHkD-dxCato/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/eapP8VXDRpI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/9120542657242641296/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/12/form-personalization-update-allowed.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/9120542657242641296?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/9120542657242641296?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/eapP8VXDRpI/form-personalization-update-allowed.html" title="Form Personalization : UPDATE ALLOWED :FALSE" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/12/form-personalization-update-allowed.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8DQ3ozfSp7ImA9WxBTF04.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-9015984851969242962</id><published>2009-12-13T12:53:00.000-08:00</published><updated>2009-12-13T12:57:52.485-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-13T12:57:52.485-08:00</app:edited><title>Some Important Links</title><content type="html">&lt;span style="font-weight: bold;"&gt;1)  eTRM ( Electronic Technical Manual )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://etrm.oracle.com/"&gt;http://etrm.oracle.com&lt;/a&gt;&lt;br /&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-9015984851969242962?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5thCuTUePriOPs6n2Ds80kxdF7E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5thCuTUePriOPs6n2Ds80kxdF7E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5thCuTUePriOPs6n2Ds80kxdF7E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5thCuTUePriOPs6n2Ds80kxdF7E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/vVq2n-Zn73g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/9015984851969242962/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/12/important-links.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/9015984851969242962?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/9015984851969242962?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/vVq2n-Zn73g/important-links.html" title="Some Important Links" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/12/important-links.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUBRX45fSp7ImA9WxBTF04.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-6143639927136385237</id><published>2009-12-13T12:40:00.001-08:00</published><updated>2009-12-13T12:47:34.025-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-13T12:47:34.025-08:00</app:edited><title>Open Invoice Interface &amp; How to find the table in Oracle Apps</title><content type="html">&lt;a href="http://download.oracle.com/docs/cd/A60725_05/html/comnls/us/ap/invimp.htm"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;Invoice Import Interface Tables&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;How to find the table in Oracle Apps&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;select * from dba_objects where owner 'GL' and object_type 'TABLE'&lt;br /&gt;&lt;br /&gt;Change owner for respective module table info.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-6143639927136385237?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CbbXkeLFYTzQiMBhhb8QVZhskEk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CbbXkeLFYTzQiMBhhb8QVZhskEk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CbbXkeLFYTzQiMBhhb8QVZhskEk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CbbXkeLFYTzQiMBhhb8QVZhskEk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/NMGBoN1ut1M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/6143639927136385237/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/12/open-invoice-interface.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/6143639927136385237?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/6143639927136385237?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/NMGBoN1ut1M/open-invoice-interface.html" title="Open Invoice Interface &amp; How to find the table in Oracle Apps" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/12/open-invoice-interface.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAHSHc6fyp7ImA9WxBTF04.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-7305486508393916804</id><published>2009-12-13T12:32:00.000-08:00</published><updated>2009-12-13T12:38:59.917-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-13T12:38:59.917-08:00</app:edited><title>Impotant Tables In Account Payables</title><content type="html">1- AP_INVOICES_ALL&lt;br /&gt;&lt;br /&gt;2- AP_INVOICE_DISTRIBUTIONS_ALL&lt;br /&gt;&lt;br /&gt;3- AP_PAYMENT_SCHEDULES_ALL&lt;br /&gt;&lt;br /&gt;4- AP_HOLDS_ALL&lt;br /&gt;&lt;br /&gt;5- AP_AE_LINES_ALL&lt;br /&gt;&lt;br /&gt;6- AP_AE_HEADERS_ALL&lt;br /&gt;&lt;br /&gt;AP_INVOICES_ALL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AP_INVOICES_ALL contains records for invoices you enter. There is one row for each invoice you enter. An invoice can have one or more invoice distribution lines. An invoice can also have &lt;br /&gt;one or more scheduled payments. An invoice of type EXPENSE REPORT must relate to a row in AP_EXPENSE_REPORT_HEADERS_ALL unless the record has been purged from &lt;br /&gt;AP_EXPENSE_REPORT_HEADERS_ALL. Your Oracle Payables application uses the INTEREST type invoice for interest that itcalculates on invoices that are overdue. Your Oracle Payables &lt;br /&gt;application links the interest invoice to the original invoice by inserting the INVOICE_ID in the AP_INVOICE_RELATIONSHIPS table.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;AP_INVOICE_DISTRIBUTIONS_ALL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AP_INVOICE_DISTRIBUTIONS_ALL holds the distribution line information that you enter for invoices. There is a row for each invoice distribution. A distribution line must be associated &lt;br /&gt;with an invoice. An invoice can have multiple distribution lines. Your Oracle Payables application automatically creates rows in this table when:&lt;br /&gt;&lt;br /&gt;1) you choose a distribution set at the invoice level&lt;br /&gt;&lt;br /&gt;2) you import expense reports&lt;br /&gt;&lt;br /&gt;3) you match an invoice to a purchase order or receipt; ituses information from the matched purchase order or receipt&lt;br /&gt;&lt;br /&gt;4) you import invoices via the Open Interface Import process&lt;br /&gt;&lt;br /&gt;5) you select to automatically calculate tax&lt;br /&gt;&lt;br /&gt;6) you select to automatically do withholding.&lt;br /&gt;&lt;br /&gt;Each invoice distribution line has its own accounting date. When you account for an invoice, your OraclePayables application creates accounting events, accounting entry headers and &lt;br /&gt;accounting entry lines for those distribution lines that have accounting dates included in the selected accounting date range for the Payables Accounting Process.The accounting entries can &lt;br /&gt;then be transferred over to General Ledger by running the Transfer to General Ledger process which creates journal entries. Values for POSTED_FLAG may be Y for accounted distributions &lt;br /&gt;or N for distributions that have not been accounted. Values for ACCRUAL_POSTED_FLAG may be Y if distribution has been accounted and system is set up for accrual basis accounting or &lt;br /&gt;N if either distribution has not been accounted or accrual basis accounting is not used. Values for CASH_POSTED_FLAG may be Y if distribution has been accounted and system is set up for &lt;br /&gt;cash basis accounting, N if either distribution has not been accounted or system is not set up for cash basis accounting or P if distribution has been partially accounted in the cash set of &lt;br /&gt;books. The MATCH_STATUS_FLAG indicates the approval status for the distribution. Values for the MATCH_STATUS_FLAG can be null or N for invoice distributions that Approval has &lt;br /&gt;not tested or T for distributions that have been tested or A for distributions that have been tested and approved. Invoice distributions may be interfaced over/from Oracle Assets or Oracle &lt;br /&gt;Projects. Your Oracle Payables application sets the ASSETS_ADDITION_FLAG to U for distributions not tested by Oracle Assets; Oracle Assets then adjusts this flag after it tests a &lt;br /&gt;distribution for assignment as an asset.&lt;br /&gt;&lt;br /&gt;To avoid the same invoice distribution being interfaced to both Oracle Projects and Oracle Assets, you must interface any project–related invoice distribution to Oracle Projects before you &lt;br /&gt;can interface it to Oracle Assets. If the project–related invoice distribution is charged to a capital project in Oracle Projects, Oracle Projects sets the ASSET_ADDITION_FLAG to P when the &lt;br /&gt;PA_ADDITION_FLAG is set to Y, Z or T. Oracle Assets only picks up invoice distributions with the ASSET_ADDITION_FLAG set to U and if project–related, with the PA_ADDITION_FLAG &lt;br /&gt;set to Y, Z, or T. PA_ADDITION_FLAG tracks the status of project–related supplier invoice distribution lines and expense report distribution lines.&lt;br /&gt;&lt;br /&gt;For supplier invoice distributions entered via Oracle Payables, the PA_ADDITION_FLAG is set to N if the distribution is project–related, otherwise it is set to E and it is updated by Oracle &lt;br /&gt;Projects when the distribution is processed by the Oracle Projects Interface Supplier Invoice process. Oracle Projects sets the PA_ADDITION_FLAG to Y or Z after the item is successfully &lt;br /&gt;processed, or may be set to a rejection code if the line is rejected during transfer to Oracle Projects; see QuickCodes listing for all the errors. You must correct the rejection reason an try to &lt;br /&gt;retransfer the line. For supplier invoice adjustment lines interfaced from Oracle Projects to Oracle Payables (which must net to zero with another line), the value for the &lt;br /&gt;PA_ADDITION_FLAG is set to T. For expense report distributions interfaced from Oracle Projects to Oracle Payables via Invoice Import, this value is set to N. This row is never picked up by &lt;br /&gt;the Interface Supplier Invoices process based on the AP_INVOICES.INVOICE_TYPE_LOOKUP_CODE = EXPENSEREPORT. For expense report adjustment lines interfaced from Oracle Projects &lt;br /&gt;to Oracle Payables which net to zero with another line, thisvalue is set to T. Both lines are associated with the original invoice by the Oracle Projects Interface Expense Reports to AP process. &lt;br /&gt;Values for the ENCUMBERED_FLAG are as follows:&lt;br /&gt;&lt;br /&gt; - Y indicates aregular distribution that has been successfully encumbered by Payables;&lt;br /&gt;&lt;br /&gt;- W indicates a regular distribution that has been encumbered in advisory mode even though insufficient funds existed;&lt;br /&gt;&lt;br /&gt;- H indicates a regular distribution that has not been encumbered because it was put on hold;&lt;br /&gt;&lt;br /&gt;- Nor null indicates a regular line that has not been encumbered because it has not been looked at yet;&lt;br /&gt;&lt;br /&gt;- D is the same as Y for a reversal distribution line;&lt;br /&gt;&lt;br /&gt;- X is the same as W for a reversal distribution line;&lt;br /&gt;&lt;br /&gt;- P is the same as H for a reversal distribution line;&lt;br /&gt;&lt;br /&gt;- R indicates a line to be ignored by encumbrance and approval code because neither the original nor the reversal distributions were looked at and they offset each other so, they can be ignored.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AP_PAYMENT_SCHEDULES_ALL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AP_PAYMENT_SCHEDULES_ALL contains information about scheduled payments for an invoice. You need one row for each time you intend to make a payment on an invoice. Your Oracle &lt;br /&gt;&lt;br /&gt;Payables application uses this information to determine when to make payments on an invoice and how much to pay in an automatic payment batch. Values for HOLD_FLAG may be ’Y’ to &lt;br /&gt;&lt;br /&gt;place a hold on the scheduled payment, or ’N’ not to do so. Values for PAYMENT_STATUS_FLAG may be ’Y’ for fully paid payment schedules, ’N’ for unpaid scheduled payments, or ’P’ for &lt;br /&gt;partially paid scheduled payments. For converted records, enter a value for AMOUNT_REMAINING.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; AP_HOLDS_ALL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AP_HOLDS_ALL contains information about holds that you or your Oracle Payables application place on an invoice. For non–matching holds, there is one row for each hold placed on an &lt;br /&gt;invoice. For matching holds, there is one row for each hold placed on an invoice–shipment match. An invoice may have one or more corresponding rows in this table. Your Oracle Payables &lt;br /&gt;application does not pay invoices that have one or more unreleased holds recorded in this table. This table holds information referenced by the Invoice Holds window. In the strictest sense, &lt;br /&gt;AP_HOLDS_ALL has no primary key. It is possible for your Oracle Payables application to place a certain type of hold on an invoice, then release it, then place another hold of the same type &lt;br /&gt;(if data changes before each submission of Approval), which would result in a duplicate primary key. But for practical purposes, the primary key is a concatenation of INVOICE_ID, &lt;br /&gt;LINE_LOCATION_ID,and HOLD_LOOKUP_CODE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AP_AE_LINES_ALL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An accounting entry line is an entity containing a proper accounting entry with debits or credits both in transaction currency as well as functional currency along with an account and &lt;br /&gt;other reference information pointing to the transaction data that originated the accounting entry line. An accounting entry line is grouped with other accounting entry lines for a specific &lt;br /&gt;accounting entry header. Any such group of accounting entry lines should result in balanced entries in the functional currency.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;AP_AE_HEADERS_ALL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An accounting entry header is an entity grouping all accounting entry lines created for a given accounting event and a particular set of books. An accounting entry header can either be &lt;br /&gt;transferred over to GL or not at all. That is, either all its accounting entry lines are transferred or none at all. The transferred to GL status is marked in the GL_TRANSFER_FLAG. Possible &lt;br /&gt;values for GL_TRANSFER_FLAG are Y, N, or E. Y indicates that the accounting entry header has been transferred to GL. N indicates that the accounting entry header has not been &lt;br /&gt;transferred to GL due to 2 possible reasons: either the transfer process has not run or it has run but the accounting entry had an accounting error on it. E indicates that an error was &lt;br /&gt;encountered during the transfer to GL process&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-7305486508393916804?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OFPVIdbAT5WNs5K8T5njRH_qtv4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OFPVIdbAT5WNs5K8T5njRH_qtv4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OFPVIdbAT5WNs5K8T5njRH_qtv4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OFPVIdbAT5WNs5K8T5njRH_qtv4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/qQe3bUSThZQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/7305486508393916804/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/12/impotant-tables-in-account-payables.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/7305486508393916804?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/7305486508393916804?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/qQe3bUSThZQ/impotant-tables-in-account-payables.html" title="Impotant Tables In Account Payables" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/12/impotant-tables-in-account-payables.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQDQX47fCp7ImA9WxNaFUs.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-6903700628190312657</id><published>2009-11-29T22:10:00.000-08:00</published><updated>2009-11-29T22:26:10.004-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-29T22:26:10.004-08:00</app:edited><title>Insert BLOB image file in oracle database table</title><content type="html">Step 1: &lt;br /&gt;&lt;br /&gt;CREATE TABLE SV_EMP_PHOTO&lt;br /&gt;(&lt;br /&gt;  ID          NUMBER(3) NOT NULL,&lt;br /&gt;  PHOTO_NAME  VARCHAR2(40),&lt;br /&gt;  PHOTO_RAW   BLOB,&lt;br /&gt;  EMP_NAME    VARCHAR2(80)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step2:&lt;br /&gt;&lt;br /&gt;Create a directory where the photos will be stored. I am creating a directory in UNIX as our database is created in UNIX.&lt;br /&gt;&lt;br /&gt; CREATE OR REPLACE DIRECTORY &lt;br /&gt;SV_PHOTO_DIR AS &lt;br /&gt;'/usr/tmp/SV_PHOTO_DIR';&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 3:&lt;br /&gt;&lt;br /&gt;Copy the image file from local machine to the above created Directory using FTP.&lt;br /&gt;Kindly note that Report 6i does not support to all image formats. I used here .bmp file format.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step4:&lt;br /&gt;&lt;br /&gt;Script to create a procedure SV_LOAD_IMAGE that will insert records in the table.&lt;br /&gt;&lt;br /&gt;/* Formatted on 2009/11/30 11:12 (Formatter Plus v4.8.8) */&lt;br /&gt;CREATE OR REPLACE PROCEDURE apps.sv_load_image (&lt;br /&gt;   p_id                NUMBER,&lt;br /&gt;   p_emp_name     IN   VARCHAR2,&lt;br /&gt;   p_photo_name   IN   VARCHAR2&lt;br /&gt;)&lt;br /&gt;IS&lt;br /&gt;   l_source   BFILE;&lt;br /&gt;   l_dest     BLOB;&lt;br /&gt;   l_length   BINARY_INTEGER;&lt;br /&gt;BEGIN&lt;br /&gt;   l_source := BFILENAME ('SV_PHOTO_DIR', p_photo_name);&lt;br /&gt;&lt;br /&gt;   INSERT INTO sv_emp_photo&lt;br /&gt;               (ID, photo_name, emp_name, photo_raw&lt;br /&gt;               )&lt;br /&gt;        VALUES (p_id, p_photo_name, p_emp_name, EMPTY_BLOB ()&lt;br /&gt;               )&lt;br /&gt;     RETURNING photo_raw&lt;br /&gt;          INTO l_dest;&lt;br /&gt;   -- lock record&lt;br /&gt;   SELECT     photo_raw&lt;br /&gt;         INTO l_dest&lt;br /&gt;         FROM sv_emp_photo&lt;br /&gt;        WHERE ID = p_id AND photo_name = p_photo_name&lt;br /&gt;   FOR UPDATE;&lt;br /&gt;   -- open the file&lt;br /&gt;   DBMS_LOB.fileopen (l_source, DBMS_LOB.file_readonly);&lt;br /&gt;   -- get length&lt;br /&gt;   l_length := DBMS_LOB.getlength (l_source);&lt;br /&gt;   -- read the file and store in the destination&lt;br /&gt;   DBMS_LOB.loadfromfile (l_dest, l_source, l_length);&lt;br /&gt;   -- update the blob field with destination&lt;br /&gt;   UPDATE sv_emp_photo&lt;br /&gt;      SET photo_raw = l_dest&lt;br /&gt;    WHERE ID = p_id AND photo_name = p_photo_name;&lt;br /&gt;   -- close file&lt;br /&gt;   DBMS_LOB.fileclose (l_source);&lt;br /&gt;END sv_load_image;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step5:&lt;br /&gt;&lt;br /&gt;exec sv_load_image(1,'Mr. Kamlesh Nikhade','Kamlesh.bmp');&lt;br /&gt;&lt;br /&gt;Step6 :&lt;br /&gt;&lt;br /&gt;select * from SV_EMP_PHOTO;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_5CJfFGvefnI/SxNjKHkOe1I/AAAAAAAAAKc/88tGXye7Ews/s1600/Toad_Print.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 95px;" src="http://4.bp.blogspot.com/_5CJfFGvefnI/SxNjKHkOe1I/AAAAAAAAAKc/88tGXye7Ews/s320/Toad_Print.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5409776602882931538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Display Image In report 6i&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We will use same SV_EMP_TABLE as a reference and using Reports 6i create a report that prints ID Card. For simplicity there are no parameters to the report and it will create ID cards for all the employees for which record exists in the table.&lt;br /&gt;In the data model create following SQL Query.&lt;br /&gt;&lt;br /&gt;Step 1 :&lt;br /&gt;&lt;br /&gt;SELECT ID, PHOTO_NAME, PHOTO_RAW ,emp_name&lt;br /&gt;FROM SV_EMP_PHOTO;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_5CJfFGvefnI/SxNj4FQ7xVI/AAAAAAAAAKk/E3OcvNblRfs/s1600/Data+Model.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 275px;" src="http://1.bp.blogspot.com/_5CJfFGvefnI/SxNj4FQ7xVI/AAAAAAAAAKk/E3OcvNblRfs/s320/Data+Model.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5409777392539125074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step2:&lt;br /&gt;&lt;br /&gt;The next step is to create a layout for the report. Screenshot below.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_5CJfFGvefnI/SxNkY0cj5zI/AAAAAAAAAKs/Xoc_Zl8tVI4/s1600/properties.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 190px;" src="http://4.bp.blogspot.com/_5CJfFGvefnI/SxNkY0cj5zI/AAAAAAAAAKs/Xoc_Zl8tVI4/s320/properties.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5409777954960172850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The field that stores the value of BLOB column in the properties for the field remember to change the file format to image,&lt;br /&gt;This image data will be retrieved from database and will change with record.&lt;br /&gt;Procedure : Take One text field=&gt;properties=&gt;file format=&gt;image.&lt;br /&gt;&lt;br /&gt;Step 3:&lt;br /&gt;Compile &amp; Run the report.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_5CJfFGvefnI/SxNlCqil4gI/AAAAAAAAAK0/CNS2BkBaCL4/s1600/Output.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 174px;" src="http://1.bp.blogspot.com/_5CJfFGvefnI/SxNlCqil4gI/AAAAAAAAAK0/CNS2BkBaCL4/s320/Output.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5409778673855619586" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-6903700628190312657?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/85Sy47hk3KqIB1FDGdQhI5MpWLE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/85Sy47hk3KqIB1FDGdQhI5MpWLE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/85Sy47hk3KqIB1FDGdQhI5MpWLE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/85Sy47hk3KqIB1FDGdQhI5MpWLE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/xl5MXnFcVrw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/6903700628190312657/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/11/insert-blob-image-file-in-oracle.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/6903700628190312657?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/6903700628190312657?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/xl5MXnFcVrw/insert-blob-image-file-in-oracle.html" title="Insert BLOB image file in oracle database table" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_5CJfFGvefnI/SxNjKHkOe1I/AAAAAAAAAKc/88tGXye7Ews/s72-c/Toad_Print.bmp" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/11/insert-blob-image-file-in-oracle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08MSXozfSp7ImA9WxNbGUg.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-8361694934702759094</id><published>2009-11-22T21:54:00.000-08:00</published><updated>2009-11-22T21:58:08.485-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-22T21:58:08.485-08:00</app:edited><title>Concurrent Program Registration Scripts</title><content type="html">Concurrent Program Registration Scripts ==========================================================&lt;br /&gt;&lt;br /&gt;The scripts in this article can be used to:&lt;br /&gt;1)    Register the executable and Program&lt;br /&gt;2)    Attach Concurrent program to a Request Group&lt;br /&gt;3)    Submit Concurrent program&lt;br /&gt; &lt;br /&gt;1)    Registering the Executable from back end&lt;br /&gt;================================================&lt;br /&gt;&lt;br /&gt;          Usually we create executable in the front-end, but this can be done from the database tier i.e. back-end too. &lt;br /&gt;          Below is the PL/SQL code to create an executable from back-end.&lt;br /&gt;         BEGIN&lt;br /&gt;              FND_PROGRAM.executable('XXMZ_ERPSCHOOLS_EMPLOYEE' -- executable&lt;br /&gt;                                                              , 'XXMZ Custom' -- application&lt;br /&gt;                                                              , 'XXMZ_ERPSCHOOLS_EMPLOYEE' -- short_name&lt;br /&gt;                                                              , 'Executable for ERPSCHOOLS Employee INFORMATION' -- description&lt;br /&gt;                                                              , 'PL/SQL Stored Procedure' -- execution_method&lt;br /&gt;                                                              , 'XXMZ_ERPSCHOOLS_EMPLOYEE' -- execution_file_name&lt;br /&gt;                                                              , '' -- subroutine_name&lt;br /&gt;                                                              , '' -- Execution File Path&lt;br /&gt;                                                              , 'US' -- language_code &lt;br /&gt;                                                              , '');&lt;br /&gt;             COMMIT;&lt;br /&gt;         END;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       Query in the front-end to see whether your executable is created or not.&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2)    Registering the Concurrent program from back end&lt;br /&gt;===========================================================&lt;br /&gt;&lt;br /&gt;            Usually we create Concurrent program in the front-end, but this can be done from the database tier too. &lt;br /&gt;            Below is the program to create a Concurrent program from back-end.&lt;br /&gt;            BEGIN&lt;br /&gt;                     FND_PROGRAM.register('Concurrent program for ErpSchools Employee Information' -- program&lt;br /&gt;                                                                , 'XXMZ Custom' -- application&lt;br /&gt;                                                                , 'Y' -- enabled&lt;br /&gt;                                                                , 'XXMZ_ERPSCHOOLS_EMPLOYEE' -- short_name&lt;br /&gt;                                                                , 'ErpSchools Employee Information' -- description&lt;br /&gt;                                                                , 'XXMZ_ERPSCHOOLS_EMPLOYEE' -- executable_short_name&lt;br /&gt;                                                                , 'XXMZ Custom' -- executable_application&lt;br /&gt;                                                                , '' -- execution_options&lt;br /&gt;                                                                , '' -- priority&lt;br /&gt;                                                                , 'Y' -- save_output&lt;br /&gt;                                                                , 'Y' -- print&lt;br /&gt;                                                                , '' -- cols&lt;br /&gt;                                                                , '' -- rows&lt;br /&gt;                                                                , '' -- style&lt;br /&gt;                                                                , 'N' -- style_required&lt;br /&gt;                                                                , '' -- printer&lt;br /&gt;                                                                , '' -- request_type&lt;br /&gt;                                                                , '' -- request_type_application&lt;br /&gt;                                                                , 'Y' -- use_in_srs&lt;br /&gt;                                                                , 'N' -- allow_disabled_values&lt;br /&gt;                                                                , 'N' -- run_alone&lt;br /&gt;                                                                , 'TEXT' – output_type&lt;br /&gt;                                                                , 'N' -- enable_trace&lt;br /&gt;                                                                , 'Y' -- restart&lt;br /&gt;                                                                , 'Y' -- nls_compliant&lt;br /&gt;                                                                , '' -- icon_name&lt;br /&gt;                                                                , 'US'); -- language_code&lt;br /&gt;                        COMMIT;&lt;br /&gt;            END;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            Query in the front-end to see whether your Concurrent program is created or not.&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3)    Attaching the concurrent program to the request group&lt;br /&gt;==================================================================&lt;br /&gt;&lt;br /&gt;               Usually we Attach Concurrent program to the request group in the front-end, but this can be done from database tier too.&lt;br /&gt;               Below is the program to Attach Concurrent program to the request group from back-end.&lt;br /&gt;               BEGIN&lt;br /&gt;                        FND_PROGRAM.add_to_group('XXMZ_ERPSCHOOLS_EMPLOYEE' -- program_short_name&lt;br /&gt;                                                                             , 'XXMZ Custom' -- application&lt;br /&gt;                                                                             , 'xxmz Request Group' -- Report Group Name&lt;br /&gt;                                                                             , 'XXMZ'); -- Report Group Application&lt;br /&gt;                        COMMIT;&lt;br /&gt;              END;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;              Query in the front-end to see whether your Concurrent program is Attached to Request Group or not.&lt;br /&gt; &lt;br /&gt;4)    Submitting Concurrent Program from Back-end&lt;br /&gt;====================================================&lt;br /&gt;&lt;br /&gt;We first need to initialize oracle applications session using &lt;br /&gt;                        fnd_global.apps_initialize(user_id,responsibility_id,application_responsibility_id) and then run fnd_request.submit_request&lt;br /&gt;                         DECLARE &lt;br /&gt;                               l_request_id NUMBER(30); &lt;br /&gt;                         begin &lt;br /&gt;                                  FND_GLOBAL.APPS_INITIALIZE (user_id =&gt; 1318, resp_id =&gt; 59966, resp_appl_id =&gt; 20064); &lt;br /&gt;                                  l_request_id:= FND_REQUEST.SUBMIT_REQUEST ('XXMZ' --Application Short name,&lt;br /&gt;'VENDOR_FORM'-- Concurrent Program Short Name );&lt;br /&gt;                                  DBMS_OUTPUT.PUT_LINE(l_request_id); &lt;br /&gt;                                  commit;&lt;br /&gt;                         end;&lt;br /&gt;                  *****************************************************&lt;br /&gt;To get the resp_id and resp_appl_id use the below queries.&lt;br /&gt;                      --SELECT APPLICATION_ID, RESPONSIBILITY_ID &lt;br /&gt;                          FROM FND_RESPONSIBILITY_TL &lt;br /&gt;                          WHERE RESPONSIBILITY_NAME='xxmz Custom'&lt;br /&gt;                       --SELECT USER_ID FROM FND_USER WHERE USER_NAME='OPERATIONS'&lt;br /&gt;***************************************************** &lt;br /&gt;Once the concurrent program is submitted from back-end, status of the concurrent program can be checked using below query.&lt;br /&gt;         SELECT * FROM FND_CONCURRENT_REQUESTS WHERE   REQUEST_ID=2766602&lt;br /&gt;==============================================================================&lt;br /&gt;This document is from ERP SCHOOLS&lt;br /&gt;==============================================================================&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-8361694934702759094?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/br31lvzhYynoxR6XFoQlIyOY-pM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/br31lvzhYynoxR6XFoQlIyOY-pM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/br31lvzhYynoxR6XFoQlIyOY-pM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/br31lvzhYynoxR6XFoQlIyOY-pM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/uwyjeJ5fmpI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/8361694934702759094/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/11/concurrent-program-registration-scripts.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/8361694934702759094?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/8361694934702759094?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/uwyjeJ5fmpI/concurrent-program-registration-scripts.html" title="Concurrent Program Registration Scripts" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/11/concurrent-program-registration-scripts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYARHk7eSp7ImA9WxNbF0U.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-2004502689369003389</id><published>2009-11-20T23:01:00.000-08:00</published><updated>2009-11-20T23:05:45.701-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-20T23:05:45.701-08:00</app:edited><title /><content type="html">Oracle tuning - Tune individual SQL statements&lt;br /&gt;Collected From Burleson Consulting&lt;br /&gt;________________________________________&lt;br /&gt;Tuning individual Oracle SQL statements&lt;br /&gt;The acronym SQL stands for Structured Query Language. SQL is an industry standard database query language that was adopted in the mid-1980s. It should not be confused with commercial products such as Microsoft SQL Server or open source products such as MySQL, both of which use the acronym as part of the title of their products. &lt;br /&gt;Do this before you start individual SQL statement tuning&lt;br /&gt;This broad-brush approach can save thousands of hours of tedious SQL tuning because you can hundreds of queries at once.  Remember, you MUST do this first, else later changes to the optimizer parameters or statistics may un-tune your SQL.&lt;br /&gt;   &lt;br /&gt;Remember, you must ALWAYS start with system-level SQL tuning, else later changes might undo your tuned execution plans:&lt;br /&gt;• Optimize the server kernel - You must always tune your disk and network I/O subsystem (RAID, DASD bandwidth, network) to optimize the I/O time, network packet size and dispatching frequency.&lt;br /&gt;  &lt;br /&gt;• Adjusting your optimizer statistics - You must always collect and store optimizer statistics to allow the optimizer to learn more about the distribution of your data to take more intelligent execution plans.  Also, histograms can hypercharge SQL in cases of determining optimal table join order, and when making access decisions on skewed WHERE clause predicates.&lt;br /&gt;  &lt;br /&gt;• Adjust optimizer parameters - Optimizer optimizer_mode, optimizer_index_caching, optimizer_index_cost_adj.&lt;br /&gt;  &lt;br /&gt;• Optimize your instance - Your choice of db_block_size, db_cache_size, and OS parameters (db_file_multiblock_read_count, cpu_count, &amp;c), can influence SQL performance.&lt;br /&gt;  &lt;br /&gt;• Tune your SQL Access workload with physical indexes and materialized views - Just as the 10g SQLAccess advisor recommends missing indexes and missing materialized views, you should always optimize your SQL workload with indexes, especially function-based indexes, a Godsend for SQL tuning.  &lt;br /&gt;11g Note:  The Oracle 11g SQL Performance Analyzer (SPA), is primarily designed to speed up the holistic SQL tuning process.&lt;br /&gt;&lt;br /&gt;Once you create a workload (called a SQL Tuning Set, or STS), Oracle will repeatedly execute the workload, using sophisticated predictive models (using a regression testing approach) to accurately identify the salient changes to SQL execution plans, based on your environmental changes. Using SPA, we can predict the impact of system changes on a workload, and we can forecast changes in response times for SQL after making any change, like parameter changes, schema changes, hardware changes, OS changes, or Oracle upgrades.  For details, see the book Oracle 11g New Features.&lt;br /&gt;Once the environment, instance, and objects have been tuned, the Oracle administrator can focus on what is probably the single most important aspect of tuning an Oracle database: tuning the individual SQL statements. In this final article in my series on Oracle tuning, I will share some general guidelines for tuning individual SQL statements to improve Oracle performance.&lt;br /&gt;Oracle SQL tuning goals&lt;br /&gt;Oracle SQL tuning is a phenomenally complex subject. Entire books have been written about the nuances of Oracle SQL tuning; however, there are some general guidelines that every Oracle DBA follows in order to improve the performance of their systems.  Again, see the book "Oracle Tuning: The Definitive Reference", for complete details.&lt;br /&gt;&lt;br /&gt;The goals of SQL tuning focus on improving the execution plan to fetch the rows with the smallest number of database "touches" (LIO buffer gets and PIO physical reads).  &lt;br /&gt;• Remove unnecessary large-table full-table scans—Unnecessary full-table scans cause a huge amount of unnecessary I/O and can drag-down an entire database. The tuning expert first evaluates the SQL based on the number of rows returned by the query. The most common tuning remedy for unnecessary full-table scans is adding indexes. Standard b-tree indexes can be added to tables, and bitmapped and function-based indexes can also eliminate full-table scans. In some cases, an unnecessary full-table scan can be forced to use an index by adding an index hint to the SQL statement. &lt;br /&gt;  &lt;br /&gt;• Cache small-table full-table scans—In cases where a full-table scan is the fastest access method, the administrator should ensure that a dedicated data buffer is available for the rows.  In Oracle8 and beyond, a small table can be cached by forcing it into the KEEP pool. &lt;br /&gt;  &lt;br /&gt;• Verify optimal index usage—Oracle sometimes has a choice of indexes, and the tuning professional must examine each index and ensure that Oracle is using the proper index.&lt;br /&gt;  &lt;br /&gt;• Materialize your aggregations and summaries for static tables - One features of the Oracle 10g SQLAccess advisor is recommendations for new indexes and suggestions for materialized views.  Materialized views pre-join tables and pre-summarize data, a real silver bullet for data mart reporting databases where the data is only updated daily. Again, see the book "Oracle Tuning: The Definitive Reference", for complete details on SQL tuning with materialized views. &lt;br /&gt;These are the goals of SQL tuning in a nutshell. However, they are deceptively simple, and to effectively meet them, we need to have a through understanding of the internals of Oracle SQL. Let's begin with an overview of the Oracle SQL optimizers. &lt;br /&gt;Oracle SQL optimizers&lt;br /&gt;One of the first things the Oracle DBA looks at is the default optimizer mode for the database. The Oracle initialization parameters offer many cost-based optimizer modes as well as the deprecated yet useful rule-based hint:&lt;br /&gt;The cost-based optimizer uses “statistics” that are collected from the table using the “analyze table” command. Oracle uses these metrics about the tables in order to intelligently determine the most efficient way of servicing the SQL query. It is important to recognize that in many cases, the cost-based optimizer may not make the proper decision in terms of the speed of the query. The cost-based optimizer is constantly being improved, but there are still many cases in which the rule-based optimizer will result in faster Oracle queries. &lt;br /&gt;Prior to Oracle 10g, Oracle's default optimizer mode was called “choose.” In the choose optimizer mode, Oracle will execute the rule-based optimizer if there are no statistics present for the table; it will execute the cost-based optimizer if statistics are present. The danger with using the choose optimizer mode is that problems can occur in cases where one Oracle table in a complex query has statistics and the other tables do not.  &lt;br /&gt;Starting in Oracle 10g, the default optimizer mode is all_rows, favoring full-table scans over index access.  The all_rows optimizer mode is designed to minimize computing resources and it favors full-table scans.  Index access (first_rows_n) adds additional I/O overhead, but they return rows faster, back to the originating query:&lt;br /&gt; &lt;br /&gt;Full-table scans touch all data blocks&lt;br /&gt;Hence, many OLTP shops will choose first_rows, first_rows_100 or first_rows_10, asking Oracle to use indexes to reduce block touches:&lt;br /&gt; &lt;br /&gt;Index scans return rows fast by doing additional I/O&lt;br /&gt;Note:  Staring in Oracle9i release 2, the Oracle performance tuning guide says that the first_rows optimizer mode has been deprecated and to use first_rows_n instead.&lt;br /&gt;When only some tables contain CBO statistics, Oracle will use the cost-based optimization and estimate statistics for the other tables in the query at runtime. This can cause significant slowdown in the performance of the individual query.&lt;br /&gt;In sum, the Oracle database administrator will always try changing the optimizer mode for queries as the very first step in Oracle tuning. The foremost tenet of Oracle SQL tuning is avoiding the dreaded full-table scan. One of the hallmarks of an inefficient SQL statement is the failure of the SQL statement to use all of the indexes that are present within the Oracle database in order to speed up the query.&lt;br /&gt;&lt;br /&gt;Of course, there are times when a full-table scan is appropriate for a query, such as when you are doing aggregate operations such as a sum or an average, and the majority of the rows within the Oracle table must be read to get the query results. The task of the SQL tuning expert is to evaluate each full-table scan and see if the performance can be improved by adding an index. &lt;br /&gt;In most Oracle systems, a SQL statement will be retrieving only a small subset of the rows within the table. The Oracle optimizers are programmed to check for indexes and to use them whenever possible to avoid excessive I/O. However, if the formulation of a query is inefficient, the cost-based optimizer becomes confused about the best access path to the data, and the cost-based optimizer will sometimes choose to do a full-table scan against the table. Again, the general rule is for the Oracle database administrator to interrogate the SQL and always look for full-table scans.  &lt;br /&gt;For the full story, see my book "Oracle Tuning: The Definitive Reference" for details on choosing the right optimizer mode.&lt;br /&gt;A strategic plan for Oracle SQL tuning&lt;br /&gt;&lt;br /&gt;Many people ask where they should start when tuning Oracle SQL. Tuning Oracle SQL is like fishing. You must first fish in the Oracle library cache to extract SQL statements and rank the statements by their amount of activity.&lt;br /&gt;&lt;br /&gt;Step 1—Identify high-impact SQL&lt;br /&gt;&lt;br /&gt;The SQL statements will be ranked according the number of executions and will be tuned in this order. The executions column of the v$sqlarea view and the stats$sql_summary or the dba_hist_sql_summary table can be used to locate the most frequently used SQL.  Note that we can display SQL statements by: &lt;br /&gt;• Rows processed—Queries that process a large number of rows will have high I/O and may also have impact on the TEMP tablespace. &lt;br /&gt;  &lt;br /&gt;• Buffer gets—High buffer gets may indicate a resource-intensive query. &lt;br /&gt;  &lt;br /&gt;• Disk reads—High disk reads indicate a query that is causing excessive I/O. &lt;br /&gt;  &lt;br /&gt;• Memory KB—The memory allocation of a SQL statement is useful for identifying statements that are doing in-memory table joins. &lt;br /&gt;  &lt;br /&gt;• CPU secs—This identifies the SQL statements that use the most processor resources. &lt;br /&gt;  &lt;br /&gt;• Sorts—Sorts can be a huge slowdown, especially if they’re being done on a disk in the TEMP tablespace. &lt;br /&gt;  &lt;br /&gt;• Executions—The more frequently executed SQL statements should be tuned first, since they will have the greatest impact on overall performance. &lt;br /&gt;&lt;br /&gt;Step 2—Determine the execution plan for SQL&lt;br /&gt;&lt;br /&gt;As each SQL statement is identified, it will be “explained” to determine its existing execution plan. There are a host of third-party tools on the market that show the execution plan for SQL statements. The most common way of determining the execution plan for a SQL statement is to use Oracle's explain plan utility. By using explain plan, the Oracle DBA can ask Oracle to parse the statement and display the execution class path without actually executing the SQL statement.&lt;br /&gt;&lt;br /&gt;To see the output of an explain plan, you must first create a “plan table.” Oracle provides a script in $ORACLE_HOME/rdbms/admin called utlxplan.sql. Execute utlxplan.sql and create a public synonym for the plan_table:&lt;br /&gt; &lt;br /&gt;sqlplus &gt; @utlxplan&lt;br /&gt;Table created.&lt;br /&gt; &lt;br /&gt;sqlplus &gt; create public synonym plan_table for sys.plan_table;&lt;br /&gt;Synonym created.&lt;br /&gt;Most relational databases use an explain utility that takes the SQL statement as input, runs the SQL optimizer, and outputs the access path information into a plan_table, which can then be interrogated to see the access methods. Listing 1 runs a complex query against a database.&lt;br /&gt;&lt;br /&gt;EXPLAIN PLAN SET STATEMENT_ID = 'test1' FOR&lt;br /&gt;SET STATEMENT_ID = 'RUN1'&lt;br /&gt;INTO plan_table&lt;br /&gt;FOR&lt;br /&gt;SELECT   'T'||plansnet.terr_code, 'P'||detplan.pac1 &lt;br /&gt;|| detplan.pac2 || detplan.pac3, 'P1', sum(plansnet.ytd_d_ly_tm),&lt;br /&gt; sum(plansnet.ytd_d_ty_tm),&lt;br /&gt; sum(plansnet.jan_d_ly),&lt;br /&gt; sum(plansnet.jan_d_ty),&lt;br /&gt;FROM plansnet, detplan&lt;br /&gt;WHERE&lt;br /&gt;    plansnet.mgc = detplan.mktgpm&lt;br /&gt;AND&lt;br /&gt;    detplan.pac1 in ('N33','192','195','201','BAI',&lt;br /&gt;    'P51','Q27','180','181','183','184','186','188',&lt;br /&gt;    '198','204','207','209','211')&lt;br /&gt;GROUP BY 'T'||plansnet.terr_code, 'P'||detplan.pac1 || detplan.pac2 || detplan.pac3;&lt;br /&gt;This syntax is piped into the SQL optimizer, which will analyze the query and store the plan information in a row in the plan table identified by RUN1. Please note that the query will not execute; it will only create the internal access information in the plan table. The plan tables contains the following fields:&lt;br /&gt;• operation—The type of access being performed. Usually table access, table merge, sort, or index operation &lt;br /&gt;  &lt;br /&gt;• options—Modifiers to the operation, specifying a full table, a range table, or a join &lt;br /&gt;  &lt;br /&gt;• object_name—The name of the table being used by the query component &lt;br /&gt;  &lt;br /&gt;• Process ID—The identifier for the query component &lt;br /&gt;  &lt;br /&gt;• Parent_ID—The parent of the query component. Note that several query components may have the same parent. &lt;br /&gt;Now that the plan_table has been created and populated, you may interrogate it to see your output by running the following query in Listing 2.&lt;br /&gt;plan.sql - displays contents of the explain plan table&lt;br /&gt;SET PAGES 9999;&lt;br /&gt;SELECT  lpad(' ',2*(level-1))||operation operation,&lt;br /&gt;        options,&lt;br /&gt;        object_name,&lt;br /&gt;        position&lt;br /&gt;FROM plan_table&lt;br /&gt;START WITH id=0&lt;br /&gt;AND&lt;br /&gt;statement_id = 'RUN1'&lt;br /&gt;CONNECT BY prior id = parent_id&lt;br /&gt;AND&lt;br /&gt;statement_id = 'RUN1';&lt;br /&gt;Listing 3 shows the output from the plan table shown in Listing 1. This is the execution plan for the statement and shows the steps and the order in which they will be executed.&lt;br /&gt;SQL&gt; @list_explain_plan&lt;br /&gt; &lt;br /&gt;OPERATION&lt;br /&gt;-------------------------------------------------------------------------------------&lt;br /&gt;OPTIONS                           OBJECT_NAME                    POSITION&lt;br /&gt;------------------------------ -------------------------------------------------------&lt;br /&gt;SELECT STATEMENT&lt;br /&gt;SORT&lt;br /&gt;GROUP BY                                                      1&lt;br /&gt;       CONCATENATION                                   1&lt;br /&gt;NESTED LOOPS                                    1&lt;br /&gt;TABLE ACCESS FULL         PLANSNET                   1&lt;br /&gt;TABLE ACCESS BY ROWID     DETPLAN                    2&lt;br /&gt;          INDEX RANGE SCAN       DETPLAN_INDEX5             1&lt;br /&gt;NESTED LOOPS&lt;br /&gt;&lt;br /&gt;From this output, we can see the dreaded TABLE ACCESS FULL on the PLANSNET table. To diagnose the reason for this full-table scan, we return to the SQL and look for any plansnet columns in the WHERE clause. There, we see that the plansnet column called “mgc” is being used as a join column in the query, indicating that an index is necessary on plansnet.mgc to alleviate the full-table scan.&lt;br /&gt;&lt;br /&gt;While the plan table is useful for determining the access path to the data, it does not tell the entire story. The configuration of the data is also a consideration. The SQL optimizer is aware of the number of rows in each table (the cardinality) and the presence of indexes on fields, but it is not aware of data distribution factors such as the number of expected rows returned from each query component.&lt;br /&gt; &lt;br /&gt;Step 3—Tune the SQL statement&lt;br /&gt;&lt;br /&gt;For those SQL statements that possess a sub-optimal execution plan, the SQL will be tuned by one of the following methods:&lt;br /&gt; &lt;br /&gt;• Adding SQL “hints” to modify the execution plan &lt;br /&gt;  &lt;br /&gt;• Re-write SQL with Global Temporary Tables&lt;br /&gt;• Rewriting the SQL in PL/SQL. For certain queries this can result in more than a 20x performance improvement. The SQL would be replaced with a call to a PL/SQL package that contained a stored procedure to perform the query. &lt;br /&gt;Using hints to tune Oracle SQL&lt;br /&gt;&lt;br /&gt;Among the most common tools for tuning SQL statements are hints. A hint is a directive that is added to the SQL statement to modify the access path for a SQL query. &lt;br /&gt;Troubleshooting tip!  For testing, you can quickly test the effect of another optimizer parameter value at the query level without using an “alter session” command, using the new opt_param SQL hint:&lt;br /&gt;select /*+ opt_param('optimizer_mode','first_rows_10') */ col1, col2 . . . &lt;br /&gt;select /*+ opt_param('optimizer_index_cost_adj',20) */ col1, col2 . .&lt;br /&gt;Oracle publishes many dozens of SQL hints, and hints become increasingly more complicated through the various releases of Oracle and on into Oracle. &lt;br /&gt;Note:  Hints are only used for de-bugging and you should adjust your optimizer statistics to make the CBO replicate the hinted SQL.  Let’s look at the most common hints to improve tuning:&lt;br /&gt;• Mode hints:  first_rows_10, first_rows_100 &lt;br /&gt;• Oracle leading and ordered hints  Also see how to tune table join order with histograms&lt;br /&gt; &lt;br /&gt;• Dynamic sampling: dynamic_sampling&lt;br /&gt;  &lt;br /&gt;• Oracle SQL undocumented tuning hints - Guru's only&lt;br /&gt;• The cardinality hint&lt;br /&gt;  &lt;br /&gt;•  Self-order the table joins - If you find that Oracle is joining the tables together in a sub-optimal order, you can use the ORDERED hint to force the tables to be joined in the order that they appear in the FROM clause.  See &lt;br /&gt;  &lt;br /&gt;•  Try a first_rows_n hint. Oracle has two cost-based optimizer modes, first_rows_n and all_rows. The first_rows mode will execute to begin returning rows as soon as possible, whereas the all_rows mode is designed to optimize the resources on the entire query before returning rows. &lt;br /&gt; &lt;br /&gt;SELECT /*+ first_rows */&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;A case study in SQL tuning&lt;br /&gt;&lt;br /&gt;One of the historic problems with SQL involves formulating SQL queries. Simple queries can be written in many different ways, each variant of the query producing the same result—but with widely different access methods and query speeds.&lt;br /&gt;&lt;br /&gt;For example, a simple query such as “What students received an A last semester?” can be written in three ways, as shown in below, each returning an identical result. &lt;br /&gt; &lt;br /&gt;A standard join:&lt;br /&gt; &lt;br /&gt;SELECT *&lt;br /&gt;FROM STUDENT, REGISTRATION&lt;br /&gt;WHERE&lt;br /&gt;    STUDENT.student_id = REGISTRATION.student_id&lt;br /&gt;AND&lt;br /&gt;    REGISTRATION.grade = 'A';&lt;br /&gt; &lt;br /&gt;A nested query:&lt;br /&gt;&lt;br /&gt;SELECT *&lt;br /&gt;FROM STUDENT&lt;br /&gt;WHERE&lt;br /&gt;    student_id =&lt;br /&gt;    (SELECT student_id&lt;br /&gt;        FROM REGISTRATION&lt;br /&gt;        WHERE&lt;br /&gt;       grade = 'A'&lt;br /&gt;    );&lt;br /&gt;&lt;br /&gt;A correlated subquery:&lt;br /&gt;&lt;br /&gt;SELECT *&lt;br /&gt;FROM STUDENT&lt;br /&gt;WHERE&lt;br /&gt;    0 &lt;&lt;br /&gt;    (SELECT count(*)&lt;br /&gt;        FROM REGISTRATION&lt;br /&gt;        WHERE&lt;br /&gt;        grade = 'A'&lt;br /&gt;        AND&lt;br /&gt;        student_id = STUDENT.student_id&lt;br /&gt;    );&lt;br /&gt;Let’s wind up with a review of the basic components of a SQL query and see how to optimize a query for remote execution.&lt;br /&gt;&lt;br /&gt;Tips for writing more efficient SQL&lt;br /&gt;&lt;br /&gt;Space doesn’t permit me to discuss every detail of Oracle tuning, but I can share some general rules for writing efficient SQL in Oracle regardless of the optimizer that is chosen. These rules may seem simplistic but following them in a diligent manner will generally relieve more than half of the SQL tuning problems that are experienced: &lt;br /&gt;• Rewrite complex subqueries with temporary tables - Oracle created the global temporary table (GTT) and the SQL WITH operator to help divide-and-conquer complex SQL sub-queries (especially those with with WHERE clause subqueries, SELECT clause scalar subqueries and FROM clause in-line views).  Tuning SQL with temporary tables (and materializations in the WITH clause) can result in amazing performance improvements.&lt;br /&gt;  &lt;br /&gt;• Use minus instead of EXISTS subqueries - Some say that using the minus operator instead of NOT IN and NOT Exists will result in a faster execution plan.&lt;br /&gt;  &lt;br /&gt;• Use SQL analytic functions - The Oracle analytic functions can do multiple aggregations (e.g. rollup by cube) with a single pass through the tables, making them very fast for reporting SQL.&lt;br /&gt;  &lt;br /&gt;• Re-write NOT EXISTS and NOT EXISTS subqueries as outer joins - In many cases of NOT queries (but ONLY where a column is defined as NULL), you can re-write the uncorrelated subqueries into outer joins with IS NULL tests.  Note that this is a non-correlated sub-query, but it could be re-written as an outer join. &lt;br /&gt;select book_key from book &lt;br /&gt;where &lt;br /&gt;book_key NOT IN (select book_key from sales);&lt;br /&gt;Below we combine the outer join with a NULL test in the WHERE clause without using a sub-query, giving a faster execution plan.&lt;br /&gt;select b.book_key from book b, sales s &lt;br /&gt;where &lt;br /&gt;   b.book_key = s.book_key(+) &lt;br /&gt;and &lt;br /&gt;   s.book_key IS NULL;&lt;br /&gt;• Index your NULL values - If you have SQL that frequently tests for NULL, consider creating an index on NULL values.  To get around the optimization of SQL queries that choose NULL column values (i.e. where emp_name IS NULL), we can create a function-based index using the null value built-in SQL function to index only on the NULL columns.  &lt;br /&gt;  &lt;br /&gt;• Leave column names alone - Never do a calculation on an indexed column unless you have a matching function-based index (a.k.a. FBI).  Better yet, re-design the schema so that common where clause predicates do not need transformation with a BIF: &lt;br /&gt;where salary*5            &gt; :myvalue&lt;br /&gt;where substr(ssn,7,4)     = "1234"&lt;br /&gt;where to_char(mydate,mon) = "january"&lt;br /&gt;• Avoid the use of NOT IN or HAVING. Instead, a NOT EXISTS subquery may run faster (when appropriate). &lt;br /&gt;  &lt;br /&gt;• Avoid the LIKE predicate = Always replace a "like" with an equality, when appropriate. &lt;br /&gt;  &lt;br /&gt;• Never mix data types - If a WHERE clause column predicate is numeric, do not to use quotes. For char index columns, always use quotes. There are mixed data type predicates: &lt;br /&gt;where cust_nbr = "123"&lt;br /&gt;where substr(ssn,7,4) = 1234&lt;br /&gt;• Use decode and case - Performing complex aggregations with the “decode” or "case" functions can minimize the number of times a table has to be selected. &lt;br /&gt;  &lt;br /&gt;• Don't fear full-table scans - Not all OLTP queries are optimal when they uses indexes.  If your query will return a large percentage of the table rows, a full-table scan may be faster than an index scan.  This depends on many factors, including your configuration (values for db_file_multiblock_read_count, db_block_size), query parallelism and the number of table/index blocks in the buffer cache.&lt;br /&gt;  &lt;br /&gt;• Use those aliases - Always use table aliases when referencing columns.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-2004502689369003389?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wtJ1oD1EwkYGq-J__C-s-w6I84I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wtJ1oD1EwkYGq-J__C-s-w6I84I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wtJ1oD1EwkYGq-J__C-s-w6I84I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wtJ1oD1EwkYGq-J__C-s-w6I84I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/s51arVOpim4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/2004502689369003389/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/11/oracle-tuning-tune-individual-sql.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/2004502689369003389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/2004502689369003389?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/s51arVOpim4/oracle-tuning-tune-individual-sql.html" title="" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/11/oracle-tuning-tune-individual-sql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUNRHY6cCp7ImA9WxNbFEk.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-8863578533610465944</id><published>2009-11-16T22:43:00.000-08:00</published><updated>2009-11-16T22:44:55.818-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-16T22:44:55.818-08:00</app:edited><title>SQL And PL/SQL Coding Standards</title><content type="html">PL/SQL has become a mature and popular language since its introduction in 1991, yet the language is still relatively young compared to its ancestors (both direct ancestors, like Ada, and indirect ancestors, like COBOL and Fortran). One of the most common questions I am asked is about coding standards for SQL and PL/SQL.&lt;br /&gt;The primary purpose of coding standards has always been to make maintenance easier for developers. In order to satisfy this requirement, PL/SQL coding standards must address several areas of the development process. Table D.1 displays some of the development areas that PL/SQL coding standards address.&lt;br /&gt;Table D.1 Development areas addressed by coding standards. ________________________________________&lt;br /&gt;Development Area  Includes &lt;br /&gt;Vertical spacing  Spacing between statements; spacing between procedures and functions within package bodies. &lt;br /&gt;Horizontal spacing  Spacing between identifiers and operators; number of statements per line; maximum line width. &lt;br /&gt;Procedural calls  Use of positional or named notation when calling stored PL/SQL objects. &lt;br /&gt;Commenting  Type of comments to be used and the frequency, spacing, positioning, and content of comments. &lt;br /&gt;Code reuse/modularity  Contents of procedures and functions; organization of procedures and functions into packages. &lt;br /&gt;Identifiers  Rules for naming identifiers; rules for naming stored PL/SQL objects. &lt;br /&gt;SQL statements  Formatting rules for embedded SQL statements. &lt;br /&gt;Performance  Performance tips (particularly for embedded SQL statements). &lt;br /&gt;Debugging  A standard method of handling exceptions inside PL/SQL objects as well as inside other applications that call stored PL/SQL objects. &lt;br /&gt;Testability  Rules for writing stored PL/SQL objects so that unit testing can be accomplished. &lt;br /&gt;Development environment  Rules determining what tools will be used for application development and what processes must be followed by developers. &lt;br /&gt;Capitalization  Rules determining which keywords will be used in UPPER case, Mixed case, and lower case. &lt;br /&gt;Conformance to standards  Rules designating when it is allowable for code to not agree with the coding standard. &lt;br /&gt;Documentation  Rules that designate whether the coding standards will be applied to design documents and what type of documentation must exist for particular routines. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The level of specifics contained in a coding standard should be fairly strict. While this may seem to be a burden during the development process, the people who do maintenance down the line will appreciate adherence to the standards.&lt;br /&gt;The best way to ensure adherence to standards is to use structured peer review when a code module is completed. If the code is readable, the peer review process will flow more smoothly, and the reviewers will be able to concentrate their review time on understanding the intimacies of code rather than on deciphering an entry for the obfuscated PL/SQL contest! Peer reviews also provide a last line of defense against “sleeper” bugs (often overlooked by even the best developers), which are found a lot more easily when the code is readable.&lt;br /&gt;If your organization does some or all of its own SQL and PL/SQL training, you should make an effort to incorporate standards training into your course materials.&lt;br /&gt;I hope you find the examples presented in this text easy to read and understand. I also hope that you notice the consistency of style in the way examples appear. Every piece of code on the CD-ROM and in the text conforms to the following coding standard.&lt;br /&gt;A Sample SQL And PL/SQL Coding Standard&lt;br /&gt;This document defines the SQL and PL/SQL environment and programming standards and procedures for &lt;insert your company name here&gt;. The standards established in this document apply to all SQL and PL/SQL development efforts.&lt;br /&gt;These PL/SQL coding standards were written to allow for consistency in PL/SQL code written by various developers while allowing for some individual styles and preferences to be expressed. The central purpose of any coding standard for SQL and PL/SQL must deal with database performance, clarity of code, and maintainability of code. This standard should be considered a guideline for developing easily maintainable SQL and PL/SQL applications in a high-performance Oracle database.&lt;br /&gt;Developers should attempt to meet the spirit of this document by applying good judgment, rather than strictly adhering to the letter of the standard. This standard applies to all developer-written SQL and PL/SQL code (including scripts, stored procedures and functions, database triggers, and stored packages). Generated code is not governed by this standard.&lt;br /&gt;This document is a living document that evolves based on the experiences of you, the developer. You should be aware that changes may occur to this document in the future, based on your (or other developers’) experiences and insights.&lt;br /&gt;The Development Environment And Processes&lt;br /&gt;This section of the standard is highly dependent on the nature of your organization; therefore, I will only give suggestions on the types of material that should be included in this section of your coding standard. The Development Environment And Processes section of the standard should address the following issues: &lt;br /&gt;•  Your version control processes—A good working knowledge of PL/SQL is important to a developer, but the inability of a single developer to follow version control processes could be disastrous! &lt;br /&gt;•  Standard tools for your development efforts—If you have a standard configuration for your tools, it should be described in painstaking detail. If your tools support central administration of this configuration, so much the better. &lt;br /&gt;•  Peer review practices—Many organizations have formal peer review processes in place to validate the quality of design documents, code, and test results. If your organization uses these processes, the coding standard should (at the very least) point developers to your process documents. &lt;br /&gt;•  Documentation—Describe the documentation required when developers create new code and what documents need to be updated when maintenance is performed. Provide reasonable facsimiles of this documentation (or excerpts from real documents that satisfy your requirements). &lt;br /&gt;•  Testing standards in place—Provide examples of thorough test scripts and plans. Tests for each aspect of your system (front end, stored procedures and functions, packages, and database triggers) should be discussed in detail. &lt;br /&gt;•  Standard routines—You should describe whether standard routines, such as error handling, help system calls, and so forth, are available and when these routines should be used. Provide a detailed explanation of each standard call and its interfaces. &lt;br /&gt;These issues can be addressed in appendices to your coding standard or in other documents, as long as your developers receive the necessary information.&lt;br /&gt;________________________________________&lt;br /&gt;References To Other Documents&lt;br /&gt;I personally favor one stop shopping; pack the standard with as much information as possible and reduce the amount of time developers spend tracking down other documents. &lt;br /&gt;________________________________________&lt;br /&gt;Programming Design Standards&lt;br /&gt;Developers should design for modularity. Black box is a term often used in conjunction with modules; each module should perform one (and only one) function using a defined interface and produce a predictable result. So long as the interface for a code module is not changed, the code module may be altered without affecting outside code. &lt;br /&gt;Each module contains one or more routines (and the data structures and variables needed to support the routines). PL/SQL allows developers to implement modularity through the use of packages, which can contain procedures and functions as well as global type, variable, and constant declarations.&lt;br /&gt;Stored functions that use parameters of the IN OUT and OUT types are not allowed. Stored functions should use only the RETURN statement to return a value. Developers are encouraged to identify routines that can be reused. This code can be centralized, tested, and used by other developers to improve the reliability of system code and to reduce development time for more complex modules. &lt;br /&gt;________________________________________&lt;br /&gt;The Modularity Ombudsman&lt;br /&gt;If your organization consists of ten or more people, it might be a good idea to appoint a “Modularity Ombudsman” who has some experience with SQL and PL/SQL. The responsibilities of this position include: &lt;br /&gt;•  Identifying code segments that can be reused &lt;br /&gt;•  Developing and testing reusable modules &lt;br /&gt;•  Documenting modules and promoting their use &lt;br /&gt;The modularity ombudsman should also take part in peer review for new modules to help increase code reuse throughout your project. &lt;br /&gt;________________________________________&lt;br /&gt;Headers&lt;br /&gt;A header should appear at the start of any script, procedure, function, package body, or package spec. Consider this template header:&lt;br /&gt;-- *****************************************************************&lt;br /&gt;-- Description: Describe the purpose of the object. If necessary,&lt;br /&gt;-- describe the design of the object at a very high level.&lt;br /&gt;--&lt;br /&gt;-- Input Parameters:&lt;br /&gt;--&lt;br /&gt;-- Output Parameters:&lt;br /&gt;--&lt;br /&gt;-- Error Conditions Raised:&lt;br /&gt;--&lt;br /&gt;-- Author:      &lt;your name&gt;&lt;br /&gt;--&lt;br /&gt;-- Revision History&lt;br /&gt;-- Date            Author       Reason for Change&lt;br /&gt;-- ----------------------------------------------------------------&lt;br /&gt;-- 03 JAN 1997     J.Schmoe     Created.&lt;br /&gt;-- *****************************************************************&lt;br /&gt;________________________________________&lt;br /&gt;The Usefulness Of Headers&lt;br /&gt;There are some people who dislike headers or feel that a header is a useless burden to place on a developer. I disagree: At no other point in the code are provisions made for documenting the overall purpose, logic, and interface of a module. In my opinion, a header is the most essential documentation for any piece of stored code. &lt;br /&gt;________________________________________&lt;br /&gt;Formatting Guidelines For SQL And PL/SQL Statements&lt;br /&gt;These guidelines are provided to give code a generally consistent appearance, including indentation, horizontal alignment, and vertical alignment. Adherence to these standards will make code more readable and more easily understood when maintenance is necessary.&lt;br /&gt;Alignment Of Operators&lt;br /&gt;These guidelines enhance the readability of code by adding white space and clarifying complex expressions.&lt;br /&gt;•  Arrange series of statements containing similar operators into columns whenever it will not cause excessive white space and you have sufficient room to do so. &lt;br /&gt;  &lt;br /&gt;Correct: &lt;br /&gt;  vFirstName := 'Roger';&lt;br /&gt;  vLastName  := 'Smith';&lt;br /&gt;  vSSN       := 999999999;&lt;br /&gt;&lt;br /&gt;Incorrect: &lt;br /&gt;  vFirstName := 'Roger';&lt;br /&gt;  vLastName := 'Smith';&lt;br /&gt;  vSSN := 999999999;&lt;br /&gt;•  Always use parentheses in expressions containing more than one identifier or literal. This clarifies code for inexperienced developers who are not familiar with operator precedence and helps eliminate the possibility that you’ve overlooked something in your equation. &lt;br /&gt;  &lt;br /&gt;Correct: &lt;br /&gt;  IF (nSSN &lt; 2.5) THEN&lt;br /&gt;     &lt;statements&gt;&lt;br /&gt;  END IF;&lt;br /&gt;&lt;br /&gt;Incorrect: &lt;br /&gt;  IF nSSN &lt; 2.5 THEN&lt;br /&gt;     &lt;statements&gt;&lt;br /&gt;  END IF;&lt;br /&gt;•  Align the IN and OUT keywords in columns when defining the interface for a procedure or function. &lt;br /&gt;  &lt;br /&gt;Correct: &lt;br /&gt;  PROCEDURE Days_Between (dStartDate   IN     date,&lt;br /&gt;                          dEndDate     IN     date,&lt;br /&gt;                          nGPA         IN OUT number,&lt;br /&gt;                          nDaysBetween    OUT number)&lt;br /&gt;&lt;br /&gt;  &lt;procedure declarations and body&gt;&lt;br /&gt;&lt;br /&gt;Incorrect: &lt;br /&gt;  PROCEDURE Days_Between (dStartDate IN date,&lt;br /&gt;                          dEndDate IN date,&lt;br /&gt;                          nGPA IN OUT number,&lt;br /&gt;                          nDaysBetween OUT number)&lt;br /&gt;&lt;br /&gt;  &lt;procedure declarations and body&gt;&lt;br /&gt;•  When calling a procedure or function, align the parameters into a column. This reduces the visual clutter around the call, making it stand out from the rest of the code. &lt;br /&gt;  &lt;br /&gt;Correct: &lt;br /&gt;  DaysBetween (dStartDate   =&gt; dEnrolledDate,&lt;br /&gt;               dEndDate     =&gt; dGraduationDate,&lt;br /&gt;               nGPA         =&gt; nFinalGPA,&lt;br /&gt;               nDaysBetween =&gt; nDuration);&lt;br /&gt;&lt;br /&gt;Incorrect: &lt;br /&gt;  DaysBetween (dStartDate =&gt; dEnrolledDate,&lt;br /&gt;               dEndDate =&gt; dGraduationDate,&lt;br /&gt;               nGPA =&gt; nFinalGPA,&lt;br /&gt;               nDaysBetween =&gt; nDuration);&lt;br /&gt;Capitalization&lt;br /&gt;Table D.2 contains a list of keywords that should always be fully capitalized when referenced in code. Some of these keywords are commonly used reserved words; reserved words that do not appear on this list should be capitalized as well.&lt;br /&gt;Table D.2 Capitalize these keywords. ________________________________________&lt;br /&gt;ALL  FALSE  MINUS  ROWTYPE &lt;br /&gt;AND  FETCH  NOT  SELECT &lt;br /&gt;AS  FOR  NOTFOUND  SET &lt;br /&gt;BEGIN  FOUND  NULL  SQLCODE &lt;br /&gt;BETWEEN  FROM  OPEN  SQLERRM &lt;br /&gt;BODY  FUNCTION  OR  TABLE &lt;br /&gt;CLOSE  GOTO  ORDER BY  THEN &lt;br /&gt;COMMIT  GROUP BY  OUT  TYPE &lt;br /&gt;CONSTANT  HAVING  PACKAGE  UNION &lt;br /&gt;CREATE  IF  PROCEDURE  UNION ALL &lt;br /&gt;DECLARE  IN  RAISE  UPDATE &lt;br /&gt;DELETE  INSERT  REPLACE  VALUES &lt;br /&gt;ELSE  INTERSECT  RETURN  VIEW &lt;br /&gt;ELSIF  INTO  ROLLBACK  WHEN &lt;br /&gt;END  IS  ROWCOUNT  WHERE &lt;br /&gt;EXCEPTION  LIKE  ROWID  WHILE &lt;br /&gt;EXIT  LOOP  ROWNUM  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The keyword REPLACE is to be used in uppercase only when used as part of the CREATE OR REPLACE clause that is used to create a stored PL/SQL object. Calls to the SQL function replace() should not be presented in uppercase. &lt;br /&gt;In addition to the keywords presented in Table D.2, fully capitalize all of the following:&lt;br /&gt;•  The names of all standard exceptions (NO_DATA_FOUND, OTHERS, TOO_MANY_ROWS), and all user-defined exceptions. &lt;br /&gt;•  The names of all constants and all user-defined datatypes. &lt;br /&gt;•  All acronyms (ANSI, ASCII, HUD, NASA, NOAA, YMCA, and so forth). &lt;br /&gt;•  The names of all tables, snapshots, and views, as well as the aliases given to these objects in queries. &lt;br /&gt;•  The names of all database triggers. &lt;br /&gt;Use mixed case to refer to the names of user-defined procedures and functions (functions provided by SQL*Plus and PL/SQL are still referenced in lower case). For example:&lt;br /&gt;Calculate_GPA&lt;br /&gt;DBMS_Output.Put_Line&lt;br /&gt;Optionally, use mixed case for user-defined identifiers. If you choose this method, use capital letters to help make the identifier names more meaningful by visually breaking variable names into words; here are some examples:&lt;br /&gt;vString&lt;br /&gt;nBaseSalary&lt;br /&gt;nGPA&lt;br /&gt;iTardyDays&lt;br /&gt;iClassNumber&lt;br /&gt;lComments&lt;br /&gt;rStudentPhoto&lt;br /&gt;All text not handled by these rules should use lowercase. Consider the following:&lt;br /&gt;CREATE OR REPLACE PACKAGE My_Sample_Package AS&lt;br /&gt;PROCEDURE My_Sample_Procedure (nParameter1 IN     number,&lt;br /&gt;                               nParameter2    OUT number)&lt;br /&gt;&lt;br /&gt;IS&lt;br /&gt;&lt;br /&gt;   YES   CONSTANT   char (1) := 'Y';&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;   IF (some expression) THEN&lt;br /&gt;      replace (vString, chr (9), '   ');&lt;br /&gt;   END IF;&lt;br /&gt;&lt;br /&gt;END My_Sample_Procedure;&lt;br /&gt;END My_Sample_Package;&lt;br /&gt;Comments&lt;br /&gt;As much as some developers dislike the task, commenting code is essential if the code is going to be maintained. There are a number of steps that can be taken to make comments less necessary:&lt;br /&gt;•  Use meaningful identifiers for variables, constants, and parameters. If you use abbreviations to compose identifiers, use the abbreviations consistently (e.g., don’t use both ADDR and ADRS to signify ADDRESS). &lt;br /&gt;•  Use the named parameter style of executing procedures and functions. This is especially effective if both the parameters and the variables passed to the stored PL/SQL object have meaningful identifiers. &lt;br /&gt;•  Comments about revisions belong in the prologue, not in the body of the module. &lt;br /&gt;________________________________________&lt;br /&gt;TIP:  Commenting Changes And Problem Tracking&lt;br /&gt;If you’re using a problem-tracking system on your project, it’s better to reference a particular report from that system and provide a brief summary of the changes made to solve that problem. Don’t attempt to include all the information about the problem in the prologue; that’s why you bought a problem tracking system! &lt;br /&gt;________________________________________&lt;br /&gt;•  Break complex equations and formulas into several smaller statements. &lt;br /&gt;•  Reuse existing functions and procedures to accomplish your tasks. Identify code that can be reused. &lt;br /&gt;There are a number of locations in PL/SQL code where comments should almost always be used, including the following instances:&lt;br /&gt;•  Before each loop structure. &lt;br /&gt;•  Before each BEGIN…END sub-block. &lt;br /&gt;•  Before each conditional logic expression (IF &lt;condition&gt; THEN). &lt;br /&gt;•  Before any other logically significant statements. &lt;br /&gt;Do not comment each line of code! Only comment important parts of your code, explaining why the code is written in a particular way. Explain business rules if possible. Never use a comment to restate the actions of a piece of code.&lt;br /&gt;PL/SQL supports the following two styles of commenting:&lt;br /&gt;/* We need to determine which students are in academic trouble. */&lt;br /&gt;-- We need to determine which students are in academic trouble.&lt;br /&gt;PL/SQL does not support the nesting of C-style comments; you cannot comment out a C-style comment using other C-style comments. For this reason, it is strongly recommended that only the double-dash (--) style of commenting be used except when commenting out blocks of code.&lt;br /&gt;The exception to this rule is inside 3GL programs that use the Oracle Precompilers. The Oracle Precompilers don’t support single line comments. On these occasions, use the commenting style most appropriate to the 3GL.&lt;br /&gt;If a comment is required, place the comment on the line immediately preceding the line of code. Do not append comments to the end of code; if a comment is warranted by the complexity of the code and you have used meaningful identifiers, the comment should be complicated enough that you need to explain the situation using more than one or two words.&lt;br /&gt;Correct:&lt;br /&gt;--&lt;br /&gt;-- Determine which students might be in trouble academically. We want&lt;br /&gt;-- to help them perform better in school.&lt;br /&gt;--&lt;br /&gt;IF (some condition) THEN&lt;br /&gt;Incorrect:&lt;br /&gt;IF (some condition) THEN -- who's got bad grades?&lt;br /&gt;All comments should use proper grammar, punctuation, and spelling. Comments should be complete, coherent sentences.&lt;br /&gt;________________________________________&lt;br /&gt;TIP:  Volume Of Comments&lt;br /&gt;As a general rule, about one-third of your final code should be comments. This figure often varies depending on the size and complexity of the code, but is an excellent rule of thumb. &lt;br /&gt;________________________________________&lt;br /&gt;Indentation&lt;br /&gt;The most important element in readable code is consistent indentation, which illustrates clearly the logic flow of a procedure. Consider these blocks of code:&lt;br /&gt;IF (x &lt; 7) THEN&lt;br /&gt;IF (y &lt; 0) THEN&lt;br /&gt;&lt;statements&gt;&lt;br /&gt;END IF;&lt;br /&gt;ELSIF (x &gt; 10) THEN&lt;br /&gt;&lt;statements&gt;&lt;br /&gt;ELSE&lt;br /&gt;&lt;statements&gt;&lt;br /&gt;END IF;&lt;br /&gt;&lt;br /&gt;IF (x &lt; 7) THEN&lt;br /&gt;   IF (y &lt; 0) THEN&lt;br /&gt;      &lt;statements&gt;&lt;br /&gt;   END IF;&lt;br /&gt;ELSIF (x &gt; 10) THEN&lt;br /&gt;   &lt;statements&gt;&lt;br /&gt;ELSE&lt;br /&gt;   &lt;statements&gt;&lt;br /&gt;END IF;&lt;br /&gt;Horizontal alignment in the second block of code makes it much easier to follow, even though it is syntactically and functionally identical to the first block of code.&lt;br /&gt;You should not use more than three or four levels of indentation in any block of code. If this many levels of indentation become necessary, consider breaking the code into smaller modules. Too many levels of indentation is almost as bad as no indentation at all.&lt;br /&gt;•  Code should always be indented consistently, using three spaces for each level of indentation. Variable, type, and constant declarations should all be indented to the first level of indentation. Do not use tab characters. &lt;br /&gt;  IF (some expression) THEN&lt;br /&gt;     IF (some expression) THEN&lt;br /&gt;        IF (some expression) THEN&lt;br /&gt;           &lt;statements&gt;&lt;br /&gt;        ELSIF (some expression) THEN&lt;br /&gt;           &lt;statements&gt;&lt;br /&gt;        END IF;&lt;br /&gt;     END IF;&lt;br /&gt;  END IF;&lt;br /&gt;&lt;br /&gt;  &lt;statements&gt;&lt;br /&gt;•  Statements following the WHEN clause of an exception handler should be indented five spaces, in order to create a column-like effect within the exception handler. &lt;br /&gt;  &lt;br /&gt;Correct: &lt;br /&gt;  EXCEPTION&lt;br /&gt;     WHEN OTHERS THEN&lt;br /&gt;          DBMS_Output.Put_Line (SQLERRM);&lt;br /&gt;&lt;br /&gt;Incorrect: &lt;br /&gt;  EXCEPTION&lt;br /&gt;     WHEN OTHERS THEN&lt;br /&gt;        DBMS_Output.Put_Line (SQLERRM);&lt;br /&gt;Horizontal Spacing&lt;br /&gt;You’ve probably heard of the obfuscated C contest, where the entrants attempt to cram as much code as possible onto a single line that does some type of work while remaining completely unreadable. If you have any experience maintaining code, you’ve probably seen more than a few pieces of code that have a good chance of winning a contest like this. The guidelines presented in this section are an attempt to guide you away from writing hard-to-read code.&lt;br /&gt;•  One of the most important elements in creating readable code is the spacing placed around operators. Table D.3 shows common operators and keywords that need to be preceded and followed by a space when they are used in expressions. &lt;br /&gt;  &lt;br /&gt;Table D.3 Operators and keywords to be preceded and followed by a space when used in expressions. ________________________________________&lt;br /&gt;+  -  *  / &lt;br /&gt;&amp;  &lt;  &gt;  = &lt;br /&gt;!=  &lt;=  &gt;=  := &lt;br /&gt;=&gt;  ||  ..  : &lt;br /&gt;&lt;&gt;  IN  OUT  AND &lt;br /&gt;OR  NOT  NULL  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Often more than one of the operators and keywords shown in Table D.3 will be adjacent to each other inside an expression. In this instance, it is recommended that only one space lie between the two operators/identifiers. For example: &lt;br /&gt;  IF (vMajor IS NOT NULL) THEN&lt;br /&gt;•  Spaces should precede and follow character (') literals. &lt;br /&gt;  SELECT first_name || ' ' || middle_name || ' ' || last_name&lt;br /&gt;         'student_name'&lt;br /&gt;  FROM   STUDENTS&lt;br /&gt;  WHERE  ssn = 999999999;&lt;br /&gt;•  Do not leave any blank spaces preceding or following the ** operator. &lt;br /&gt;  nRaisedNum := nNum**nPower;&lt;br /&gt;•  Do not leave blank spaces before or after the plus (+) and minus (-) signs when used as unary operators. &lt;br /&gt;  nNumber := -nSecondNumber;&lt;br /&gt;  nNumber := +nSecondNumber;&lt;br /&gt;•  Do not use spaces between multiple parentheses or semicolons (;). Always precede the first opening parenthesis of a set with a space. &lt;br /&gt;  AND (((x &lt; 5) AND (y &lt; 5))&lt;br /&gt;  OR   ((x &gt; 5) AND (y &gt; 5)));&lt;br /&gt;Vertical Spacing&lt;br /&gt;Vertical spacing helps distance elements in the code from one another, reducing the visual clutter above and below statements. To create appropriate vertical spacing for your code, place a blank line in the locations described in the following list:&lt;br /&gt;•  Before lines containing the keywords IF, ELSE, ELSIF, and EXCEPTION. If the line is preceded by a comment, place the blank line before the comment instead of before the line of text. &lt;br /&gt;  --&lt;br /&gt;  -- If the student's grade point average meets the criteria for&lt;br /&gt;  -- mandatory academic counseling, add the student's name and social&lt;br /&gt;  -- security number to the list.&lt;br /&gt;  --&lt;br /&gt;  IF (nRealGPA &lt; 1.5) THEN&lt;br /&gt;   &lt;statements&gt;&lt;br /&gt;&lt;br /&gt;  --&lt;br /&gt;  -- We also want to consider students who are failing two or more&lt;br /&gt;  -- classes, even if their GPA is above 1.5.&lt;br /&gt;  --&lt;br /&gt;  ELSIF Has_Two_Fails (nForSSN =&gt; nSSN) THEN&lt;br /&gt;     &lt;statements&gt;&lt;br /&gt;&lt;br /&gt;  ELSE&lt;br /&gt;     &lt;statements&gt;&lt;br /&gt;  END IF;&lt;br /&gt;•  Before any line containing the LOOP keyword. Do not place a blank line before source code containing the END LOOP keyword. (As with lines of code containing the IF keyword, keep the comments for a line of code with the comment by placing a blank line before the comment.) &lt;br /&gt;  --&lt;br /&gt;  -- For each student returned by the query, add the student's social&lt;br /&gt;  -- security number to the PL/SQL table.&lt;br /&gt;  --&lt;br /&gt;  FOR Students_rec IN Students_cur LOOP&lt;br /&gt;     &lt;statements&gt;&lt;br /&gt;  END LOOP;&lt;br /&gt;•  Before each exception after the first declared within the EXCEPTION section of a PL/SQL block. &lt;br /&gt;  EXCEPTION&lt;br /&gt;    WHEN NO_DATA_FOUND THEN&lt;br /&gt;         &lt;statements&gt;&lt;br /&gt;&lt;br /&gt;    WHEN TOO_MANY_ROWS THEN&lt;br /&gt;         &lt;statements&gt;&lt;br /&gt;&lt;br /&gt;    WHEN OTHERS THEN&lt;br /&gt;         &lt;statements&gt;&lt;br /&gt;•  Before and after the variable, constant, and type declarations for a PL/SQL block. &lt;br /&gt;  PROCEDURE Update_Student_GPA (nSSN IN     number)&lt;br /&gt;  IS&lt;br /&gt;&lt;br /&gt;    &lt;declaration&gt;&lt;br /&gt;    &lt;declaration&gt;&lt;br /&gt;&lt;br /&gt;  BEGIN&lt;br /&gt;    &lt;statements&gt;;&lt;br /&gt;  END Update_Student_GPA;&lt;br /&gt;•  Following the declaration of the procedure and its parameters. &lt;br /&gt;  PROCEDURE Update_Student_GPA (nSSN IN     number)&lt;br /&gt;&lt;br /&gt;  IS&lt;br /&gt;•  Do not place an empty line before a line containing the END IF keyword. Do place blank lines after the last line of code containing the END IF keyword. &lt;br /&gt;  IF (some expression) THEN&lt;br /&gt;&lt;br /&gt;    IF (some expression) THEN&lt;br /&gt;&lt;br /&gt;      IF (some expression) THEN&lt;br /&gt;         &lt;statements&gt;&lt;br /&gt;      END IF;&lt;br /&gt;    END IF;&lt;br /&gt;  END IF;&lt;br /&gt;&lt;br /&gt;  &lt;statements&gt;&lt;br /&gt;Named Vs. Positional Notation&lt;br /&gt;Procedures and functions should always be called using named notation for their parameters. This helps identify the data that is being passed to the stored PL/SQL object (assuming that the identifiers chosen for the parameters are meaningful). Place only one parameter on each line of the call:&lt;br /&gt;DaysBetween (dStartDate   =&gt; dEnrolledDate,&lt;br /&gt;             dEndDate     =&gt; dGraduationDate,&lt;br /&gt;             nGPA         =&gt; nFinalGPA,&lt;br /&gt;             nDaysBetween =&gt; nDuration);&lt;br /&gt;Statements Per Line And Line Width&lt;br /&gt;Place only one statement (or part thereof) per line of code. Break compound statements over multiple lines. Do not exceed a maximum line width of 80 characters (including indentation). Due to space limitations, the lines in this book are limited to a maximum of 70 characters.&lt;br /&gt;If your code has a complex equation or formula that is expressed using a single statement or operation, consider breaking the code into several smaller statements to make the operations less intimidating. The equation will be much easier to debug; in addition, the process of breaking the equation into subsections will increase your awareness of any mistakes that you make.&lt;br /&gt;SQL Statement Formatting Rules&lt;br /&gt;The formatting of SQL statements is one of the few areas in which this standard can be “the law.” All SQL statements should conform precisely to these standards to the maximum extent possible; even slight deviations can have a performance impact on an Oracle database.&lt;br /&gt;Oracle caches individual SQL statements within its shared global area (SGA). When a new statement is issued, Oracle does a block comparison of the statement against statements in the SGA. If a match is found, Oracle re-executes the stored version of the statement, rather than parsing the new statement and then executing it.&lt;br /&gt;For instance, presume that the SGA contains the following SQL statement:&lt;br /&gt;SELECT name, ssn, grade&lt;br /&gt;FROM   STUDENT_GRADES&lt;br /&gt;WHERE  grade &gt; 90;&lt;br /&gt;Now presume that someone executes this statement:&lt;br /&gt;SELECT name, ssn, grade&lt;br /&gt; FROM STUDENT_GRADES&lt;br /&gt; WHERE grade &gt; 90;&lt;br /&gt;The second statement, although functionally identical to the statement already existing in the SGA, would not find a match in the SGA and would be parsed to determine the proper execution plan for the statement, thus increasing the overhead of the statement and slowing the response to the user.&lt;br /&gt;To make matters worse, the first (and the correct) statement might be pushed out of the SGA to make room for the new statement, further impacting the processing of code that does follow the standard. The placement of a single space or shifting the case of a single character will force an SQL statement to be parsed and placed in the SGA instead of finding a matching statement in the SGA, due to the nature of the block comparison algorithm that Oracle uses.&lt;br /&gt;Admittedly, the time required to parse a single statement to determine an execution plan is very small, but with tens or hundreds of users hitting the database at the same time, those milliseconds add up very quickly. Performance improvements are sometimes achieved in one fell swoop, but a lot of performance tuning work is the result of painstakingly wringing small improvements out of a lot of different pieces of code.&lt;br /&gt;A number of examples are listed in the following sections. In each section, one example is labeled Correct and the other examples are labeled Incorrect. The example labeled correct is the only acceptable format for statements of the type, even though the other statements shown (and many variations not shown) are functionally equivalent to the “correct” statement. &lt;br /&gt;DELETE Statements&lt;br /&gt;Correct:&lt;br /&gt;DELETE&lt;br /&gt;FROM   STUDENTS&lt;br /&gt;WHERE  ssn = 999999999;&lt;br /&gt;Incorrect:&lt;br /&gt;DELETE&lt;br /&gt;  FROM STUDENTS&lt;br /&gt; WHERE ssn = 999999999;&lt;br /&gt;Incorrect:&lt;br /&gt;DELETE STUDENTS WHERE ssn = 999999999;&lt;br /&gt;INSERT Statements&lt;br /&gt;Correct:&lt;br /&gt;INSERT&lt;br /&gt;INTO   STUDENTS&lt;br /&gt;       (ssn,&lt;br /&gt;       first_name,&lt;br /&gt;       last_name,&lt;br /&gt;       ...&lt;br /&gt;       most_recent_gpa)&lt;br /&gt;VALUES (999999999,&lt;br /&gt;       'Roger',&lt;br /&gt;       'Smith',&lt;br /&gt;       ...&lt;br /&gt;       NULL);&lt;br /&gt;Incorrect:&lt;br /&gt;INSERT&lt;br /&gt;INTO STUDENTS (ssn, first_name, last_name,... most_recent_gpa)&lt;br /&gt;VALUES (999999999, 'Roger', 'Smith',...NULL);&lt;br /&gt;Incorrect:&lt;br /&gt;INSERT INTO STUDENTS&lt;br /&gt;VALUES (999999999, 'Roger', 'Smith', ... NULL);&lt;br /&gt;Incorrect:&lt;br /&gt;INSERT INTO STUDENTS VALUES (999999999, 'Roger', 'Smith',...NULL);&lt;br /&gt;SELECT Statements&lt;br /&gt;Correct:&lt;br /&gt;SELECT last_name, first_name, middle_name, ssn, most_recent_gpa&lt;br /&gt;FROM   STUDENTS&lt;br /&gt;WHERE  ssn = 999999999;&lt;br /&gt;Incorrect:&lt;br /&gt;SELECT last_name, first_name FROM STUDENTS&lt;br /&gt;WHERE&lt;br /&gt;ssn = 999999999;&lt;br /&gt;Incorrect:&lt;br /&gt;SELECT ssn, most_recent_gpa&lt;br /&gt;FROM STUDENTS&lt;br /&gt;WHERE most_recent_gpa &lt; 2.0;&lt;br /&gt;UPDATE Statements&lt;br /&gt;Correct:&lt;br /&gt;UPDATE STUDENTS&lt;br /&gt;SET     apartment_number = 'H',&lt;br /&gt;        street_address   = '16 Northwest Main Street'&lt;br /&gt;WHERE   ssn = 999999999;&lt;br /&gt;Incorrect:&lt;br /&gt;UPDATE STUDENTS&lt;br /&gt;SET apartment_number = 'H',&lt;br /&gt;street_address = '16 Northwest Main Street'&lt;br /&gt;WHERE ssn = 999999999;&lt;br /&gt;Incorrect:&lt;br /&gt;UPDATE STUDENTS&lt;br /&gt;SET    apartment_number = 'H', street_address = '16 Northwest Main&lt;br /&gt;Street'&lt;br /&gt;WHERE ssn = 999999999;&lt;br /&gt;PL/SQL Naming Conventions&lt;br /&gt;Using a set of naming conventions for PL/SQL objects tends to create more meaningful identifiers. This section of the standard will come into play most often when creating identifiers (variables and constants) inside blocks of code.&lt;br /&gt;It is common to utilize abbreviations to shorten identifiers. When doing so, the abbreviations should be meaningful and used consistently (e.g., do not use both ADDR and ADRS as an abbreviation for ADDRESS). &lt;br /&gt;Database Triggers&lt;br /&gt;Database triggers are named using this convention:&lt;br /&gt;table_name + trigger_type_extension&lt;br /&gt;In this example, table_name is the name of the trigger’s base table, and trigger_type_extension represents one of the four types of database triggers listed in Table D.4, plus one or more of the letters shown in Table D.5 to indicate which DML statements cause the trigger to fire. &lt;br /&gt;Table D.4 The four types of database triggers. ________________________________________&lt;br /&gt;Trigger Type  Extension  Fires &lt;br /&gt;Before statement  _B  Once, before the DML statement acting on the table. &lt;br /&gt;Before row  _BR  Once for each row affected by the DML statement, before the DML statement is executed. &lt;br /&gt;After row  _AR  Once for each row affected by the DML statement, after the DML statement is executed. &lt;br /&gt;After statement  _A  Once, after the DML statement has finished executing. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Table D.5 Modifications to trigger_type_extension to indicate DML statements handled by the trigger. ________________________________________&lt;br /&gt;Trigger Type Extension  DML Statement &lt;br /&gt;D  The trigger fires when a DELETE statement modifies the base table. &lt;br /&gt;I  The trigger fires when an INSERT statement modifies the base table. &lt;br /&gt;U  The trigger fires when an UPDATE statement modifies the base table. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thus, a BEFORE INSERT or UPDATE row level trigger on the STUDENTS table would be named STUDENTS_BRIU. &lt;br /&gt;If the length of the trigger name exceeds 30 characters when following this standard, abbreviate the name of the trigger’s base table to create the name of the trigger. Under no circumstances should the trigger type extension be abbreviated.&lt;br /&gt;Identifiers&lt;br /&gt;When declaring variables and constants, the developer should preface a meaningful identifier with one of the prefixes shown in Table D.6.&lt;br /&gt;Table D.6 Datatype prefixes for use in identifiers. ________________________________________&lt;br /&gt;Datatype  Prefix  Example &lt;br /&gt;binary_integer  bi  biArrayIndex &lt;br /&gt;boolean  b  bStudentQualifiesForAid &lt;br /&gt;char  c  cYesOrNo &lt;br /&gt;date  d  dEnrolledDate &lt;br /&gt;exception  x  xTABLE_DOES_NOT_EXIST &lt;br /&gt;integer  i  iCoursesCarried &lt;br /&gt;long  l  lComments &lt;br /&gt;longraw  lr  lrStudentPhoto &lt;br /&gt;natural  na  naArrayIndex &lt;br /&gt;number  n  nRemainingBalance &lt;br /&gt;raw  r  rStudentPhoto &lt;br /&gt;rowid  row  rowStudent &lt;br /&gt;varchar2  v  vStudentFirstName &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Identifiers should always use mixed-case and capital letters to indicate separation of elements within an identifier. Thus, a variable of type varchar2 that holds a student’s first name would be vStudentFirstName. &lt;br /&gt;The identifiers used for explicitly declared cursors should be meaningful; the suffix _cur should be appended to the identifier. For example: &lt;br /&gt;CURSOR Students_cur&lt;br /&gt;IS&lt;br /&gt;SELECT first_name, middle_name, last_name, overall_gpa, most_recent_gpa&lt;br /&gt;FROM   STUDENTS;&lt;br /&gt;Identifiers declared using %TYPE should still include a datatype prefix as part of the identifier name: &lt;br /&gt;nStudentSSN    STUDENTS.ssn%TYPE;&lt;br /&gt;Identifiers declared using %ROWTYPE should be named like the object that is lending the variable its structure. These identifiers should always include the _rec suffix as part of the identifier: &lt;br /&gt;Students_rec          STUDENTS%ROWTYPE;&lt;br /&gt;FailingStudents_rec   FailingStudents_cur%ROWTYPE;&lt;br /&gt;Procedures And Functions&lt;br /&gt;Stored procedures and functions should be named first by the type of action the object performs and then by the object of that action. For instance, a procedure that calculates interest on a student’s remaining balance would be named Calculate_Balance_Interest. &lt;br /&gt;Packages&lt;br /&gt;Packages should be named in accordance with the general purpose of the procedures and functions contained within the package. For instance, a package containing routines used to calculate a student’s GPA would be named GPA_Calculations. &lt;br /&gt;Written Documentation&lt;br /&gt;All documentation pertaining to system design should follow the conventions identified in this standard. This applies especially to pseudocode that is used to document stored PL/SQL objects.&lt;br /&gt;In addition, all written documentation should reference calls to built-in and developer-written procedures and functions using a set of parentheses, as in “will call the Calculate_Semester_GPA() procedure”. The names of built-in and developer-written code modules should also be referenced in bold. &lt;br /&gt;Taking Advantage Of Standardized Code&lt;br /&gt;Oracle stores the source code for PL/SQL objects inside the ALL_SOURCE view of the DBA_SOURCE table in the SYS schema. This allows you to query the most recent source code for a procedure or function from the database. &lt;br /&gt;If the coding standards are followed fairly closely, it’s possible to write scripts that work with your source code to assist you in your documentation efforts. Included on the CD-ROM is a script that takes full advantage of the coding standards to collect information about and document source code.&lt;br /&gt;The Build_SUID_Matrix Package&lt;br /&gt;Oracle stores dependencies in the ALL_DEPENDENCIES view, but this information exists only at the object-to-object and object-to-table levels. The view cannot, for instance, state precisely which objects perform INSERT statements on a specific table. &lt;br /&gt;The Build_SUID_Matrix package was designed to locate all references to tables within a specified PL/SQL object. The procedures and functions in the package locate table references and sort the references by type (SELECT, INSERT, UPDATE, DELETE, and %TYPE or %ROWTYPE). The package populates the SUID_MATRIX table with this information. &lt;br /&gt;Once the SUID_MATRIX table is fully populated, a query can be run to see precisely which objects access a specified table or which tables a specified object references. This is particularly useful when: &lt;br /&gt;•  Examining the impact of creating a new index. &lt;br /&gt;•  Examining the impact of altering a table’s structure. &lt;br /&gt;•  Determining which objects perform a particular type of operation against a table. &lt;br /&gt;Improving The Build_SUID_Matrix Package&lt;br /&gt;There are a number of potential improvements that can be made to the Build_SUID_Matrix package: &lt;br /&gt;•  Improving the level of detail determined to the column level. Knowing which objects modify data in a table is very useful, but if 20 routines update a table and only a few routines update a particular column that has a suspect value, it’s even quicker to find the routines that modify the value in that column. &lt;br /&gt;•  Recognizing objects within packages. The current implementation of the package only recognizes objects to the package level and doesn’t differentiate between procedures and functions within the package.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-8863578533610465944?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/c_VYbk4DQorcJ8n3NZuOYktUQP8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c_VYbk4DQorcJ8n3NZuOYktUQP8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/c_VYbk4DQorcJ8n3NZuOYktUQP8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c_VYbk4DQorcJ8n3NZuOYktUQP8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/qTEVsyDVi2A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/8863578533610465944/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/11/sql-and-plsql-coding-standards.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/8863578533610465944?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/8863578533610465944?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/qTEVsyDVi2A/sql-and-plsql-coding-standards.html" title="SQL And PL/SQL Coding Standards" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/11/sql-and-plsql-coding-standards.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYCQno-cSp7ImA9WxNbFEk.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-6752739215844371092</id><published>2009-11-16T22:41:00.000-08:00</published><updated>2009-11-16T22:42:43.459-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-16T22:42:43.459-08:00</app:edited><title>Using SQL*Loader to Populate the Payables Open InterfaceTables</title><content type="html">You can create a SQL*Loader program that produces a flat file containing the invoice details you want to bring into Payables. For detailed information on the tables, refer to Open Interface Import Table Descriptions.&lt;br /&gt;&lt;br /&gt;To use SQL*Loader to populate the Payables Open Interface tables:&lt;br /&gt;&lt;br /&gt;1. For each invoice, the program should identify the supplier by providing a value for at least one of the following columns: VENDOR_ID, VENDOR_NUM, VENDOR_SITE_ID, or PO_NUMBER. In addition, for each record, you must populate the following required columns in AP_INVOICES_INTERFACE:&lt;br /&gt;INVOICE_ID&lt;br /&gt;INVOICE_NUM&lt;br /&gt;INVOICE_AMOUNT&lt;br /&gt;SOURCE. Make certain that you specify a Source type QuickCode exactly as you entered it in the Payables QuickCodes window.&lt;br /&gt;For each invoice line, include the following values to populate the columns in the AP_INVOICE_LINES_INTERFACE: &lt;br /&gt;INVOICE_ID&lt;br /&gt;LINE_TYPE_LOOKUP_CODE&lt;br /&gt;AMOUNT&lt;br /&gt;In addition, if you are importing foreign currency invoices, include information to populate the following columns in AP_INVOICES_INTERFACE: &lt;br /&gt;EXCHANGE_RATE_TYPE &lt;br /&gt;EXCHANGE_RATE (if you use User-defined rate type)&lt;br /&gt;If this exchange rate information is the same for all invoices and invoice distributions you import, you can include this information in your SQL*Loader control file, instead of entering it separately for each invoice.&lt;br /&gt;Finally, ensure that your invoice flat file has the appropriate information to populate AP_INVOICES_INTERFACE and AP_INVOICE_LINES_INTERFACE as indicated in the preceding table descriptions. If a value is not required for a column, you may leave the column empty.&lt;br /&gt; &lt;br /&gt;2. Create a SQL*Loader control file.&lt;br /&gt;Read the SQL*Loader documentation to learn how to write a SQL*Loader control file. The file you write will vary greatly depending on the nature and format of the invoice flat file you use. Your control file must populate AP_INVOICES_INTERFACE and AP_INVOICE_LINES_INTERFACE as indicated in the previous table descriptions. See also: SQL*Loader (ORACLE8 Server Utilities Guide).&lt;br /&gt;Code your control file to populate the SOURCE column in AP_INVOICES_INTERFACE with the Source code exactly as you defined it in the QuickCodes window.&lt;br /&gt;If all your invoices are in the same currency, you can hard code the value for DEFAULT_CURRENCY_CODE in AP_INVOICES_INTERFACE and CURRENCY_CODE in AP_INVOICE_LINES_INTERFACE in your control file. &lt;br /&gt;&lt;br /&gt;3. Use the SQL*Loader program you created to load your invoice information from your flat file into the interface tables. Indicate your control file as the SQL*Loader control file, your invoice flat file as the SQL*Loader input file, and your Payables SQL*Plus username and password as the database sign on. For more information see: Oracle8 Server Utilities Guide.&lt;br /&gt;&lt;br /&gt;4. Use the Open Interface Invoices window to review and edit the data in the Payables Open Interface tables.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-6752739215844371092?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LcKVCcOHZiiMVCaDEtwijp4bkGM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LcKVCcOHZiiMVCaDEtwijp4bkGM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LcKVCcOHZiiMVCaDEtwijp4bkGM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LcKVCcOHZiiMVCaDEtwijp4bkGM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/3KPbRRxjcYk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/6752739215844371092/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/11/using-sqlloader-to-populate-payables.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/6752739215844371092?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/6752739215844371092?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/3KPbRRxjcYk/using-sqlloader-to-populate-payables.html" title="Using SQL*Loader to Populate the Payables Open InterfaceTables" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/11/using-sqlloader-to-populate-payables.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcESXs8cSp7ImA9WxNbFEk.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-1583873571288818071</id><published>2009-11-16T21:54:00.000-08:00</published><updated>2009-11-16T22:40:08.579-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-16T22:40:08.579-08:00</app:edited><title>Payables Open Interface</title><content type="html">http://download.oracle.com/docs/cd/A60725_05/html/comnls/us/ap/openint.htm&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/A60725_05/html/comnls/us/ap/openint.htm"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-1583873571288818071?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n8S4lCfvJ6XuH7yFFvJlxXFxPPU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n8S4lCfvJ6XuH7yFFvJlxXFxPPU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n8S4lCfvJ6XuH7yFFvJlxXFxPPU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n8S4lCfvJ6XuH7yFFvJlxXFxPPU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/c9-R-m6mAcs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/1583873571288818071/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/11/payables-open-interface-table.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/1583873571288818071?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/1583873571288818071?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/c9-R-m6mAcs/payables-open-interface-table.html" title="Payables Open Interface" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/11/payables-open-interface-table.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8GR3g_eCp7ImA9WxNUEUk.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-8619192400706038506</id><published>2009-11-01T23:56:00.000-08:00</published><updated>2009-11-02T00:00:26.640-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-02T00:00:26.640-08:00</app:edited><title>Exporting OA_Page from Database</title><content type="html">Exporting OA_Page from Database&lt;br /&gt;=========================&lt;br /&gt;Connect to db server with putty .go to $JAVA_TOPAnd then execute the follwing command.Page exported to this directory created. $JAVA_TOP/chola/this is the "/oracle/apps/per/selfservice/loa/webui/LoaSummaryPG" page.&lt;br /&gt;Exporting Page&lt;br /&gt;========================&lt;br /&gt;java oracle.jrad.tools.xml.exporter.XMLExporter /oracle/apps/per/selfservice/loa/webui/LoaSummaryPG -rootdir $JAVA_TOP/chola -username apps -password password -dbconnection "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST =dbserver ) (PORT = ))) (CONNECT_DATA = (SID = TEST)))"&lt;br /&gt;Exporting Region&lt;br /&gt;========================&lt;br /&gt;java oracle.jrad.tools.xml.exporter.XMLExporter /oracle/apps/per/selfservice/accruals/webui/AccrualBalanceRN -rootdir $JAVA_TOP/chola -username apps -password password -dbconnection "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = dbserver) (PORT = ))) (CONNECT_DATA = (SID = TEST)))"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-8619192400706038506?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ghXshmoomJItaOsP5youn6vd7Rg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ghXshmoomJItaOsP5youn6vd7Rg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ghXshmoomJItaOsP5youn6vd7Rg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ghXshmoomJItaOsP5youn6vd7Rg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/IwSuM6858g4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/8619192400706038506/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/11/exporting-oapage-from-database.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/8619192400706038506?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/8619192400706038506?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/IwSuM6858g4/exporting-oapage-from-database.html" title="Exporting OA_Page from Database" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/11/exporting-oapage-from-database.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUMQXo4eSp7ImA9WxNWFUw.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-4394754992269719067</id><published>2009-10-14T02:20:00.000-07:00</published><updated>2009-10-14T02:24:40.431-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-14T02:24:40.431-07:00</app:edited><title>OA_Page  Development &amp; Deployment To Oracle apps</title><content type="html">OA_Page  Development &amp;amp; Deployment To Oracle apps&lt;br /&gt;=============================================&lt;br /&gt;Step1 : login to J-Developer by clicking on connection.&lt;br /&gt;Step2: Create Oa workspace and Oa_project and give meaningful name them with default package eg. oracle.apps.ak.hrcosting.server&lt;br /&gt;Step3: Create two new business component packages under oa_project  without entity ,view object and application module eg.(Right click on Oa_project =&gt;New business component package)&lt;br /&gt;oracle.apps.ak.hrcosting.server&lt;br /&gt;oracle.apps.ak.hrcosting.webui&lt;br /&gt;step4: It will be looking like fig.&lt;br /&gt;Step5: Entity Object creation eg.&lt;br /&gt;Right click on oracle.apps.ak.hrcosting.server =&gt;New Entity Object =&gt;give the database view name=&gt; create one column as primary key=&gt; check validation.&lt;br /&gt;Step6: View Object Creation eg.&lt;br /&gt;Right click on newly created Entity Object =&gt;New default View object.&lt;br /&gt;Step7 : Rebuld Project&lt;br /&gt;Step8 : Page creation in webui&lt;br /&gt;Right click on project =&gt;new=&gt;Expand Web Tier=&gt;oa componenets=&gt;page&lt;br /&gt;Name that page eg. HRCOSTING&lt;br /&gt;Step9: Rename the below region eg.MainRN  and set the properties of that as below :&lt;br /&gt;Name:-MainRN&lt;br /&gt;Region Style :PageLayout&lt;br /&gt;AM Module : Appear automatically after clicking&lt;br /&gt;Window Title  and Title.&lt;br /&gt;Step10: Create another region under MainRN&lt;br /&gt;Name :QuerryRN&lt;br /&gt;Region Style :querry&lt;br /&gt;Construction mode: Result based search&lt;br /&gt;Include simple panel-true&lt;br /&gt;&lt;br /&gt;Include view panel-true&lt;br /&gt;Include advanced panel-true.&lt;br /&gt;Step11: right click on QuerryRN =&gt;Region using wizard =&gt;select view usage=&gt;check application module=&gt;select column.&lt;br /&gt;Id-viewname&lt;br /&gt;Region style:Table&lt;br /&gt;Records displayed:-6000&lt;br /&gt;Step12: Item properties&lt;br /&gt;Employee no :&lt;br /&gt;Search allowed:true&lt;br /&gt;Sort allowed :asending&lt;br /&gt;Employee Name:&lt;br /&gt;Search allowed :true&lt;br /&gt;Sort allowed : no&lt;br /&gt;Step13: Run the page HRCOSTING.xml&lt;br /&gt;Deploying OA Page in Oracle apps Environment&lt;br /&gt;&lt;br /&gt;The steps in brief are :&lt;br /&gt;==============================&lt;br /&gt;· Development of the JSP form in local machine&lt;br /&gt;· Transferring the related source code/files to the Oracle APPS environment.&lt;br /&gt;· Importing the new directory structure/path of the page/form in the MDS repository&lt;br /&gt;· Registration of the form in the Oracle Apps environment&lt;br /&gt;&lt;br /&gt;Step1: I’ve developed the HRCOSTING Page in&lt;br /&gt;D:\softwares\JDeveloper\p4573517_11i_GENERIC\jdevhome\jdev\myprojects directory.&lt;br /&gt;It is given at the time of workspace, project and package creation time.&lt;br /&gt;I’ve kept my xml pages in webui and EOP, VO and AM in server folder of the&lt;br /&gt;Hrcosting  folder.&lt;br /&gt;HRCOSTING folder is at location :&lt;br /&gt;D:\softwares\JDeveloper\p4573517_11i_GENERIC\jdevhome\jdev\myprojects\oracle\apps\ak&lt;br /&gt;So the root directory of  my project is&lt;br /&gt;D:\softwares\JDeveloper\p4573517_11i_GENERIC\jdevhome\jdev\myprojects&lt;br /&gt;&lt;br /&gt;On project compilation the class files along with xml files are generated in Myclasses of&lt;br /&gt;D:\softwares\JDeveloper\p4573517_11i_GENERIC\jdevhome\jdev\myclasses folder&lt;br /&gt;Go to myclasses\oracle\apps\ak\hrcosting  folder&lt;br /&gt;Eg. D:\softwares\JDeveloper\p4573517_11i_GENERIC\jdevhome\jdev\myclasses\oracle\apps\ak\hrcosting&lt;br /&gt;Structure is as below :&lt;br /&gt;&lt;br /&gt;Webui folder structure as :&lt;br /&gt;And server folder structure as :&lt;br /&gt;The next step will be to move the files into the JAVA_TOP of the Application server.&lt;br /&gt;Transfer the folder hrcosting in binary mode from local machine path as :&lt;br /&gt;D:\softwares\JDeveloper\p4573517_11i_GENERIC\jdevhome\jdev\myclasses\oracle\apps\ak\hrcosting&lt;br /&gt;To  Java top of the application server as below :&lt;br /&gt;$JAVA_TOP/oracle/apps/ak/     &lt;br /&gt;(Transfer of all the class files  should be in binary mode )&lt;br /&gt;Give the 755 permission to the entire hrcosting folder transferred by using unix command.&lt;br /&gt;Chmod  –R  755 hrcosting&lt;br /&gt;&lt;br /&gt;Next step is Importing Xml files :&lt;br /&gt;Open command prompt on your machine(local machine)&lt;br /&gt;Go to the Jdeveloper\jdevbin\jdev\bin  directory&lt;br /&gt;D:\softwares\JDeveloper\p4573517_11i_GENERIC\jdevbin\jdev\bin&lt;br /&gt;(Kindly note  hat the import command is to be run from Jdeveloper/Jdevbin/Jdev/Bin).&lt;br /&gt;The Import from HRCOSTING (HRCOSTING.xml) page is as follows :&lt;br /&gt;import D:\softwares\JDeveloper\p4573517_11i_GENERIC\jdevhome\jdev\myprojects\oracle\apps\ak\hrcosting\webui\HRCOSTING.xml -username apps -password hp75400 -rootdir D:\softwares\JDeveloper\p4573517_11i_GENERIC\jdevhome\jdev\myprojects\ -dbconnection "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 202.88.130.27) (PORT = 1546))) (CONNECT_DATA = (SID = TEST)))"&lt;br /&gt;(The command should be in single line)&lt;br /&gt;You will get the “Importing  /oracle/apps/ak/hrcosting/webui/HRCOSTING&lt;br /&gt;Import Completed “  message at the bottom.&lt;br /&gt;Note here :  “ /oracle/apps/ak/hrcosting/webui/HRCOSTING” this path.&lt;br /&gt;It is useful when giving html call to form function.&lt;br /&gt;&lt;br /&gt;Registering the Page as Form Function&lt;br /&gt;Create a form function by using System Administrator Responsibility .&lt;br /&gt;Enter Properties (Tab) Type as SSWA jsp function.&lt;br /&gt;In Web HTML(tab)&lt;br /&gt;Enter the Main xml page path&lt;br /&gt;OA.jsp?page=/oracle/apps/ak/hrcosting/webui/HRCOSTING        &lt;br /&gt;(Don’t append .xml with the path, it results in error)&lt;br /&gt;Attach the function with a menu and then run from the respective responsibility.       &lt;br /&gt;You may need to bounce the Apache server.(adapcctl.sh)&lt;br /&gt;When I run the page from menu it appears as :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Kamlesh&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-4394754992269719067?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uXrbaUAAEmzXc8xgJJqx0nUSGIg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uXrbaUAAEmzXc8xgJJqx0nUSGIg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uXrbaUAAEmzXc8xgJJqx0nUSGIg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uXrbaUAAEmzXc8xgJJqx0nUSGIg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/jW79j5ZvzZQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/4394754992269719067/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/10/oapage-development-deployment-to-oracle.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/4394754992269719067?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/4394754992269719067?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/jW79j5ZvzZQ/oapage-development-deployment-to-oracle.html" title="OA_Page  Development &amp; Deployment To Oracle apps" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/10/oapage-development-deployment-to-oracle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAEQHw7fip7ImA9WxNQGUs.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-1920208999479940243</id><published>2009-09-26T04:29:00.000-07:00</published><updated>2009-09-26T04:31:41.206-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-26T04:31:41.206-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="http://garethroberts.blogspot.com/2008/01/changing-default-layout-format-from-pdf.html" /><title>Changing the default layout format from PDF to Excel using Profile Option and FNDRSRUN Form Modification - Submitting BI Publisher Report Request</title><content type="html">&lt;h3 class="post-title"&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;h3 class="post-title"&gt;&lt;strong&gt;Update 2: &lt;/strong&gt;This solution is now obsolete:&lt;/h3&gt;    &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Patch 5612820 and 7627832&lt;/strong&gt; for R11i have been released for this issue. Applying these patches will overwrite the customization. See &lt;a href="http://garethroberts.blogspot.com/2009/01/revisited-changing-default-layout.html"&gt;this post&lt;/a&gt; for details.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Patch 5612820&lt;/strong&gt; for R12 has been released. See &lt;a href="http://garethroberts.blogspot.com/2008/11/r12-patch-5612820-available-changing.html"&gt;this post&lt;/a&gt; for details.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Well, a few people have been frustrated with the default output format of PDF when submitting BI Publisher based concurrent requests.&lt;/p&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_gQmjlYwXzGw/R5f6G3rG_iI/AAAAAAAAADY/Gcnw5qZxWb0/s1600-h/2008-01-24_1537.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_gQmjlYwXzGw/R5f6G3rG_iI/AAAAAAAAADY/Gcnw5qZxWb0/s320/2008-01-24_1537.png" alt="" id="BLOGGER_PHOTO_ID_5158866894107115042" border="0" /&gt;&lt;/a&gt;  &lt;p&gt;Oracle's better solution to provide a default output format on the template definition isn't here yet. For reference see Metalink Note &lt;a href="https://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&amp;amp;p_id=401328.1" target="_blank"&gt;401328.1&lt;/a&gt;, or &lt;a href="https://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=BUG&amp;amp;p_id=5612820" target="_blank"&gt;Bug 5612820&lt;/a&gt; or &lt;a href="https://metalink.oracle.com/metalink/plsql/showdoc?db=Bug&amp;amp;id=5036916" target="_blank"&gt;Bug 5036916&lt;/a&gt;, or Forums &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=593112" target="_blank"&gt;here&lt;/a&gt; or &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=410405" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I'm not going to hold my breath, so herein lies a solution to set the default based on a profile option value, using an unsupported form modification to FNDRSRUN.fmb (Submit Requests or Standard Request Submission). I don't usually recommend modifications, but in this case its one line of code and the impact is very minor, so if its blown away, we'll just have to get over it ... check the caveats at the bottom of the post too!&lt;/p&gt; &lt;p&gt;Note that it is possible to set the default format to Excel, RTF or whatever your preferred output format is via forms personalization &lt;span style="font-weight: bold;"&gt;if &lt;/span&gt;you always navigate to the Options, Layout block of the Submit Requests screen. But 99 times out of 100 I don't go there.&lt;/p&gt;&lt;p&gt;Onto the instructions.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;1. Create profile option "XML Publisher Default Format". &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Navigate to Application Developer, Profile&lt;/p&gt; &lt;p&gt;Create new profile option&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Name = XXV8_XMLP_DEFAULT_FORMAT&lt;/li&gt;&lt;li&gt;Application = (Your modifications application or Application Object Library)&lt;/li&gt;&lt;li&gt;User Profile Name = XML Publisher Default Format&lt;/li&gt;&lt;li&gt;SQL Validation:&lt;/li&gt;&lt;/ul&gt; &lt;pre&gt;SQL="SELECT MEANING \"Default Output Format\"&lt;br /&gt;, LOOKUP_CODE&lt;br /&gt;INTO :VISIBLE_OPTION_VALUE&lt;br /&gt;, :PROFILE_OPTION_VALUE&lt;br /&gt;FROM FND_LOOKUP_VALUES_VL&lt;br /&gt;WHERE  LOOKUP_TYPE = 'XDO_OUTPUT_TYPE'"&lt;br /&gt;COLUMN="\"Default Output Format\"(50)"&lt;/pre&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_gQmjlYwXzGw/R5f4qXrG_cI/AAAAAAAAACo/GhLzc3ZIsyw/s1600-h/2008-01-24_1507.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_gQmjlYwXzGw/R5f4qXrG_cI/AAAAAAAAACo/GhLzc3ZIsyw/s320/2008-01-24_1507.png" alt="" id="BLOGGER_PHOTO_ID_5158865304969215426" border="0" /&gt;&lt;/a&gt;  &lt;p&gt;&lt;strong&gt; 2. Set profile option value to Excel (or RTF etc) at the required levels &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Navigate to System Administrator, Profile, System &lt;/p&gt; &lt;p&gt;Find you profile option XML Publisher Default Format and set values as required.&lt;/p&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_gQmjlYwXzGw/R5f4qXrG_dI/AAAAAAAAACw/ga-z4I9YGMc/s1600-h/2008-01-24_1509.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_gQmjlYwXzGw/R5f4qXrG_dI/AAAAAAAAACw/ga-z4I9YGMc/s320/2008-01-24_1509.png" alt="" id="BLOGGER_PHOTO_ID_5158865304969215442" border="0" /&gt;&lt;/a&gt; &lt;p&gt;&lt;strong&gt;3. Modify Form FNDRSRUN.fmb &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Copy and open form $AU_TOP/forms/US/FNDRSRUN.fmb&lt;/p&gt; &lt;p&gt;Open Program Unit WORK_ORDER &lt;/p&gt; &lt;p&gt;Find the line:&lt;/p&gt; &lt;pre&gt;:templates.format := 'PDF';&lt;/pre&gt; &lt;p&gt;Note this is line/char 349/41 in Release 11i FNDRSRUN.fmb 115.169 or 359/40i in Release 12 FNDRSRUN.fmb 120.29&lt;/p&gt; &lt;p&gt;Change to:&lt;/p&gt; &lt;pre&gt;-- GR 24-JAN-08 Override default BI Publisher layout output format&lt;br /&gt;--:templates.format := 'PDF';&lt;br /&gt;:templates.format := nvl(fnd_profile.value('XXV8_XMLP_DEFAULT_FORMAT'),'PDF');&lt;/pre&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_gQmjlYwXzGw/R5f4q3rG_eI/AAAAAAAAAC4/Woj3dRYpFJs/s1600-h/2008-01-24_1510.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_gQmjlYwXzGw/R5f4q3rG_eI/AAAAAAAAAC4/Woj3dRYpFJs/s320/2008-01-24_1510.png" alt="" id="BLOGGER_PHOTO_ID_5158865313559150050" border="0" /&gt;&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;4. Compile Form FNDRSRUN.fmb to FNDRSRUN.fmx &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Copy the new FNDRSRUN.fmb to your custom top forms/US directory&lt;/p&gt; &lt;p&gt;Compile the fmb to fmx.&lt;/p&gt; &lt;pre&gt;FORMS60_PATH=$FORMS60_PATH:$AU_TOP/forms/US:$AU_TOP/plsql&lt;br /&gt;f60gen Module=FNDRSRUN.fmb Userid=apps/apps &gt; genform.log&lt;/pre&gt; &lt;p&gt;&lt;strong&gt; 5. Replace standard FNDRSRUN.fmx with modified version &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Note: Replace XXV8_TOP with your custom top. &lt;/p&gt;&lt;pre&gt;cd $FND_TOP/forms/US&lt;br /&gt;mv -i FNDRSRUN.fmx FNDRSRUN.fmx.orig&lt;br /&gt;ln -s $XXV8_TOP/forms/US/FNDRSRUN.fmx FNDRSRUN.fmx &lt;/pre&gt; &lt;p&gt;&lt;strong&gt;6. Test it out.&lt;/strong&gt;&lt;/p&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_gQmjlYwXzGw/R5f4tXrG_fI/AAAAAAAAADA/bQAK_52sF9k/s1600-h/2008-01-24_1514.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_gQmjlYwXzGw/R5f4tXrG_fI/AAAAAAAAADA/bQAK_52sF9k/s320/2008-01-24_1514.png" alt="" id="BLOGGER_PHOTO_ID_5158865356508823026" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gQmjlYwXzGw/R5f4tnrG_gI/AAAAAAAAADI/np9AGFExT_o/s1600-h/2008-01-24_1515.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_gQmjlYwXzGw/R5f4tnrG_gI/AAAAAAAAADI/np9AGFExT_o/s320/2008-01-24_1515.png" alt="" id="BLOGGER_PHOTO_ID_5158865360803790338" border="0" /&gt;&lt;/a&gt; &lt;p&gt;Some caveats here:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;This is an unsupported form modification that will be blown away when the FNDRSRUN form is upgraded (hopefully when the real solution appears). &lt;/li&gt;&lt;li&gt;The instructions above only replace the executable .fmx version of the FNDRSRUn file, so if FNDRSRUN is regenerated/recompiled via adadmin or similar then the modification will not be in place. Redo the "replace" step. &lt;/li&gt;&lt;li&gt;This modification assumes a template type of RTF. PDF can only produce PDF output, so you need to watch this when you set the profile option value.&lt;/li&gt;&lt;li&gt;If you always click on the Options button, then use a forms personalization instead of this forms modification. &lt;/li&gt;&lt;/ul&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-1920208999479940243?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ShE0KE649thTgvrb0cWAXEYXTjY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ShE0KE649thTgvrb0cWAXEYXTjY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ShE0KE649thTgvrb0cWAXEYXTjY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ShE0KE649thTgvrb0cWAXEYXTjY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/xYWUV0g75GE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/1920208999479940243/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/09/changing-default-layout-format-from-pdf.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/1920208999479940243?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/1920208999479940243?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/xYWUV0g75GE/changing-default-layout-format-from-pdf.html" title="Changing the default layout format from PDF to Excel using Profile Option and FNDRSRUN Form Modification - Submitting BI Publisher Report Request" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_gQmjlYwXzGw/R5f6G3rG_iI/AAAAAAAAADY/Gcnw5qZxWb0/s72-c/2008-01-24_1537.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/09/changing-default-layout-format-from-pdf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIMRHszfip7ImA9WxNQGUs.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-6099044401057254171</id><published>2009-09-26T04:11:00.000-07:00</published><updated>2009-09-26T04:13:05.586-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-26T04:13:05.586-07:00</app:edited><title>How To Create Custom Web-Adi Integrators</title><content type="html">&lt;p style="font-family: arial;"&gt;Web Applications Desktop Integrator (Web ADI) is a self-service Oracle application, accessed using a browser. Unlike ADI, the  Web ADI software is not installed on individual client machines, as the processing takes place on the server rather than on individual client PCs.&lt;/p&gt; &lt;p style="font-family: arial;"&gt;Web ADI generates Microsoft Excel or Word documents on your desktop, and downloads the data you have selected from the application. You can modify the data in the Microsoft Excel or Word documents, working either online or offline, and upload the data using Web ADI. In addition to the Web ADI integrators supplied with Oracle Applications, you can create your own integrators to allow download and upload data from Oracle windows or direct from Web ADI.&lt;/p&gt; &lt;p style="font-family: arial;"&gt;Except for HRMS, it seems to me that other Oracle Development teams have not utilized Web ADI to its full potential.  There were some discussions in forums and Oracle blogs on whether this approach is even needed. I feel like every available interface and API that let you integrate with legacy or 3rd party applications should come with a standard Web ADI integrator.&lt;/p&gt; &lt;p style="font-family: arial;"&gt;&lt;strong&gt;Creating Custom Integrators&lt;/strong&gt;&lt;/p&gt; &lt;p style="font-family: arial;"&gt;Thanks to the HRMS Web ADI, you can define your own custom HRMS and non-HRMS integrators and in a combination with the seeded Oracle APIs and interfaces, implement elegant solutions for downloading or uploading data. Examples for frequently used custom integrators include upload of employees, users, POs and requisitions, AP invoices, project events, AR transactions, etc.&lt;/p&gt; &lt;p style="font-family: arial;"&gt;Creating custom integrators is done by a system administrator. Let’s define an integrator to create employees to explain how to create custom integrators. Employees and employee assignments can be created using the standard HR_EMPLOYEE_API. Our custom integrator will upload data to this API.&lt;/p&gt; &lt;p style="font-family: arial;"&gt;&lt;strong&gt;Grant Access to Required Functions&lt;/strong&gt;&lt;/p&gt; &lt;p style="font-family: arial;"&gt;As System Administrator, navigate to Application &gt; Menu, and query up ‘Desktop Integration Menu’. Make sure to include functions required for respective integrators. In case of custom Create Employee integrator, you’ll need to include the following functions (no prompts are necessary):&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;HR Integrator Setup Integrator&lt;/li&gt;&lt;li&gt;HR Maintain Integrator Form Functions Integrator&lt;/li&gt;&lt;/ul&gt; &lt;p style="font-family: arial;"&gt;&lt;strong&gt;Create ‘HR Integrator Setup’ Web ADI Document&lt;/strong&gt;&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;Log in as Desktop Integration responsibility. Select Create Document from the menu. The Settings page of the Web ADI wizard appears.&lt;/li&gt;&lt;li&gt;In the Settings page, select a spreadsheet viewer in the Viewer field. Keep the Reporting check box unchecked, as this integrator is used to upload data to the database.&lt;/li&gt;&lt;li&gt;In the Integrator page, select the seeded integrator “HR Integrator Setup”.&lt;/li&gt;&lt;li&gt;In the Layout page, select the default layout “HR Integrator Setup”.&lt;/li&gt;&lt;li&gt;In the Content page, select None.&lt;/li&gt;&lt;li&gt;In the Review page, you can see full details of the document that will be created. Choose the Back button if you want to change any of the information, or choose the Create Document button to continue.&lt;/li&gt;&lt;li&gt;A spreadsheet document is created, containing all the fields you need to enter to create your own integrator.&lt;/li&gt;&lt;/ul&gt;  &lt;p style="text-align: center; font-family: arial;"&gt;&lt;a href="http://itsafeature.com/wp-content/uploads/2008/11/hr-integrator-setup-review.jpg"&gt;&lt;img class="size-full wp-image-726 alignnone" title="HR Integrator Setup Review" src="http://itsafeature.com/wp-content/uploads/2008/11/hr-integrator-setup-review.jpg" alt="" width="500" height="158" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;Define all fields to create your Create Employee integrator and upload it to the database.&lt;/li&gt;&lt;/ul&gt; &lt;p style="text-align: center; font-family: arial;"&gt;&lt;a href="http://itsafeature.com/wp-content/uploads/2008/11/webadi-create-custom-integrator.jpg"&gt;&lt;img class="size-full wp-image-731 aligncenter" title="WebADI Create Custom Integrator Document" src="http://itsafeature.com/wp-content/uploads/2008/11/webadi-create-custom-integrator.jpg" alt="" width="500" height="166" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p style="font-family: arial;"&gt;&lt;strong&gt;Controlling Access to Custom Integrators&lt;/strong&gt;&lt;/p&gt; &lt;p style="font-family: arial;"&gt;Custom integrators, like predefined integrators, must be associated with form functions. Follow the steps below to associate your Create Employee integrator with the functions required to define Web ADI layout and Web ADI document.&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;Select Create Document from the Web ADI menu.&lt;/li&gt;&lt;li&gt;Select a spreadsheet viewer. Leave the Reporting check box unselected to download data for updating.&lt;/li&gt;&lt;li&gt;Select HR Maintain Integrator Form Functions Integrator.&lt;/li&gt;&lt;li&gt;Enter the Application Short Name (for example, your custom application name). Optionally, enter the integrator name.&lt;/li&gt;&lt;li&gt;The displayed spreadsheet shows your selected custom integrators, and has a column for associating form functions. Enter the form function required for controlling access to the integrator.&lt;/li&gt;&lt;li&gt;Upload your changes to the database.&lt;/li&gt;&lt;/ul&gt; &lt;p style="text-align: center; font-family: arial;"&gt;&lt;a href="http://itsafeature.com/wp-content/uploads/2008/11/webadi-maintain-integrator-form-functions.jpg"&gt;&lt;img class="aligncenter size-full wp-image-741" title="WebADI Maintain Integrator Form Functions" src="http://itsafeature.com/wp-content/uploads/2008/11/webadi-maintain-integrator-form-functions.jpg" alt="" width="500" height="176" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p style="font-family: arial;"&gt;&lt;strong&gt;Define Layout of Custom Integrator&lt;/strong&gt;&lt;/p&gt; &lt;p style="font-family: arial;"&gt;Each integrator must have at least one layout specifying the columns to appear in the spreadsheet. To define a layout:&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;Choose Define Layout from the Web ADI menu. The Layout page appears.&lt;/li&gt;&lt;li&gt;Select the integrator for which you want to define the layout, and choose Go.&lt;/li&gt;&lt;li&gt;Choose the Define Layout button to define a new layout.&lt;/li&gt;&lt;li&gt;In the Define Layout page, enter a unique name for the layout. This appears whenever the user is required to select the layout, so should clearly indicate the purpose of the layout.&lt;/li&gt;&lt;li&gt;Enter a unique key. The key is used internally by the system to identify the mapping.&lt;/li&gt;&lt;li&gt;The Field List defaults to the complete list of columns available in the view or API.&lt;/li&gt;&lt;li&gt;Choose Continue. In case of Create Employee integrator, the layout is based on the the HR_EMPLOYEE_API columns. In the next page, you select a subset of these fields to include in your layout.&lt;/li&gt;&lt;/ul&gt; &lt;p style="text-align: center; font-family: arial;"&gt;&lt;a href="http://itsafeature.com/wp-content/uploads/2008/11/webadi-create-employee-layout.jpg"&gt;&lt;img class="size-full wp-image-745 aligncenter" title="WebADI Create Employee Layout" src="http://itsafeature.com/wp-content/uploads/2008/11/webadi-create-employee-layout.jpg" alt="" width="500" height="375" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p style="font-family: arial;"&gt;&lt;strong&gt;Create ‘Create Employee’ Spreadsheet&lt;/strong&gt;&lt;/p&gt; &lt;p style="font-family: arial;"&gt;And finally, using the custom integrator and layout defined above, create a new ‘Create Employee’ WebADI upload spreadsheet:&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;From the Navigator window (Oracle Personal Home Page), click on ‘Desktop Integration’ responsibility. The Settings page of the Web ADI wizard appears.&lt;/li&gt;&lt;li&gt;In the Settings page, select a spreadsheet viewer in the Viewer field. Keep the Reporting check box unchecked, as this integrator is used to upload data to the database.&lt;/li&gt;&lt;li&gt;In the Integrator page, select your new integrator ‘Create Employee’.&lt;/li&gt;&lt;li&gt;In the Layout page, select the default layout “Create Employee”.&lt;/li&gt;&lt;li&gt;In the Content page, select None.&lt;/li&gt;&lt;li&gt;In the Review page, you can see full details of the document that will be created. Choose the Back button if you want to change any of the information, or choose the Create Document button to continue.&lt;/li&gt;&lt;/ul&gt; &lt;p style="text-align: center; font-family: arial;"&gt;&lt;a href="http://itsafeature.com/wp-content/uploads/2008/11/webadi-create-employee-document-review.jpg"&gt;&lt;img class="size-full wp-image-750 aligncenter" title="WebADI Create Employee Document Review" src="http://itsafeature.com/wp-content/uploads/2008/11/webadi-create-employee-document-review.jpg" alt="" width="500" height="202" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;A spreadsheet document is created and ready to use for creating employees.&lt;/li&gt;&lt;li&gt;Save a local copy to your PC.&lt;/li&gt;&lt;/ul&gt; &lt;p style="text-align: center; font-family: arial;"&gt;&lt;a href="http://itsafeature.com/wp-content/uploads/2008/11/webadi-create-employee-spreadsheet.jpg"&gt;&lt;img class="size-full wp-image-753 aligncenter" title="WebADI Create Employee Spreadsheet" src="http://itsafeature.com/wp-content/uploads/2008/11/webadi-create-employee-spreadsheet.jpg" alt="" width="500" height="174" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p style="text-align: center; font-family: arial;"&gt;&lt;a href="http://itsafeature.com/wp-content/uploads/2008/11/webadi-create-employee-spreadsheet.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;   &lt;/script&gt;   &lt;script type="text/javascript"&gt;   _uacct = "UA-526159-1";   urchinTracker();   &lt;/script&gt;    &lt;div style="font-family: arial;" class="feedback"&gt;   &lt;/div&gt;&lt;small style="font-family: arial;"&gt;  &lt;/small&gt;        &lt;!--   &lt;rdf:rdf rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" dc="http://purl.org/dc/elements/1.1/" trackback="http://madskills.com/public/xml/rss/module/trackback/"&gt;    &lt;rdf:description about="http://itsafeature.com/how-to-create-custom-webadi-integrators/" identifier="http://itsafeature.com/how-to-create-custom-webadi-integrators/" title="How to Create Custom WebADI Integrators" ping="http://itsafeature.com/how-to-create-custom-webadi-integrators/trackback/"&gt; &lt;/rdf:RDF&gt;   --&gt;                   &lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div style="font-family: arial;" id="refHTML"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-6099044401057254171?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0cG9ZH0d0O5hx-i-701P-F4PBe4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0cG9ZH0d0O5hx-i-701P-F4PBe4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0cG9ZH0d0O5hx-i-701P-F4PBe4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0cG9ZH0d0O5hx-i-701P-F4PBe4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/bL5-xq04AHY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/6099044401057254171/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/09/how-to-create-custom-web-adi.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/6099044401057254171?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/6099044401057254171?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/bL5-xq04AHY/how-to-create-custom-web-adi.html" title="How To Create Custom Web-Adi Integrators" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/09/how-to-create-custom-web-adi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4ASH87cSp7ImA9WxNRE0U.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-7759228937423396317</id><published>2009-09-07T22:32:00.000-07:00</published><updated>2009-09-07T22:49:09.109-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-07T22:49:09.109-07:00</app:edited><title>Basic Steps to Enable Multi-Org</title><content type="html">&lt;strong&gt;Define the Organization Structure.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;=============================================================&lt;/strong&gt;&lt;br /&gt;Plan and define the entities in your organizational structure.A successful implementation of Multiple Organization Support in Oracle Applications primarily depends on correctly defining your organization structure in the hierarchy used by Oracle Applications. A careful analysis and design of a company’s organization structure is critical for future success.&lt;br /&gt;===================================================================&lt;br /&gt;&lt;strong&gt;The following points describe how the Multi-Org model relates organizations:&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;=============================================================&lt;/strong&gt;&lt;br /&gt;•         A Business Group is the highest level of the structure and has no accounting impact.The  Business   Group determines which employees will be available to Sets of Books and Operating Units related to that Business Group.&lt;br /&gt;•         Set of Books is the highest level which impacts the accounting side of business.&lt;br /&gt;•         Set of Books is associated with a single Business Group, multiple Sets of Books may be associated with a single Business Group.&lt;br /&gt;•         Each Set of Books may have a different chart of accounts structure, calendar, or functional currency.&lt;br /&gt;•         Each Legal Entity is associated with a single Set of Books, multiple Legal Entities may be associated with a single Set of Books.&lt;br /&gt;•         Each Operating Unit is associated with a single Legal Entity, multiple Operating Units may be associated with a single  Legal Entity.&lt;br /&gt;•         An Inventory Organization may be associated with any Operating Unit within the same Set of Books.&lt;br /&gt;===============================================================&lt;br /&gt;&lt;strong&gt;Convert to Multi-Org:&lt;/strong&gt;&lt;br /&gt;===============================================================&lt;br /&gt;After defining at least one operating unit, use &lt;strong&gt;ADADMIN&lt;/strong&gt; to convert to Multi-Org.  This step only needs to be perform one time.  After ADADMIN is run, the Seed Data Replication program copies the applicable setup data delivered with Oracle Applications for each defined operating unit.  If you add additional operating units, you can run the See Data Replication program manually at any time.  Note that seed data is only data that comes with the database and does not include any operating unit specific setups you may perform.Run ADADMIN to Convert to Multiple Org&lt;br /&gt;•         When you select the adadmin option, Convert to Multiple Organization architecture, the Multi-Org switch is automatically turned on; a flag called &lt;strong&gt;multi_org_flag, is set to Y&lt;/strong&gt;. The seed data replication program is then executed and processes according to the value of the multi_org_flag.           &lt;br /&gt;Run Seed Data Replication  Seed data is replicated under the following circumstances:&lt;br /&gt;•         Submit the Replicate &lt;strong&gt;Seed Data concurrent request&lt;/strong&gt; using the System Administrator responsibility.&lt;br /&gt;&lt;strong&gt;The seed data replication program works in two modes:&lt;/strong&gt;&lt;br /&gt;•         Single organization: This mode applies when the seed data replication program is executed within the context of a particular operating unit (or Org_ID).&lt;br /&gt;•         All organizations: This mode applies when the seed data replication program is executed without an operating unit context.&lt;br /&gt;===================================================================&lt;br /&gt;&lt;strong&gt;The following steps are required to add new operating units to your Organizational Structure:&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;=============================================================&lt;/strong&gt;&lt;br /&gt;•         Revise the Organization Structure&lt;br /&gt;•         Define Sets of Books (optional)&lt;br /&gt;•         Define Organizations and Relationships&lt;br /&gt;•         Define Responsibilities&lt;br /&gt;•         Set Profile Options for each Responsibility&lt;br /&gt;•         Define Inventory Organization Security (optional)&lt;br /&gt;•         Implement the Application products&lt;br /&gt;•         Secure Balancing Segment Values (optional)&lt;br /&gt;•         Run the Setup Validation Report (recommended)&lt;br /&gt;•         Implement Document Sequencing (optional)&lt;br /&gt;•         Define Intercompany Relations (optional)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-7759228937423396317?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BOJkWk15c8O9NF9XVQBc-Zosvas/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BOJkWk15c8O9NF9XVQBc-Zosvas/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BOJkWk15c8O9NF9XVQBc-Zosvas/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BOJkWk15c8O9NF9XVQBc-Zosvas/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/n0PZohtWT8I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/7759228937423396317/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/09/basic-steps-to-enable-multi-org.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/7759228937423396317?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/7759228937423396317?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/n0PZohtWT8I/basic-steps-to-enable-multi-org.html" title="Basic Steps to Enable Multi-Org" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>2</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/09/basic-steps-to-enable-multi-org.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMHQXYzfyp7ImA9WxNRE0U.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-1688885904469109665</id><published>2009-09-07T22:18:00.000-07:00</published><updated>2009-09-07T22:23:50.887-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-07T22:23:50.887-07:00</app:edited><title>Changes in Existing Web-Adi Letter Column/Data</title><content type="html">&lt;p&gt;Changes in Existing Web-Adi Letter Column/Data&lt;/p&gt;&lt;p&gt;====================================================================&lt;/p&gt;&lt;p&gt;1. Find the Integrator Name of the letter.Form Function name is same as Integrator Name.&lt;/p&gt;&lt;p&gt;2. Find the form function.&lt;/p&gt;&lt;p&gt;3.SELECT integrator_code, application_idFROM bne_integrators_vl vlWHERE user_name IN ('XX Request for further references', 'XX Sorry Interview did not work') ;Here you find the Integrator Code.&lt;/p&gt;&lt;p&gt;4. Use FNDLOAD command to download the Integartor as ================================================================&lt;/p&gt;&lt;p&gt;FNDLOAD apps/hp75400 0 Y DOWNLOAD $BNE_TOP/admin/import/bneint.lct XX_HR_2_INTG.ldt BNE_INTEGRATORS INTEGRATOR_ASN="PER" INTEGRATOR_CODE="HR_2_INTG"&lt;/p&gt;&lt;p&gt;=================================================================&lt;/p&gt;&lt;p&gt;The integrator will be downloaded to the current location from where the command issued as XX_HR_2_INTG.ldt for above example.Issue this command to the application server.&lt;/p&gt;&lt;p&gt;5.open XX_HR_2_INTG.ldt file with wordpad here you will find the Integrator Interface code name.&lt;/p&gt;&lt;p&gt;6.Now issue the following commandselect user_name from BNE_INTERFACES_VL where INTEGRATOR_CODE LIKE 'HR_2_INTG'&lt;/p&gt;&lt;p&gt;7.From above querry you will find the view name used for this letter generation.ie, user_name form above querry obtain is nothing but the database view name.&lt;/p&gt;&lt;p&gt;8.Now by opening this view you can modify the select statement used in creation of this view.&lt;/p&gt;&lt;p&gt;9.Recreate the view after changes are done.&lt;/p&gt;&lt;p&gt;10. Finish..now you can check the data by generating letter using web-adi.&lt;/p&gt;&lt;p&gt;=============================================================&lt;/p&gt;&lt;p&gt;Very Important Link for this : &lt;a href="http://oracle.anilpassi.com/fndload-for-oracle-web-adi.html"&gt;http://oracle.anilpassi.com/fndload-for-oracle-web-adi.html&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-1688885904469109665?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DTCJMKH_xOL6tZwM6itcMKGqyqw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DTCJMKH_xOL6tZwM6itcMKGqyqw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DTCJMKH_xOL6tZwM6itcMKGqyqw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DTCJMKH_xOL6tZwM6itcMKGqyqw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/hpvTwXiweSA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/1688885904469109665/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/09/changes-in-existing-web-adi-letter.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/1688885904469109665?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/1688885904469109665?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/hpvTwXiweSA/changes-in-existing-web-adi-letter.html" title="Changes in Existing Web-Adi Letter Column/Data" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/09/changes-in-existing-web-adi-letter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UAQ3g8eip7ImA9WxNaFUs.&quot;"><id>tag:blogger.com,1999:blog-5080051162035000406.post-864650883072891224</id><published>2009-04-20T04:56:00.000-07:00</published><updated>2009-11-29T23:14:02.672-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-29T23:14:02.672-08:00</app:edited><title>Customizing Self Service Applications using Personalizations</title><content type="html">&lt;span&gt;&lt;p&gt;Release 11.5.10 provides a feature called Personalize Page, which gives us the ability to customize the look and feel of the Self Service Applications.&lt;/p&gt;&lt;p&gt;&lt;img height="56" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image002.jpg" width="576" /&gt;&lt;/p&gt;&lt;p&gt;Setting the Profile option Personalize Self-Service Defn to "Yes", enables this feature. If it is set to "No", the Personalize Page link will not be seen prohibiting you from customizing the self-service page.&lt;/p&gt;&lt;p&gt;There are other profile options that need to be turned on depending on the personalizations required.&lt;br /&gt;FND: Personalization Region Link Enabled = Yes&lt;br /&gt;FND: Personalization WYSIWYG Enabled = Yes&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Personalizations allow you to make changes at various levels: &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Function: &lt;/strong&gt;One can define functions and can define granular level personalization based upon these functions.&lt;br /&gt;&lt;strong&gt;Site: &lt;/strong&gt;Personalizations that affect all users with access to the given application component.&lt;br /&gt;&lt;strong&gt;Operating Unit: &lt;/strong&gt;Personalizations that affect all users with access to the given operating unit.&lt;br /&gt;&lt;strong&gt;Responsibility: &lt;/strong&gt;Personalizations that affect all users with access to the given responsibility. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Some of the customizations that can be achieved using Personalization:&lt;/strong&gt;&lt;br /&gt;In all our examples we will be considering iExpense self –service Application.&lt;/p&gt;&lt;p&gt;1) To remove the Cash and Other Expenses Link from the Navigation train (Road Map) on  &lt;br /&gt;General Information Entry Page&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Navigate to the General Information Entry Page &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="300" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image004.jpg" width="672" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Click on "Personalize Page" on the right hand corner of the page (shown in the above screenshot).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;You will see the following page come up. Select the Complete View Radio button.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="414" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image006.jpg" width="648" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Scroll down to the "Location" Section &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="177" alt="Self_Service_Applications_Personalization_OA_FrameworkSelf_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image008.jpg" width="576" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Click the Pencil Icon next to "Link: Cash and Other Expenses" &lt;/li&gt;&lt;/ul&gt;&lt;ul type="disc"&gt;&lt;li&gt;Set the Personalization Property "Rendered" to "False" at the Responsibility Level  &lt;br clear="all"&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="384" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image011.jpg" width="660" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Click on Apply to save the changes.&lt;/li&gt;&lt;/ul&gt;&lt;ul type="disc"&gt;&lt;li&gt;On returning back to the Application, you will see that the Cash and Other Expenses link is hidden from the Navigation Train.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="254" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image013.jpg" width="660" /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Add the below Text to Cash and Other Expenses page: &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Cash, Mileage and other out of pocket expenses will not be processed for payment     &lt;br /&gt;in iExpenses after December 17th, 2008. Please use SAP system to enter such&lt;br /&gt;expenses.&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Navigate to the Cash and Other Expenses Page and click on "Personalize Page" on the right hand corner of the page. &lt;/li&gt;&lt;/ul&gt;&lt;ul type="disc"&gt;&lt;li&gt;You will see the following page come up. Select the Complete View Radio button.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="319" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image015.jpg" width="564" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Scroll down to the "Page Layout" Section and click on Create Item Icon next to it. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="90" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image017.jpg" width="575" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Enter the Following information:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Select the Item Style as "Formatted Text".&lt;br /&gt;Specify a name for this item in the field ID.&lt;br /&gt;Enter CSS Class as OraErrorNameText to display the text in Red Color.&lt;br /&gt;Text as Cash, Mileage and other out of pocket expenses will not be processed for payment in iExpenses after December 17th, 2008. Please use SAP system to enter such expenses&lt;br /&gt;&lt;img height="593" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image019.jpg" width="576" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Click Apply to save the changes. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Reorder an item: By default, the above text would be displayed at the bottom of the page. To bring it to the top, click Reorder icon next to "Page Layout"&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="85" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image021.jpg" width="576" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Select the Personalize Radio button under Responsibility section&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="480" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image023.jpg" width="624" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Move the item that has been created to the first position using the Arrow to the right &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="253" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image025.jpg" width="636" /&gt;&lt;br /&gt;&lt;img height="276" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image027.jpg" width="636" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Click Apply button to save the changes. &lt;/li&gt;&lt;/ul&gt;&lt;ul type="disc"&gt;&lt;li&gt;On returning to the application, you will see the text is displayed as seen below,&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="298" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image029.jpg" width="612" /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Hide the Receipt Based Expenses table to prevent the user from entering any expenses in this section. &lt;/li&gt;&lt;/ul&gt;&lt;ul type="disc"&gt;&lt;li&gt;Navigate to the Cash and Other Expenses Page and click on "Personalize "use this table to enter receipt-Based Expenses" under the Receipt-Based Expenses Header.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="283" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image031.jpg" width="636" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;You will see the following page come up. Select the Complete View Radio button. Click on the Pencil icon next to the "Table: Use this table to …" &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="360" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image033.jpg" width="575" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Set the Personalization Properties "Rendered" to False at the responsibility level.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="365" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image035.jpg" width="672" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Click on Apply to save the changes.&lt;/li&gt;&lt;li&gt;On returning to the application, you will see that the Receipt based Expenses table is hidden &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="313" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image037.jpg" width="624" /&gt;&lt;/p&gt;&lt;p&gt;Similarly anything could be hidden (Buttons, column etc) by setting its property "Rendered" to "False". &lt;/p&gt;&lt;ul&gt;&lt;li&gt;To Make the field "Expense Cost Center" Read only in the General Information Page: &lt;/li&gt;&lt;/ul&gt;&lt;ul type="disc"&gt;&lt;li&gt;Navigate to the General Information Entry Page&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="295" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image039.jpg" width="575" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Click on "Personalize Page" on the right hand corner of the page (shown in the above screenshot). &lt;/li&gt;&lt;/ul&gt;&lt;ul type="disc"&gt;&lt;li&gt;You will see the following page come up. Select the Complete View Radio button.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="408" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image041.jpg" width="648" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Scroll down to the Name "Message Text Input: Expense Cost Center" and click on the Pencil icon next to it. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="81" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image043.jpg" width="428" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Set the property "Read only" to True at the responsibility level. Click on apply to save the changes. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="51" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image045.jpg" width="684" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Upon returning to the application, you will see that the Expense cost Center filed has been made Read only making it non-updatable. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="251" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image047.jpg" width="575" /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;To change the Field Name Purpose to Expenses Justification in General Information Page.&lt;/li&gt;&lt;/ul&gt;&lt;ul type="disc"&gt;&lt;li&gt;Navigate to the General Information Entry Page &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="306" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image049.jpg" width="660" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Click on "Personalize Page" on the right hand corner of the page (shown in the above screenshot). &lt;/li&gt;&lt;/ul&gt;&lt;ul type="disc"&gt;&lt;li&gt;You will see the following page come up. Select the Complete View Radio button.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="396" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image051.jpg" width="648" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Scroll down to the Name "Message Text Input: Purpose" and click on the Pencil icon next to it. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="39" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image053.jpg" width="636" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Change the Property "Prompt" to "Expenses Justification" at responsibility level and click on Apply to save the changes. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="44" alt="Self_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image055.jpg" width="660" /&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Upon returning to the application, you will see that the field name is changed. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height="152" alt="Self_Service_Applications_Personalization_OA_FrameworkSelf_Service_Applications_Personalization_OA_Framework" src="http://www.erpschools.com/iexpenses/Personaliztion/Self_Service_Applications_Personalization_Oracle_Apps_OA_Framework_clip_image057.jpg" width="576" /&gt;&lt;/p&gt;&lt;p&gt;Similarly, the display name could be changed for buttons and other objects too.&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Georgia;font-size:85%;color:#0000ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Georgia;font-size:85%;color:#0000ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Georgia;font-size:85%;color:#0000ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Georgia;font-size:85%;color:#0000ff;"&gt; Thanks &amp;amp; Regards ,&lt;br /&gt; Kamlesh Nikhade&lt;br /&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5080051162035000406-864650883072891224?l=oracleappsexperience.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2jSS65aN4uOX0ZYWchGY5PjxizE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2jSS65aN4uOX0ZYWchGY5PjxizE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2jSS65aN4uOX0ZYWchGY5PjxizE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2jSS65aN4uOX0ZYWchGY5PjxizE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~4/jlsz6by_g_Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleappsexperience.blogspot.com/feeds/864650883072891224/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://oracleappsexperience.blogspot.com/2009/04/customizing-self-service-applications.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/864650883072891224?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5080051162035000406/posts/default/864650883072891224?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BecomeOracleAppsTechnicalByKamleshNikhade/~3/jlsz6by_g_Y/customizing-self-service-applications.html" title="Customizing Self Service Applications using Personalizations" /><author><name>Kamlesh Nikhade</name><uri>http://www.blogger.com/profile/04116299576655130586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_5CJfFGvefnI/TCT__BPY4fI/AAAAAAAAAMk/toRtEElBhQw/S220/SPM_A0064.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://oracleappsexperience.blogspot.com/2009/04/customizing-self-service-applications.html</feedburner:origLink></entry></feed>

