Monday, January 26, 2009

Helpful layer in oracle application

When developing with the Oracle eBusiness Suite, there are situations where Developers can use "hooks" in standard Applications code to insert or redirect to custom code. Oracle Applications provide some helpful layers of abstraction to make life easier for customization. Where possible it is nice for this to be done using a supported method. If a true blue customization is required, then its best to try to preserve the existing code so that any future upgrades are more likely to break your custom code by reverting to standard code, plus if you use a "hook" to independent code it is easier to maintain and upgrade the custom code. I regularly use a "copy and modify" approach to Apps Development where I use hooks to call the new code.
  • Concurrent Program Executable. Where an concurrent program is automatically submitted from a form or another concurrent process, e.g. "Print Pack Slip" in Oracle Shipping actions, as long as parameter requirements are the same, then a quick an easy method to code your own report is:
    1).Create a new executable registered under your custom application, e.g. XMODS_WSHRDPAK
    2).Query the called concurrent program and update the executable to your custom executable,e.g. Query WSHRDPAK and replace executable with XMODS_WSHRDPAK
  • Personalization - Forms and Framework (OAF) plus CUSTOM.pll. Forms PL/SQL Library. Personalization has provided functionality to cover a lot of the customizations traditionally coded to CUSTOM.pll, but both Personalization and CUSTOM.pll provide a number of hooks into the front end logic.
  • Database Triggers. Triggers on tables used carefully can provide hooks where all other methods don't dare to tread. Of course watch out for the exception and try to avoid putting triggers on fnd_concurrent_requests!
  • Menu. Provides a prominent method to call new Forms, while potentially hiding behind the same prompt, Reports, Discoverer Workbooks, external links/URLs, etc. Gives the ability to save in the "Favourites" list. If you need to customize a standard form, copy it and create a new menu entry where possible.
  • Unix Softlink. An alternative to the concurrent program executable hook.
    1). Backup an existing standard Oracle file.
    2). Remove the existing standard Oracle file.
    3). Replace with a softlink to a file under you custom application code "top" directory
  • Workflow. Workflow customizations are "allowed" and a method I use here is to take a standard function call in workflow, copy and modify the underlying package, then change the function call in workflow to the custom function. E.g. AP Remittance Advice workflow (APPEWF) has "Get Check Info" function calling AP_PAYMENT_EVENT_WF_PKG.get_check_info. Copy AP_PAYMENT_EVENT_WF_PKG to XMODS_AP_PAYMENT_EVENT_WF_PKG and change function in workflow function "Get Check Info"
  • Printer Driver. Whenever concurrent request file post processing is required, e.g. to FTP or email a file - printer drivers provide an excellent way to perform post processing. Create a new printer driver with the appropriate command. Remember to restart the concurrent manager to pickup updates to print drivers.
  • Business Events. Not a widely used mechanism, but provides supported hooks into key events such as Payment Confirmations (AP Payment event).

No comments: