Oracle E-Business Suite R12 Core Development and Extension Cookbook - Andy Penver - E-Book

Oracle E-Business Suite R12 Core Development and Extension Cookbook E-Book

Andy Penver

0,0
47,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Oracle's suite of applications is used by many major businesses and public sector organizations throughout the world. The book will show you how to build different types of extensions with different toolsets with Oracle E-Business Suite R12. It will take you from start to finish with fully working examples. This book will show you how to extend Oracle E-Business Suite Release 12. You will learn highly desirable skills on how to extend the application and develop your expertise. The book will provide detailed information about why things have to be done in certain ways, and will take you through the process of how to get started, what tools are needed, how to develop working examples, and how to deploy them within the application. Learn how to extend Oracle E-Business Suite (EBS) Release 12. There are detailed examples to work through, such as how various components are configured and how we can extend standard functionality. The book focuses on core development and extension and each chapter will introduce a topic before going through working examples from start to finish. There are plenty of detailed screen shots throughout each chapter giving clear instructions of what we are doing and why. Each recipe will develop a solution that will utilize core components to that topic. The Oracle E-Business Suite R12 Core Development and Extension Cookbook focuses on starting an extension right from the beginning, to deploying it within E-Business Suite. At the end of each chapter the reader will have a good understanding of what they need to do for each area to take away, and start using it in practice. Each chapter will detail how to build an extension in the supported manner and also comes with complete fully tested code, and scripts that can be downloaded.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 495

Veröffentlichungsjahr: 2012

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Oracle E-Business Suite R12 Core Development and Extension Cookbook
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why Subscribe?
Free Access for Packt account holders
Instant Updates on New Packt Books
Preface
Extending Oracle E-Business Suite
Understanding the EBS architecture
Before we start
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Creating Concurrent Programs
Introduction
Defining a concurrent program
Introducing concurrent programs
Types of concurrent programs
Executable file location
Output and log files
Register a custom application
How to do it...
How it works
Configure an executable
Getting ready
How to do it...
How it works...
Configure a concurrent program
How to do it...
How it works...
Making a concurrent program available to a user
Configure a menu
How to do it...
How it works...
There's more...
Viewing a menu structure
Create a new request group
How to do it...
How it works...
Create a new responsibility
How to do it...
How it works...
Assign the responsibility to a user
How to do it...
How it works...
Run the concurrent program
How to do it...
How it works...
View the request
How to do it...
How it works...
See also...
Adding a concurrent program parameter
Adding a parameter to the concurrent program
How to do it...
How it works...
Amend the XXHREEBS package to add the new parameter
Getting ready
How to do it...
How it works...
Amend the XXHREEBS package to change the completion status of the concurrent program
Getting ready
How to do it...
How it works...
Testing the concurrent program
How to do it...
How it works...
There's more...
Creating a value set
Create a value set
How to do it...
How it works...
There's more...
What happens to the data entered?
Create a new parameter for the concurrent program
How to do it...
How it works...
Modify the executable to accept the new parameter
How to do it...
How it works...
Run the concurrent program
How to do it...
How it works...
Creating dependent parameters
Create a dependent value set
How to do it...
How it works...
Create a new parameter for the concurrent program
How to do it...
How it works...
Modify the executable to accept the new parameter
How to do it...
How it works...
Run the concurrent program
How to do it...
How it works...
Adding messages to the concurrent program log file
Create a profile option to turn logging on or off
How to do it...
How it works...
There's more...
Set the profile option value
How to do it...
How it works...
Add a procedure to write to the log file
How to do it...
How it works...
Writing to the log file
How to do it...
How it works...
Run the concurrent program
How to do it...
How it works...
Viewing the log file
How to do it...
How it works...
Reporting to the concurrent program output file
Add a procedure to write to the output file
How to do it...
How it works...
Add a cursor to get some data
How to do it...
How it works...
Add code to fetch data and write to the output file
How to do it...
How it works...
Running the concurrent program
How to do it...
How it works...
View the concurrent program output file
How to do it...
How it works...
Scheduling a concurrent program
Add default values for any required parameters
Getting ready
How to do it...
How it works...
Schedule the concurrent program
How to do it...
How it works...
Creating multiple concurrent programs
Copy an existing concurrent program
How to do it...
How it works...
Add a concurrent program to a request set
How to do it...
How it works...
Creating request sets
Run request set wizard
How to do it...
How it works...
Add a request set to a request group
How to do it...
How it works...
Run the request set
How to do it...
How it works...
Installing the database objects
How to do it...
How it works...
Creating a HOST concurrent program
Creating a PL/SQL executable
How to do it...
How it works...
Configuring a concurrent program to call the PL/SQL executable
How to do it...
How it works...
Creating a HOST executable
How to do it...
How it works...
Configuring a concurrent program to call the HOST executable
How to do it...
How it works...
Adding concurrent programs to a request group
How to do it...
How it works...
Creating an OUT directory
How to do it...
How it works...
Creating a symbolic link
How to do it...
How it works...
Testing a host concurrent program
Getting started...
How to do it...
How it works...
2. Oracle Forms
Introduction
Using forms builder for E-Business Suite
Creating a custom schema
Installing the database objects
How to do it...
How it works...
Getting started with forms
Installing Oracle Developer Suite
How to do it...
How it works...
Creating the forms builder desktop shortcut
How to do it...
How it works...
Adding a TNS names entry
How to do it...
How it works...
Setting runtime parameters in the environment file
How to do it...
How it works...
FTP forms and libraries
Getting ready
Forms (FMB files)
Libraries (PLL files)
How to do it...
How it works...
Opening the TEMPLATE form
How to do it...
How it works...
Renaming the TEMPLATE form
How to do it...
How it works...
Creating a master block and container objects
Creating a block using the block wizard
How to do it...
How it works...
Setting the block properties
How to do it...
How it works...
Setting the item properties
How to do it...
How it works...
Setting the canvas properties
How to do it...
How it works...
Setting the window properties
How to do it...
How it works...
Setting the module properties
How to do it...
How it works...
Creating a dummy item
How to do it...
How it works...
Removing unwanted objects
How to do it...
How it works...
Renaming prompts
How to do it...
How it works...
Resizing the viewport
How to do it...
How it works...
Modifying the template code
Modifying the PRE-FORM trigger
How to do it...
How it works...
Modifying the WHEN-NEW-FORM-INSTANCE trigger
How to do it...
How it works...
Modifying the APP_CUSTOM procedure
How to do it...
How it works...
Adding a detail block to a form
Creating a lookup
How to do it...
How it works...
Creating a detail block
How to do it...
How it works...
Setting the block properties
How to do it...
How it works...
Setting the item properties
How to do it...
How it works...
Creating a relationship between the master and detail blocks
How to do it...
How it works...
Adding a record indicator to the block
How to do it...
How it works...
Adding insert, update, and delete events
Creating a program unit package specification
How to do it...
How it works...
Creating a program unit package body
How to do it...
How it works...
Creating ON-INSERT, ON-UPDATE, ON-DELETE, and ON-LOCK triggers
How to do it...
How it works...
Creating PRE-INSERT and PRE-UPDATE triggers to set the WHO columns
How to do it...
How it works...
Deploying forms
Registering a form
How to do it...
How it works...
Creating a function that calls a form
How to do it...
How it works...
Adding a form to a menu
How to do it...
How it works...
FTP the form to the application tier
How to do it...
How it works...
Compiling a form
How to do it...
How it works...
Testing a form
How to do it...
How it works...
Adding buttons, list, and checkbox items
Adding OK and Cancel buttons
How to do it...
How it works...
Modifying the layout
How to do it...
How it works...
Adding triggers to the buttons
How to do it...
How it works...
Creating an LOV for the society name field
How to do it...
How it works...
Configuring the date fields
How to do it...
How it works...
Creating a list item
How to do it...
How it works...
Creating a checkbox item
How to do it...
How it works...
Testing the form
How to do it...
How it works...
Adding a query screen to a form
Adding code to the WHEN-NEW-FORMS-INSTANCE trigger
How to do it...
How it works...
Copying the QUERY_FIND object group
How to do it...
How it works...
Setting the block, canvas, and window properties
How to do it...
How it works...
Editing the button triggers on the QUERY_FIND block
How to do it...
How it works...
Creating items in the query block
How to do it...
How it works...
Resizing the objects on the canvas
How to do it...
How it works...
Creating a PRE-QUERY trigger
How to do it...
How it works...
Creating a QUERY_FIND trigger
How to do it...
How it works...
Passing parameters to a form
Creating a parameter
How to do it...
How it works...
Bypassing the query find screen
How to do it...
How it works...
Testing the form
How to do it...
How it works...
Testing the form with the PERSON_ID parameter passed in
How to do it...
How it works...
3. Advanced Oracle Forms
Introduction
Installing the database objects
How to do it...
How it works...
Using messages from the message dictionary
Creating a message directory
How to do it...
How it works...
Creating a message
How to do it...
How it works...
Creating a message file
How to do it...
How it works...
Coding logic to display messages
How to do it...
How it works...
Compiling the form
How to do it...
How it works...
Testing the form
How to do it...
How it works...
Creating tabs within a form
Creating a tabbed region
How to do it...
How it works...
Resizing objects on a canvas
How to do it...
How it works...
Creating a new block
How to do it...
How it works...
Setting block properties
How to do it...
How it works...
Setting item properties
How to do it...
How it works...
Creating a relationship between the master and detail blocks
How to do it...
How it works...
Adding a record indicator to a block
How to do it...
How it works...
Sizing and positioning items on a tabbed canvas
How to do it...
How it works...
Aligning a tabbed canvas on a content canvas
How to do it...
How it works...
Adding a form level trigger to show a tabbed canvas
How to do it...
How it works...
Adding code to manage a tabbed canvas
How to do it...
How it works...
Creating program units
Creating a new package to handle database transactions
How to do it...
How it works...
Adding triggers to capture transactional events on a block
How to do it...
How it works...
Creating triggers to set the WHO columns
How to do it...
How it works...
Adding lookups, date fields, and lists
Creating a lookup
How to do it...
How it works...
Creating a new LOV based upon a record group
How to do it...
How it works...
Configuring date fields
How to do it...
How it works...
Creating a list item
How to do it...
How it works...
Controlling menu items
Copying the standard menu from the application server and opening it in forms
How to do it...
How it works...
Disabling an existing menu item
How to do it...
How it works...
Adding a new menu item
How to do it...
How it works...
Adding a trigger to capture new menu item events
How to do it...
How it works...
There's more...
Compiling the form
How to do it...
How it works...
Creating pop-up menu items
Adding items to a pop-up menu
How to do it...
How it works...
Compiling the form
How to do it...
How it works...
Adding a trigger to capture pop-up events
How to do it...
How it works...
Adding flexfields to forms
Adding flexfield items to a table
How to do it...
How it works...
Registering a table within EBS
How to do it...
How it works...
Viewing the table registration in EBS
How to do it...
How it works...
Registering a Descriptive Flexfield
How to do it...
How it works...
Enabling a flexfield value
How to do it...
How it works...
Adding a flexfield item to a form
How to do it...
How it works...
Creating triggers for flexfield events
Adding a WHEN-NEW-FORM-INSTANCE event
How to do it...
How it works...
Adding a WHEN-NEW-ITEM-INSTANCE event
How to do it...
How it works...
Testing the form
How to do it...
How it works...
Adding a zoom using the CUSTOM library
Finding the short name of the form we want to zoom from
How to do it...
How it works...
Finding the name of a block
How to do it...
How it works...
Enabling a zoom
How to do it...
How it works...
Creating an object-specific library
How to do it...
How it works...
Attaching a library to the CUSTOM library
How to do it...
How it works...
Coding an event in the CUSTOM library
How to do it...
How it works...
Compiling libraries on the application server
How to do it...
How it works...
Adding a function to a menu
How to do it...
How it works...
Testing the zoom
How to do it...
How it works...
Adding a spreadtable to a form
Adding the CRM Administrator responsibility
How to do it...
How it works...
Configuring a spreadtable
How to do it...
How it works...
Adding a tab page
How to do it...
How it works...
Adding the JTF_GRID object group
How to do it...
How it works...
Adding a block
How to do it...
How it works...
Adding an item
How to do it...
How it works...
Adding a library
How to do it...
How it works...
Adding code to manage the grid
How to do it...
How it works...
Adding code to populate the grid
How to do it...
How it works...
Testing the form
How to do it...
How it works...
Capturing events for a spreadtable
Configuring a hyperlink on a spreadtable
How to do it...
How it works...
Adding triggers to capture events for a grid
How to do it...
How it works...
Adding a custom trigger to capture an event
How to do it...
How it works...
Adding code to manage events from a grid
How to do it...
How it works...
Testing the form
How to do it...
How it works...
4. Forms Personalization
Introduction
Opening the personalization screen
Getting started
How it works...
The Personalization screen
Definition
Condition tab
Context region
Actions tab
Property
Message
Builtin
Menu
How it works...
Installing the database objects
How to do it...
How it works...
Changing properties
Changing prompts
How to do it...
How it works...
Disabling buttons
How to do it...
How it works...
Renaming tabs
How to do it...
How it works...
Hiding fields
How to do it...
How it works...
Moving fields
How to do it...
How it works...
Testing the form after applying personalization
How to do it...
How it works...
Fixing personalization that doesn't seem to work
How to do it...
How it works...
Adding a menu item to a form
Adding a menu item
How to do it...
How it works...
Testing whether the menu item has been added
How to do it...
How it works...
Performing a simple validation and displaying a message
Adding validation when an event is triggered
How to do it...
How it works...
Adding a message
How to do it...
How it works...
Testing the form
How to do it...
How it works...
Launching a form
Adding a condition
How to do it...
How it works...
Adding a builtin to launch a form
How to do it...
How it works...
Testing the form is launched
Getting started
How to do it...
How it works...
Adding a toolbar icon to a form
Adding an icon to the toolbar
How to do it...
How it works...
Testing to see if the toolbar icon is displayed
How to do it...
How it works...
Performing complex validation
Creating a lookup
How to do it...
How it works...
Calling a database function in a condition statement
Getting ready
How to do it...
How it works...
Adding a warning message
How to do it...
How it works...
Testing the validation
How to do it...
How it works...
Stop any further processing
How to do it...
How it works...
Checking a database value against a form value
How to do it...
How it works...
There's more...
Altering an LOV's record group
Creating a new record group
How to do it...
How it works...
There's more...
Assigning a new record group to an LOV
How to do it...
How it works...
Testing a radio group has changed
How to do it...
How it works...
5. Workflow
Introduction
Introducing Workflow Builder
How to do it...
How it works...
There's more...
See also
Installing the database objects
How to do it...
How it works...
Creating an advanced queue
Getting started
How to do it...
How it works...
Building a workflow
Creating a new workflow
Getting ready
How to do it...
How it works...
Creating a new item type
How to do it...
How it works...
Creating a new process
How to do it...
How it works...
Creating a start function
How to do it...
How it works...
Creating an end function
How to do it...
How it works...
Creating attributes to store the event details
How to do it...
How it works...
Assigning the start event details
How to do it...
How it works...
Saving a workflow to the database
How to do it...
How it works...
Creating a business event
Setting up the workflow administrator responsibility
How to do it...
How it works...
Creating an agent
How to do it...
How it works...
Creating an agent listener
How to do it...
How it works...
Defining a business event
How to do it...
How it works...
Subscribing to a business event
How to do it...
How it works...
Viewing a workflow status and monitoring progress
Adding a message to an advanced queue
How to do it...
How it works...
Viewing a workflow in status monitor
How to do it...
How it works...
Viewing the workflow status diagram
How to do it...
How it works...
Viewing workflow attributes and event messages
How to do it...
How it works...
Adding a function
Updating an employee record for testing
How to do it...
How it works...
Adding attributes
How to do it...
How it works...
Adding a function
How to do it...
How it works...
There's more...
Testing the workflow
How to do it...
How it works...
Creating a lookup
Creating a Success/Fail lookup
How to do it...
How it works...
See also
Adding an error message attribute
How to do it...
How it works...
Creating a subprocess
Creating a subprocess
How to do it...
How it works...
Adding a validate employee function
How to do it...
How it works...
Adding a validate absence type function
How to do it...
How it works...
Adding a validate absence dates function
How to do it...
How it works...
Creating end functions
How to do it...
How it works...
Joining the functions
How to do it...
How it works...
Adding a subprocess to a parent process
How to do it...
How it works...
Testing the workflow
How to do it...
How it works...
There's more...
Creating messages
Creating an absence approval message
How to do it...
How it works...
Adding attributes to our approval message
How to do it...
How it works...
Creating a rejection message
How to do it...
How it works...
Adding attributes to our rejection message
How to do it...
How it works...
Creating an invalid XML message
How to do it...
How it works...
Adding invalid XML message attributes
How to do it...
How it works...
Sending notifications and processing responses
Creating an absence approval notification
How to do it...
How it works...
Creating an absence rejection notification
How to do it...
How it works...
Creating invalid XML notification
How to do it...
How it works...
Adding notifications to the process diagram
How to do it...
How it works...
Mapping the notifications
How to do it...
How it works...
Testing the workflow
How to do it...
How it works...
Viewing the notifications and workflow diagrams
How to do it...
How it works...
Calling an API
Creating a function to call the database package
How to do it...
How it works...
Adding a function to a process
How to do it...
How it works...
Testing the workflow
How to do it...
How it works...
6. Utilities
Introduction
Setting the environment variables
Setting the environment on the application server
How to do it...
How it works...
Setting the environment on the database server
How to do it...
How it works...
Starting and stopping an environment
Starting an environment
How to do it...
How it works...
Stopping an environment
How to do it...
How it works...
Creating a custom schema
Making a new environment parameter
How to do it...
Running AutoConfig (adautocfg.sh)
How to do it...
How it works...
There's more...
Creating a CUSTOM schema directory structure
How to do it...
How it works...
Creating a new tablespace
How to do it...
How it works...
Creating a database user
How to do it...
How it works...
Registering an Oracle schema
How to do it...
How it works...
Registering an Oracle user
How to do it...
How it works...
There's more...
Extracting data using FNDLOAD
Extracting a lookup using FNDLOAD
How to do it...
How it works...
Extracting a Descriptive Flexfield using FNDLOAD
How to do it...
How it works...
Extracting a concurrent program using FNDLOAD
How to do it...
How it works...
Extracting a request set using FNDLOAD
How to do it...
How it works...
Extracting a profile option using FNDLOAD
How to do it...
How it works...
Extracting a form and function using FNDLOAD
How to do it...
How it works...
There's more...
Extracting a menu using FNDLOAD
How to do it...
How it works...
Extracting a request group using FNDLOAD
How to do it...
How it works...
Extracting a responsibility using FNDLOAD
How to do it...
How it works...
Extracting a personalization using FNDLOAD
How to do it...
How it works...
Extracting a message using FNDLOAD
How to do it...
How it works...
Downloading multiple objects
How to do it...
How it works...
Uploading using FNDLOAD
Uploading a lookup using FNDLOAD
How to do it...
How it works...
Uploading a Descriptive Flexfield using FNDLOAD
How to do it...
How it works...
Uploading a concurrent program using FNDLOAD
How to do it...
How it works...
Uploading a request set using FNDLOAD
How to do it...
How it works...
Uploading a profile option using FNDLOAD
How to do it...
How it works...
Uploading a form and function using FNDLOAD
How to do it...
How it works...
Uploading a menu using FNDLOAD
How to do it...
How it works...
Uploading a request group using FNDLOAD
How to do it...
How it works...
Uploading a responsibility using FNDLOAD
How to do it...
How it works...
Uploading a personalization using FNDLOAD
How to do it...
How it works...
Uploading a message using FNDLOAD
How to do it...
How it works...
Modifying the LDT file
How to do it...
How it works...
Using a script for FNDLOAD
How to do it...
How it works...
Using a script for migrating objects
How to do it...
How it works...
Index

Oracle E-Business Suite R12 Core Development and Extension Cookbook

Oracle E-Business Suite R12 Core Development and Extension Cookbook

Copyright © 2012 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: May 2012

Production Reference: 1030512

Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK.

ISBN 978-1-84968-484-2

www.packtpub.com

Cover Image by David Gimenez (<[email protected]> )

Credits

Author

Andy Penver

Reviewers

Mariana Angelova

Reuben Filius

Acquisition Editor

Dilip Venkatesh

Lead Technical Editor

Dayan Hyames

Technical Editors

Manali Mehta

Ankita Shashi

Manmeet Singh Vasir

Copy Editors

Leonard D’Silva

Laxmi Subramanian

Project Coordinators

Kushal Bhardwaj

Theresa Chettiar

Proofreader

Aaron Nash

Indexer

Tejal Daruwale

Graphics

Valentina D'silva

Production Coordinator

Aparna Bhagat

Cover Work

Aparna Bhagat

About the Author

Andy Penver currently lives and works in the UK and has studied at Christ Church (University of Kent). He works as an Oracle E-Business Suite consultant and has over 16 years of experience. He has worked in both the private and public sectors and has a strong technical background. He has led various teams using a hands-on approach through full project lifecycles on some very large projects throughout the UK and Europe. Andy has been involved in two large scale, award-winning implementations. Andy has worked largely as an independent consultant and is Managing Director of his own business, NU-TEKK limited. For the past six years Andy has been heavily involved in a large scale government project rolled out UK-wide. Andy is also currently authoring a second book relating to Oracle E-Business Suite. The second book will relate to other areas of E-Business Suite not covered in this book. It will have chapters focusing on OA Framework personalization and extension, integration of EBS with Oracle 11g middleware (SOA and BEPL), and BI Publisher.

I would like to thank my parents, my wife Buaphan and three children, Sangrung, James, and Jack for their support. I would also like to thank my colleagues for their help in reviewing and commenting on the material in the book. I would also like to thank my fellow colleagues, and in particular, Brian Badenhorst, Phill Davey, Andy Collins, and Dermot Moloney who have all helped me in some way to produce this book.

About the Reviewers

Mariana Angelova is an Oracle certified professional with more than 15 years' experience as an Oracle Applications DBA and Oracle DBA, beginning on Oracle RDBMS rel. 5. She has gained thorough knowledge and rich experience supporting Oracle RDBMS (rel. 11g/10g/9i/8i/8/7/5) on a wide range of platforms: AIX, HP UX, Sun Solaris, Linux, Digital VMS, Windows, and also Oracle Applications environments (R11.5.10/11.5.9/11.5.8/11.5.3) including installation, implementations, upgrades, and system assessments.

Reuben Filius has worked in the IT industry since 1995. He has worked as a technical manager, technical team lead, analyst, auditor, and technical consultant/developer on a large number of (international) E-Business Suite projects. Reuben has experience in various market segments and can use business knowledge together with technical knowledge to enable him to build a much needed bridge between technology and business users and be a liaison for customer senior management levels.

Reuben has worked for Oracle Netherlands for nine years and six years in other consulting organizations specialized in Oracle E-Business Suite. In early 2011 Reuben started Distinct Consulting, a company that focuses on bringing more added value and more focus on business processes for customers using E-Business Suite, having the technology be a vehicle to support the business rather than it becoming the main focus.

Reuben has developed training materials for Oracle in the past and has been a trainer for these at Oracle University.

www.PacktPub.com

Support files, eBooks, discount offers, and more

You might want to visit www.PacktPub.com for support files and downloads related to your book.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

http://PacktLib.PacktPub.com

Do you need instant solutions to your IT questions? PacktLib is Packt’s online digital book library. Here, you can access, read and search across Packt’s entire library of books.

Why Subscribe?

Fully searchable across every book published by PacktCopy and paste, print and bookmark contentOn demand and accessible via web browser

Free Access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.

Instant Updates on New Packt Books

Get notified! Find out when new books are published by following @PacktEnterprise on Twitter, or the Packt Enterprise Facebook page.

Preface

Extending Oracle E-Business Suite

This book is about extending Oracle E-Business Suite (EBS). Throughout the book there are detailed examples to work through with tips and explanations about how various components are configured and how we can extend standard functionality. The book is aimed at developers who are new to E-Business Suite or those who are strong in one particular area and need to expand their knowledge in other areas. Experienced developers may also use the book to brush up on their skills or to pick up tips that may help them.

The book focuses on core development and extension and each chapter will go through a topic from start to finish. There are plenty of detailed screenshots throughout each chapter giving clear instructions. This helps to provide a clear and full understanding of what we are doing and why. Each topic will develop a solution to a scenario that will focus on starting an extension right from the beginning to deploying it within E-Business Suite. By the end of each chapter, the reader will have a good understanding of what they need to do for each topic to be able to take away the knowledge gained and start using it in practice. Each chapter will explain in detail how to build an extension in a supported manner. The book also comes with complete, fully tested code and scripts that can be downloaded. The examples have been developed using a Vision instance of Oracle E-Business Suite Release 12 (12.1.1). It would be helpful to know some SQL and PL/SQL but it is not essential as the code is already written and fully documented. We will be going through each chapter example step by step so you will not be expected to write any code that is not detailed in the book.

If you are new to Oracle EBS or a consultant who has worked with Oracle E-Business Suite before, you will be aware that there are many technical components to consider; there are many features using a wide range of tools and the footprint seems to be expanding all the time. One of the key features of EBS is its flexibility. Not all organizations are the same and there are many ways you can configure EBS to make it specific to an organization's needs. Whenever possible, an organization should always attempt to use standard functionality to meet their EBS requirements.

However, there are occasions where business requirements cannot be met using the standard Oracle-provided functionality and this can be anything from renaming a label on a screen to automating a process that would take many hours for someone to process manually.

There are various ways in which you can change behavior in Oracle EBS. The simplest way to change the behavior is through configuration. For example, extending Oracle through profile options, values sets, and Descriptive Flexfields are ways to extend apps through configuration. In addition, Oracle also provides a screen that allows us to extend Oracle core forms. This screen is known as the personalization screen and is a powerful feature that allows us to change the behavior without needing to change any standard objects. These are mechanisms provided by Oracle to change how the application looks or how the application behaves. On the other hand, there are extensions that require writing code, creating new objects, or even extending or replacing existing objects. These type of extensions are in addition to the code or objects that Oracle delivers.

A powerful feature of Oracle is the ability to extend EBS but when doing this, there is a strict set of development standards that must be adhered to. There are two primary ways that Oracle EBS can be modified; the first is customization by extension, as we have just described, and the second is customization by modification. Customization by modification is where standard objects are changed, meaning that the change needs to be re-applied when a newer version of the object is released by Oracle.

Customizations by modification are not supported by Oracle and should be avoided at all costs. There are very few occasions where there is a real business justification for an intrusive customization. There are often alternatives such as exploring other solutions or looking at ways to change the requirements or processes. It is important to understand the difference between customization by extension and customization by modification as the two terms are often used incorrectly. When we extend Oracle EBS by supported methods, the standard functionality is still supported by Oracle as it has not been amended by the extension whereas customization by modifying a standard object means the standard object also becomes unsupported by them.

A worthwhile feature of Oracle EBS is that it uses a common toolset and also has a vast amount of documentation written about the supported ways in which you can extend the product. The first place to start would be the Oracle Release 12 documentation library. This provides many documents, all relating to Oracle EBS. This is available from Oracle's website and you should pay particular attention to the concepts, user, developer and user interface guides. Another great resource is Oracle Support, which is a portal provided by Oracle for support, documentation, white papers, and patches among many other things related to EBS. To access the portal, you need to register and also provide a support identifier which is only provided when there is a support contract with Oracle Support. So, if you are new to EBS or if have been around a while, you can nearly always find examples or documentation relating to your specific requirements.

There are nearly always numerous business processes and solutions available to satisfy them. The best way to provide a solution is to have an understanding of what methods are available. Having knowledge of the various ways in which we can extend EBS will give us a much better chance of coming up with better solutions. This book will provide recipes which will cover some simple and some more complex solutions. It will utilize a majority of the Oracle toolset and will hopefully broaden your knowledge. Expanding our knowledge of the toolset will allow us to provide a more varied set of solutions, resulting in having a better chance of providing a better, more robust solution for a given problem.

Understanding the EBS architecture

Before we really get into the book, it is important to understand the E-Business Suite architecture in Release 12. We need to understand where files are kept and how it is installed. If you are a beginner, you will need this information to understand some key concepts and pick up some terminology that is often used when we discuss Oracle EBS.

In release 12, there has been a significant change in the filesystem when it is installed. The change quite simply is used to segregate code, data, and configuration. This makes maintenance much easier. There will be a number of terms that you will encounter regularly when we discuss EBS. A server is a term for a number of processes that provide specific functionality on a single machine. A tier is a term used to describe a logical group of services which can be on one or more physical machine. A machine is used to describe a computer or a group of computers. A node is a group of computers that work closely together as a cluster.

Essentially, there are three tiers per instance of EBS. The database tier (DB Tier), the application tier (APPS Tier), and the desktop tier. The desktop tier is the client interface where users will connect to Oracle EBS through a web browser. When Oracle is first used, the browser will install a J2SE plugin, which will use Oracle's own Java Virtual Machine (JVM) rather than the browsers own JVM. The application tier (also known as the middle tier) processes all of the business logic. It comprises three servers or service groups. These are web services which process requests from the desktop client. Then there are the forms services, which manage all of the listening and secure requests for Oracle forms. Then there is the concurrent processing server, which processes concurrent requests that are submitted.

When Oracle EBS is installed on all variants of Unix, the install is performed by the root user. However, as part of the installation process, there will be two OS users. One will own the application node filesystem (the applmgr user) and the other will own the database node filesystem (the Oracle user). When installed on Windows, there is one OS user that owns the filesystem. The following diagram shows the basic architecture:

The directory structure of the Applications Tier and Database Tier will help to understand where files are stored. The following directory structure should help you understand where various files are stored within EBS:

The following table shows the directory structures of some core directories on the applications tier and the database tier:

Apps Tier

  

Profile

Directory

Description

APPL_TOP

/apps_st/appl

This directory is the base directory where all of the product tops are stored.

AU_TOP/forms/US

/apps_st/appls/au/12.0.0/forms/US

This directory is where all forms binaries are stored.

AU_TOP/resource

/apps_st/appls/au/12.0.0/resource

This directory is where all libraries are stored.

COMMON_TOP

/apps/apps_st/comn

This is the base directory for scripts, log files, output files, and HTML files.

ORACLE_HOME

/apps_st/10.1.2

This is the directory structure for the forms server files.

iAS_ORACLE_HOME

/apps_st/10.1.3

This is the directory structure for the web server files.

INSTANCE_TOP

/inst/apps/<CONTEXT_NAME>

This is the top directory for the configuration files.

ADMIN_SCRIPTS_HOME

/inst/apps/<CONTEXT>/admin/scripts

This is where admin scripts are stored to start and stop services.

DB Tier

  

Profile

Directory

Description

ORACLE_HOME

/db/tech_st/10.2.0

This directory is the base directory where all of the database files are stored.

Data Files

/db/apps_st/data

This directory is the base directory where all of the data files are stored.

Within EBS, each product has its own database user within Oracle. The user will own the objects that store data, such as tables and so on. This is in the form of an abbreviation of the product (AP for Account Payables and HR for Human Resources, for example) and is referred to as a schema. The passwords are by default the same as the schema name but this is nearly always changed after install. On the filesystem on the APPS tier, each product has its own filesystem. The filesystem has the same root directory as the product username in Oracle. For example, there will be a directory structure for Payables (AP) that has a root directory of AP. There is one very important schema called the APPS schema. The APPS schema owns all of the code such as packages, triggers, views, and Java classes. Each product user has grants providing access to the APPS schema for all of its objects. Therefore, the APPS schema has access to all of the objects. That is, the code and the objects owned by the product schemas. It is important that, as a developer, you can access the APPS database schema. All objects that you will require access to are accessible from this schema. When we create custom objects, we need to create a custom schema and all of the data storing objects will reside in this schema. The custom schema will need to be prefixed with XX so that other developers know it's a custom schema. Usually, an onsite DBA will perform this task but we will go through this in one of the recipes we have in the final chapter.

If you would like to understand more relating to the core concepts of EBS, then you can get detailed information from the Oracle Applications Concepts Release 12 from the Release 12 Documentation Library. You can get the documentation from Oracle by following this link: http://docs.oracle.com/cd/B53825_08/current/html/docset.html.

Before we start

One final word before we get into the recipes. Hopefully, you will find the book extremely useful. There are thousands of pages written about how to extend and customize Oracle E-Business Suite. This book is not going to cover a solution to every problem. In fact, it will not even come close. The recipes are designed to take us through the different features of the tools and extensions that you may need to utilize in your own solutions. Use the book to get a feel for how each tool and product can be used. It will provide a core understanding of how things can be done and the standards that we need to adhere to. You will need to expand on what you learn here and apply the knowledge you gain to design a solution or solutions to your own scenarios. I personally am a great believer of learning through practice. Expanding your knowledge through understanding the fundamentals is essential to providing the best solutions. Oracle uses many tools and technologies in its suite of applications, of which there are too many to cover in this book alone. However, I am working on a second book which will focus on Integration, OA Framework, and BI Publisher.

What this book covers

Chapter 1, Creating Concurrent Programs, looks at some recipes relating to concurrent programs. Essentially, a concurrent program is used to launch a program. The program could be a PL/SQL package, a report, a host script, or a Java program, for example. The chapter will detail the full list of programs that can be launched. The recipes will focus on creating concurrent programs and defining parameters. They will also show how we can run, schedule, and output data throughout a concurrent program lifecycle. At the end of this chapter, we will have built a concurrent program that runs a PL/SQL program and a host script that sends an e-mail. We will have passed parameters to our executable and written to both output files and log files. We will also schedule the concurrent program and create a request set that allows us to run multiple programs together.

Chapter 2, Oracle Forms, will include developing an Oracle form. Forms have been used in Oracle Applications right from the original release. It started out with forms 2.0, which was character based. Then came forms 4.5 and with it a richer user interface that included widgets such as buttons and toolbars. It is now up to version 10 in Release 12. At the end of the chapter, readers will have developed a form and deployed it within EBS. The form will be built using Oracle Developer 10g and will use the template form that Oracle provides for developers to use. We will go through the changes we need to make to the template form, and develop a form that we can implement for our scenario. The form will have a master-detail relationship. The objects we create will use Oracle's property classes to look and feel like all other professional forms. We will look at the built-in functions that Oracle provides and why we use them instead of the standard forms developer built-in functions. We will also add a number of triggers to the form which will perform actions such as setting the standard WHO fields, inserting update, and deleting records. We will deploy the form in Oracle EBS showing how we transfer and compile the form and how we configure the form and function definitions in EBS.

Chapter 3, Advanced Oracle Forms, looks at implementing more advanced Oracle EBS features such as a query entry screen, messages, tabs, and Descriptive Flexfields. The form will also have a number of widgets such as the standard date lookup and we will also create our own lookup using a query from a record group. We will also show how we can set up a zoom to the form from a standard form. We will also show how we can pass parameters to our form that will allow us to automatically query data upon opening it. As we develop the form we will deploy and test each of the features we add and at the end of the chapters on forms we will have a completed form deployed within the application. The form will have implemented many of the features we would normally require in our custom forms.

Chapter 4, Forms Personalization, discusses configuring forms personalization. Traditionally, changes made to Oracle EBS professional forms were made using the custom library, which requires technical knowledge. However, since version 11.5.10, Oracle has introduced forms personalization as a way of immediately changing the behavior of Oracle standard forms through configuration. Personalization are protected and are generally supported when patches are applied. As they change the behavior of a standard form it is important to re-test any personalization after any patches are applied. This is a must if the patch has introduced new versions of any forms you have personalized. We will demonstrate that to implement personalization you do not have to be technical but a basic understanding of Oracle Forms will help. You can perform some complex functionality through personalization as well but you would need to have a more technical background for this.

At the end of the personalization chapter we will have been through several examples. We will change properties that rename item labels, move items around, disable fields, and rename tab labels. We will also perform some more advanced tasks than just changing properties. We will add a new menu item to launch a form and we will perform validation by calling a database package. We will display user messages to make the user interface functionality more specific to business terminology and processes. We will use personalization to perform activities we used to do in the custom library.

Chapter 5, Workflow, looks at developing and deploying and Oracle workflow within EBS. Oracle Workflow is heavily integrated with Oracle EBS to automate and integrate business processes. Oracle supports workflow extensions as long as they are done in a supported manner. The tool that is used is Oracle Workflow Builder, which is a GUI interface that allows us to drag and drop objects to build or modify processes. At the end of this chapter, users will have a good understanding of how to create a new workflow and deploy it in EBS. We will create functions that call database packages and look at some of the PL/SQL functions used when developing workflows. We will examine the statuses returned back to the workflow from our code and perform activities based upon the responses. We will also create our own lookups and show how they are used within the code and how they are mapped in a process diagram. We will learn a little about advanced queues and how we can create our own queues and trigger events that we can subscribe to. We will build sub processes and add activities such as sending notifications that require responses. We will have created several attributes and store information in the attributes. We will also show how we can monitor and test workflow processes in EBS. Once we have completed the workflow we will examine the role of the workflow background engine and how we deploy our workflow.

Chapter 6, Utilities, looks at a number of utilities that you will find extremely useful when moving extensions from one environment to another. We will show how to create a custom schema and how to configure it on EBS. We will also look at ways to use common utilities, which will reduce risk and save enormous amounts of time. Usually the biggest reason for problems when migrating extensions or configuration is when there are human tasks. We will also look at how to start and stop an environment. There are a number of utilities Oracle provides to make life easier for us. These are used to upload, extract, and bulk load data among other things. It is important to remember that Oracle has spent years developing its applications and there are a great many reusable objects and it is important to use them wherever possible.

What you need for this book

Oracle uses a great many tools to develop extensions. The tools we will mostly focus on in this book are as follows:

Access to an EBS R12 environmentOracle Forms DeveloperSQL DeveloperOracle Workflow Builder

Other utility programs we will be using are:

WinSCPPuttyText Editor

There are a number of languages used for programming and writing scripts that Oracle supports. We are going to primarily focus on the following in this book:

PL/SQLSQLUnix shell scripting

Other languages such as Java, Pro*C, and Pro*COBOL are also used within EBS but fall outside the scope of this book.

Who this book is for

This book is written for individuals who want to learn how to develop extensions in Oracle E-Business Suite. If you are involved in development or supporting an E-Business Suite implementation, you should find this book very useful. The book gives detail explanations, so minimal technical expertise is required. It is suitable for beginners who have little experience or developers who may want to use the book to brush up on their skills.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book — what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

To send us general feedback, simply send an e-mail to <[email protected]>, and mention the book title through the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the example code

You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/support, selecting your book, clicking on the errata submission form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website, or added to any list of existing errata, under the Errata section of that title.

Piracy

Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors, and our ability to bring you valuable content.

Questions

You can contact us at <[email protected]> if you are having a problem with any aspect of the book, and we will do our best to address it.

Chapter 1. Creating Concurrent Programs

In this chapter, we will cover the following:

Defining a concurrent programMaking a concurrent program available to a userAdding a concurrent program parameterCreating a value setCreating dependent parametersAdding messages to the concurrent program log fileReporting to the concurrent program output fileScheduling the concurrent programCreating multiple concurrent programsCreating request setsInstalling the database objectsCreating a HOST concurrent program

Introduction

Concurrent programs are commonly used within Oracle E-Business Suite as a mechanism to run an executable. Concurrent programs allow users to pass parameters to the executable, which enables it to behave in different ways. We are going to go through some recipes configuring and running concurrent programs. We are also going to show how you can view and write to log files and output files to record what is happening whilst the program is running. Before we get into that, there is a bit of important background knowledge that needs to be highlighted.

Firstly, in release 12, there are additional options when defining a concurrent program to integrate with business events. You can now raise an event at various points throughout the concurrent program lifecycle. This is an extremely useful feature for extending e-Business Suite. For example, developers can subscribe to events and from the event we can launch workflows, send messages to an advanced queue, or launch PL/SQL procedures.

There are some basic concepts that need to be explained before we get into creating concurrent programs and such like. In Oracle EBS, there are users defined on the system and that's how we gain access to the application. There are some pre-configured users such as sysadmin and we can also create our own users each time we want to provide access to someone else on the system. Users are assigned one or more responsibilities and these determine the access we have to the system in terms of the forms we can go into, the programs we can run, and the data we can see. A responsibility will have a menu associated with it which will define the forms that can be accessed. It will also have a request group associated with it which will determine which concurrent programs the responsibility can execute. This is a very basic overview and you are probably already familiar with these concepts. However, if you want to understand more then I suggest you do some more reading of the System Administration guides from the Oracle Release 12 Documentation Library portal available on the Internet.

A few other important points to note are as follows:

The responsibility that you will need to configure nearly everything relating to a concurrent program is Application Developer. The only thing you cannot do with this responsibility is give access to users. For this you will need to use the System Administrator responsibility. (Assign these responsibilities to your user if you do not have them already.)You can launch concurrent programs through an online request, for it to be scheduled automatically or to be triggered programmatically by using Oracle's built-in APIs.Concurrent programs can also be configured so that they can be made incompatible with other concurrent programs meaning that they cannot run simultaneously.You can also group concurrent programs together and form a request set. This feature is useful if you need to create concurrent programs that are linked in some way but need to be run in a certain manner.Concurrent programs can also be scheduled to run on a certain date or to be run on an ongoing basis indefinitely.

We are now ready to get started and in this chapter we will create a concurrent program that launches a PL/SQL procedure. We will look at the parameters that are used internally and we will also add our own parameters using value sets and a dependent value set. In addition, we will write to the log and output files to show runtime information used for logging and reporting. We will schedule the concurrent programs to run automatically at specified time intervals and will look at creating multiple concurrent programs and run them together as a request set. At the end of the chapter we will look at creating a different type of concurrent program.

Defining a concurrent program

In our first recipe, we are going to create an executable and then define a concurrent program that launches the executable. The executable in this example is a PL/SQL package that we want to run. We will start off with a little introduction and look at the types of concurrent programs we can create, the location of executable files on the server, and how to find the output and log files. We will then register a custom application which we need to register our executable and concurrent programs with. Therefore, this recipe will comprise of the following:

Introducing concurrent programsRegister a custom applicationConfigure an executableConfigure a concurrent program