Вы находитесь на странице: 1из 35

Opportunity.

Illuminated
maximum value from technology
investment through business solutions

ORACLE APPLICATIONS ARCHITECTURE


1.
2.
3.

4.

5.

The Oracle Applications Architecture is a framework


for multi-tiered, distributed computing that supports
Oracle Applications products.
In this model, various servers are distributed among
multiple levels, or tiers.
A server is a process or group of processes that runs
on a single machine and provides a particular
functionality, often referred to as a service. For
example, the HTTP server is a process that listens for
and processes HTTP requests, and the Forms server is
a process that listens for and processes requests for
activities related to Oracle Forms.
A tier is a logical grouping of services, potentially
spread across more than one physical machine. The
three-tier architecture that comprises an Oracle EBusiness Suite installation is made up of the database
tier, which supports and manages the Oracle database;
the application tier, which supports and manages the
various Applications components, and is sometimes
known as the middle tier; and the desktop tier, which
provides the user interface via an add-on component to
a standard web browser.
A machine may be referred to as a node, particularly in
the context of a group of computers that work closely
together in a cluster. Each tier may consist of one or
more nodes, and each node can potentially
accommodate more than one tier. For example, the
database can reside on the same node as one or more
application tier components. This may be done for
simplicity of administration, or (as in the case of
concurrent processing) to maximize performance by
reducing network traffic.

THE APPLICATION TIER


The application tier has a dual role: hosting the various servers that process the business logic,
and managing
communication between the desktop tier and the database tier. This tier is sometimes referred to
as the middle tier. Oracle9i Application Server (9iAS) provides the technology used on the
application tier. Six servers comprise the application tier for Oracle Applications:
1. Web server
2. Forms server
3. Reports server
4. Discoverer server (optional)
5. Concurrent Processing server
6. Admin server
Try to avoid using a mixture of different platforms on your application tier. This makes
maintenance easier, since only one set of patches needs to be downloaded.
LOAD BALANCING
The application tier supports load balancing among many of its servers to provide higher
availability, fault tolerance, reliability, and optimal scalability. If you have more than one of any of
the following types of server, load balancing can be employed:
Web server Forms server Reports server Discoverer server Concurrent Processing server
Typically, load balancing is most commonly used to spread the load across multiple Web servers,
where the load may vary significantly.
WEB SERVER
The Oracle HTTP server (powered by Apache) acts as the Web server. It processes the requests
received over the network from the desktop clients, and includes additional components such as:
Web Listener Java Servlet Engine JavaServer Pages (JSP)
The Web listener component of the Oracle HTTP server accepts incoming HTTP requests (for
particular URLs) from client browsers. If possible, the Web server services the requests
itself, for example by returning the HTML to construct a simple Web page. If the page

ORACLE DISCOVERER
1.
2.

3.
4.

5.

6.

The Discoverer server comprises Oracle Discoverer 10g, a key component of the Oracle 10g
Application Server.
Discoverer is an ad hoc query, reporting, analysis, and publishing tool that allows business
users at
all levels of an organization to gain immediate access to information from data marts, data
warehouses, and online
transaction processing (OLTP) systems.
Report builders and analysts can easily create, modify, and execute adhoc queries and reports.
Casual users can navigate through predefined reports and graphs via business views that hide
the complexity of the underlying data structures.
Oracle Discoverer 10g hides the complexity of the database, presenting it through an intuitive,
easy to understand interface. It maps potentially unfamiliar database terms such as tables to
familiar terms such as folders, enabling those unfamiliar with database
syntax to access key information using standard business terms.
Discoverer 10g is tightly integrated with Oracle E-Business Suite Release 11i, allowing EBusiness Suite users to employ Discoverer to analyze data from selected business areas in
Financials, Operations, Human Resources, Purchasing, Process Manufacturing, Activity Based
Management, and other products.
The Discoverer server complements the Reports server, by allowing performance of adhoc
queries and analysis of the resulting query output. It also allows users to perform projections
based on possible changes to the business environment or other strategic factors.

DISCOVERER END USER LAYER


The Discoverer End User Layer is the key to providing ease of use to the underlying data in the
Oracle Applications database. It is a layer of metadata (data describing data) that is located in
the Oracle Applications database, separate from the actual Applications data. Three software
components are used to access the End User Layer:
DISCOVERER ADMINISTRATOR EDITION - Allows creation and maintenance of the End
User Layer and manages the administration of security grants for users and responsibilities.
DISCOVERER PLUS - An applet used to create queries, create and carry out analytic

TYPES OF CONCURRENT
MANAGERS

TYPES OF CONCURRENT MANAGER


1. The Internal Concurrent Manager (ICM) controls all other concurrent managers. It
administers the startup and shutdown of managers as defined by their work shift, monitors for
process failure, and cleans up if a failure occurs. The ICM does not process concurrent
requests itself (except for queue control requests, such as ACTIVATE, DEACTIVATE, or
ABORT). While the basic ICM definition should not be changed, you can if required modify the
sleep time (number of seconds the ICM waits between checking for new concurrent requests),
PMON (process monitor) cycle time (number of sleep cycles the ICM waits between checking
for failed workers), and queue size (duration between checks for number of active workers,
measured in PMON cycles). If Parallel Concurrent Processing (described below) is being used,
you can also set some options for this.
2. The Conflict Resolution Manager (CRM) enforces rules designed to ensure that
incompatible concurrent requests do not run in the same conflict domain (an abstract
representation of the groupings used to partition data). As with the Internal Concurrent
Manager, the basic CRM definition should not be changed, but you can modify the sleep time
for each work shift, as well as some Parallel Concurrent Processing options.
3. The Standard Manager as shipped with Oracle Applications will accept and run any
concurrent requests, as it has no specialization rules that would restrict its activities.
Consequently, the definition of the Standard Manager should not be altered, as this might
mean some programs could not run at all. Jobs should only be excluded from the Standard
Manager after ensuring they can be run by an alternative manager, such as a product-specific
manager or user-defined manager.
4. Transaction Managers support synchronous request processing, whereby a pool of
server processes responds to requests from client programs. Instead of polling the concurrent
requests table to obtain instructions, a transaction manager waits to be signaled by a client.
An example is approval of an order, where execution of the request must take place quickly.
The relevant transaction manager program runs on the server, transparently to the client. All

SETTING UP THE CONCURRENT MANAGERS


SETTING UP CONCURRENT MANAGERS
Some of the key steps include:
1.
2.
3.
4.
5.

Name and description of the manager


Assignment of a concurrent program library
Assignment of work shifts to the manager
Definition of the maximum number of workers (target processes) the manager can run concurrently
Optionally specializing the manager to run certain types of requests

Tip: It is easier to identify the optimum number of workers by being conservative initially,
and defining additional workers
later if needed (subject to availability of system resources).
Multiple managers can be run on multiple nodes using Parallel Concurrent Processing, as
described below.
CONCURRENT PROCESSING ARCHITECTURE

In Concurrent Processing, programs are run as operating system background processes.


These programs may be written using a variety of Oracle tools, programming languages for
executables, or the host operating system scripting language.

As noted above, a concurrent program that runs in the concurrent managers own operating
system process is known as an immediate program. Immediate programs run as a function
within the concurrent managers program library. Examples include PL/SQL programs.

In contrast, a concurrent program that runs in a child process of the concurrent manager
process is known as a spawned program. Examples include SQL programs, SQL Loader
programs, Oracle Reports programs, spawned C programs, and host language programs such
as UNIX shell scripts or Windows command files
CONCURRENT REQUEST LIFECYCLE
PHASE
ACTIVITY
Pending
The request is waiting to be run

APPS SCHEMA
The APPS schema has access to the complete Oracle E-Business Suite data model. It
is analogous to the SYSTEM schema, which has access to the entire database. Oracle
Applications responsibilities connect to an APPS schema, and the environment variable FNDNAM
is set to the name of the
APPS schema.
APPS AND BASE PRODUCT SCHEMAS
All data objects for a product are owned by a schema for that product, known as a base product
schema. One schema, called APPS, owns
all the code objects for the Oracle E-Business Suite, and has access to all data objects. There is
one APPS schema for every
product installation group.
The following code objects are installed in the APPS schema:
Packages Procedures Functions Triggers Views Materialized views
The following objects are installed in the base product schemas:
Tables Sequences Indexes Constraints
In addition, there are grants from the tables and sequences to the APPS schema, as well as
synonyms from the APPS schema to
those objects.

APPS SCHEMA BENEFITS


APPS SCHEMA BENEFITS
The APPS schema improves the reliability of and reduces the time needed for
installation, upgrade, and patching by eliminating the need for cross-product grants and
synonyms. Utilizing a single schema that
has access to all objects eliminates cross-product dependencies, and creates a hub-and-spokes
access model rather than a
spiders web.
CUSTOM SCHEMA ACCESS
In some circumstances, you may wish to create a schema that has limited or read-only access to
Oracle Applications data.
Warning: Since the APPS schema has all privileges to all Oracle Applications objects, you
should never give users direct
access to this schema. You will need to grant access on objects to the user schema from the base
product schema.
Note: You may need to re-grant access if the underlying object is dropped and recreated.
DATA ACCESS
Some views access packages or functions, where the value returned by the package or function
may depend on the environment
having been set up properly. The environment is initialized automatically when accessing Oracle
Applications through the Sign
On screen, or when using concurrent processing with Oracle Reports or SQL scripts.
If you connect directly to a schema, the rows returned by the view may therefore be different from
those returned if you are

USERS AND RESPONSIBILITIES


Users and Responsibilities are created in oracle applications in order to control the access to the
data. Users are assigned a set of responsibilities through which they can retrieve or modify
certain
set of data. Responsibility is a grouping of access in a logical manner. Accounts payable
responsibility would contain all the
privileges to create invoices, make payments etc. All the users from the payables department
would be given this responsibility.
You can create users, responsibility through system administrator responsibility in Oracle eBusiness Suite
Navigation System Administrator ->Security -> User -> Define
FIELDS
User Name Give the username in this field.
Password Enter desired password twice in this field. You would be required to change the
password when you login first time
with this username.
Description Provide brief description of the user in this field.
Password Expiration Days No. of Days after which the password will expire for the user.
Accesses No. of Accesses after
which the password will expire for the user. None The password will never expire
Person You can attach employee to this user. This is used for HRMS applications
Customer To attach customer to this user.
Supplier To attach supplier to this user.
Email Provide email address for the user. Its use to send notifications to the user through oracle
applications.

SECURING ATTRIBUTES
Securing attributes are used by Oracle HTML-based applications to allow rows (records) of
data to be visible to specified users or responsibilities based on the specific data (attribute values)
contained in the row. You may assign one or more values for any of the securing attributes
assigned to the user. If a securing
attribute is assigned to both a responsibility and to a user, but the user does not have a value for
that securing attribute, no
information is returned for that attribute.
For example, to allow a user in the ADMIN responsibility to see rows containing a CUSTOMER_ID
value of 1000, assign the
securing attribute of CUSTOMER_ID to the ADMIN responsibility. Then give the user a security
attribute CUSTOMER_ID
value of 1000.
When the user logs into the Admin responsibility, the only customer data they have access to has a
CUSTOMER_ID value of
1000.
FIELDS
Attribute : Select an attribute you want used to determine which records this user can access.
You can select from any of the
attributes assigned to the user's responsibility.
Value : Enter the value for the attribute you want used to determine which records this user can
access.

RESPONSIBILITIES
NAVIGATION SYSTEM ADMINISTRATOR ->SECURITY -> RESPONSIBILITY -> DEFINE
Responsibility Name - If you have multiple responsibilities, a pop-up window includes this name after
you sign on.
Application - This application name does not prevent the user of this responsibility from accessing other
applications' forms and
functions if you define the menu to access other applications.
Responsibility Key - This is a unique name for a responsibility that is used by loader programs. Loaders
are concurrent
programs used to "load" such information as messages, user profiles and user profile values into your
Oracle Applications tables.
To help ensure that your responsibility key is unique throughout your system, begin each Responsibility
Key name with the
application short name associated with this responsibility.
Effective Dates From/To - Enter the start/end dates on which the responsibility becomes active/inactive.
The default value for the start
date is the current date, and if you do not enter an end date, the responsibility is valid indefinitely. You
cannot delete a responsibility because
its information helps to provide an audit trail. You can deactivate a responsibility at any time by setting the
end date to the current date. If
you wish to reactivate the responsibility, change the end date to a date after the current date, or clear the
end date.
Available From - A responsibility may be associated with only one applications system. Select between
Oracle Self-Service Web
Applications or Oracle Applications.
Data Group - Name/Application The data group defines the pairing of application and ORACLE username.
Select the application whose
ORACLE username forms connect to when you choose this responsibility. The ORACLE username
determines the database tables and
table privileges accessible by your responsibility. Transaction managers can only process requests from

MENU EXCLUSIONS/EXCLUDED ITEMS


MENU EXCLUSIONS BLOCK
Define function and menu exclusion rules to restrict the application functionality accessible to a
responsibility.
Type : Select either Function or Menu as the type of exclusion rule to apply against this
responsibility.
When you exclude a function from a responsibility, all occurrences of that function throughout the
responsibility's menu
structure are excluded. When you exclude a menu, all of its menu entries, that is, all the functions
and menus of functions that it
selects are excluded.
Name : Select the name of the function or menu you wish to exclude from this responsibility. The
function or menu you specify
must already be defined in Oracle Applications.
EXCLUDED ITEMS: Use the List of Values to select valid attributes. You can assign any number
of Excluded Attributes to a
Responsibility

FREQUENTLY ASKED QUESTIONS IN INTERVIEWS


1. What is the significance of securing attributes while creating users?
2. What is the significance of securing attributes while creating responsibilities?
3. What is the significance of Menu Exclusions in responsibility?
4. What is Excluded Items in Responsibility?
5. How do I assign a responsibility to a user?

REGISTERING A CONCURRENT PROGRAM


Concurrent programs can be scheduled to run or manually run in oracle applications.
In Oracle Applications, concurrent processing simultaneously executes programs running in the
background with online operations to fully utilize your hardware capacity, hence the name
Concurrent Processing. You can write
a program (called a concurrent program) that runs as a concurrent process. Typically, you
create concurrent programs for long
running, data intensive tasks, such as posting a journal or generating a report. A concurrent
program is an instance of an
execution file, along with parameter definitions and incompatibilities. Concurrent programs use
concurrent program executables
to locate the correct execution file. Several concurrent programs may use the same execution file
to perform their specific tasks,
each having different parameter defaults and incompatibilities.
CONCURRENT PROGRAM EXECUTABLE
A concurrent program executable links an execution file or and the method used to execute it with
a defined concurrent program.
Under Concurrent Processing, an execution method may be a program written in a standard
language, a reporting tool, or an
operating system language.
An execution method can be a PL/SQL Stored Procedure, an Oracle Tool such as Oracle Reports or
SQL*Plus, a spawned
process, or an operating system host language.
CONCURRENT PROGRAM EXECUTION FILE

STEPS TO CREATE A CONCURRENT PROGRAM


EXECUTABLE :
The first step in creating a concurrent program in oracle applications is to create the concurrent program
executable. To do this, navigate to Application Developer responsibility after you login to Oracle Applications.
To open the Executable form follow the below mentioned navigation path. Application Developer -> Concurrent
->Executable.
1. Executable - Enter executable name here. Enter any user friendly name.
2. Short Name - Enter short name for your executable. This is used for mapping the executable with the concurrent
program. Usually executable name are of 8 characters.
3. Application - Give the application to which the executable belongs to. E.g. you want some program to run from oracle
payables then account payables should be entered as application name.
4. Description - Give the brief description of the executable in this field.
5. Execution Method - Here you need to choose the appropriate execution method for your executable. Following are the
possible execution methods which are commonly used in oracle applications.
Oracle Reports used for the RDF reports
Host used for shell scripts, basically the language of the host operating system
PL/SQL Stored procedure used to run the stored procedure through oracle applications
SQL*Loader used to run the sql loader programs
SQL*Plus - used to run the anonymous PL/SQL blocks. It will get executed in the same fashion as you are running
on SQL Plus.
Java Stored Procedure The execution file is a Java stored procedure.
Java Concurrent Program Used for program written in Java.
Spawned used for c or pro*c Program. Mainly used by standard oracle interfaces.
Perl Concurrent Program used for programs written in CGI Perl.
Request Set Stage Function PL/SQL stored function that can be used to calculate the completion statuses of
request set stages.
Immediate execution file is a program written to run as subroutine of the concurrent manager. Oracle doesnt
recommend use of this executable type.
Multi-Language function execution file is an MLS function that supports running concurrent program in
multiple languages.
PL/SQL Stored Procedure, Oracle Reports, Host, SQL*loader, SQL*Plus are the most commonly used executable
types.
6. Executable File name This should contain the name of the executable file. In case of PL/SQL Stored procedure or
Java Stored Procedure it should be the fully defined name of the stored procedure.
7. Subroutine Name This field is only used when executable type is spawned or immediate.

DEFINING THE CONCURRENT PROGRAM


Once you have defined the executable, the second step is to define the concurrent program. To
define a concurrent program, you need to open the form using the navigation path below.
Navigation Application Developer -> Concurrent ->Program
Field Description
1. Program Give user friendly name for your concurrent program. This name will be displayed
in Requests submission screen while submitting the requests.
2. Short Name Give short name for concurrent program. This is used within the database
tables in oracle applications. Its a common practice to have the Short name same for the
executable and the concurrent program.
3. Application Give the application to which the concurrent program belongs to. E.g you want
some program to run from oracle payables then account payables should be entered as
application name.
4. Description - Give the brief description of the concurrent program.
5. Executable - Enter the short name of the executable (Defined in Executables Screen) you
want to attach to this concurrent program.
6. Method - will be defaulted once you enter executable short name
7. Options - will be defaulted once you enter executable short name Normally default values are
given for the other fields. Following is the significance of these fields.
8. Request Type Concurrent program can be associated to a predefined request type so that
only few concurrent managers can run the program.
9. Incrementor To be used by Oracle only.
10. MLS Function - This feature allows the program to be submitted once by the user but runs it
in the multiple languages.
11. Use In SRS Only when this check box is checked the Concurrent Program would be
available in Standard Request Submission (SRS) through the request group.
12. Allow Disable Value This will allow the disabled values in the value sets to be used while
entering the values of the parameters in the Concurrent Program.

DEFINING A CONCURRENT PROGRAM


Contd
13. Run Alone Indicates that program is incompatible with all other concurrent programs and
should be run alone.
14. Enable Trace This will enable the SQL trace for the concurrent program and will generate
the trace file when concurrent program is run. Only used in development environments to
check the performance of the concurrent program.
15. Restart on system Failure This option is used to indicate that concurrent program should
automatically be started when concurrent manager is restored after the system failure.
16. NLS Compliant This box is checked if the program allows for a user to submit request of
the program that will reflect a language and territory that are different from the language and
territory that the users are operating in.
17. Output Format Format in which output should be printed. Possible format values are
HTML / PDF TEXT / PS (Post Script) / PCL(HPs Printer Control Language)
18. SAVE Check to indicate that output should be automatically saved in an operating system
file.
19. PRINT Whether you want the output to be sent to printer for printing.
20. Column / Rows Column and Row length of the concurrent program output. Oracle
Applications uses this information to decide the print style.
21. Style Required Print Style
22. Printer A particular printer on which output should be sent.
Save the data that you have entered using Ctrl+S or File -> Save.

INCOMPATIBLE PROGRAMS
To navigate to this form, click on the Incompatibilities button on the bottom of the form
This window is used for defining the incompatibilities of the concurrent program.
Identify concurrent programs that should not run with your concurrent program as they might
interfere with its execution.
FIELD DESCRIPTION
1. Program Defaulted from Concurrent Programs Window
2. Application Defaulted from Concurrent Programs Window
3. Application Application of the concurrent program which is incompatible to the defined
concurrent program.
4. Name Name of the concurrent program which is incompatible to the defined concurrent
program.
5. Scope Used to identify if concurrent program is incompatible if the program or also with its
child requests.
6. Type - Enter Domain or Global. If you choose Domain, the incompatibility is resolved at a
domain-specific level. If you choose Global, then this concurrent program will be considered
globally incompatible with your concurrent program, regardless of which domain it is running
in.
7. Session Control - To navigate to this form, click on the Session Control button on the bottom
of the form. This is a new functionality given in 11.5.10 to control the database session while
executing concurrent program using following three parameters.

Consumer Group resource consumer group of the concurrent program can be specified. A resource
consumer group defines a set of users who have similar resource usage requirements. An overall
resource plan specifies how resources are distributed among the different resource consumer groups.
Resource consumer groups and resource plans provide a method for specifying how to partition
processing resources among different users.
Rollback Segment Rollback segment specified here would be used instead of the default rollback
segment. If you specify a rollback segment here, your concurrent program must use the APIs
FND_CONCURRENT.AF_COMMIT and FND_CONCURRENT.AF_ROLLBACK to use the specified rollback
segment.

REQUEST SETS
REQUEST SETS
Request sets are the group of concurrent programs that are related to each other.
When a request set is run all the concurrent programs are executed according to the outcome of the previous
concurrent program
defined in the request set.
To create request set in oracle applications. Navigation System Administrator -> Requests -> Set
REQUEST SET SCREEN
1. Set Give the user-friendly name of the
request set. This is the name, which will
show in the figure14 when user is trying to
run the request set.
2. Set Code This is the code of the request
set.
3. Application Application to which the
request set belongs to.
4. Description Give the brief functional
description of the request set.
5. Owner Usually the person who is
creating the request set.
6. Active Dates From The date from which
you want your request set to be active.
7. Active Dates To - The date upto which
you want your request set to be active.
8. Print Together Check this if you want
all the stages of the concurrent program
to be printed together
9. Allow Incompatibility Check this if you
want to define incompatibility between the
stages of the request sets.

REQUEST SET STAGES

1. Set Name and Set Application Name will get defaulted


from the previous screen. You need to define all the stages,
which you want to run as the part of the request set.
2. Enter the Sequence, any relevant Stage name and
Description for this stage.
3. Stage Code: Enter a Stage Code for the stage. This code is
used internally by Oracle Applications to reference the stage.
4. Function: The function file specifies how the outcomes of the
requests in this stage affect the outcome of the stage. The
default value for this field is the Standard Stage Evaluation
function. This function bases its completion status on the
normal completion status of the requests it contains.
5. Application: This field is defaulted to Application Object
Library.
6. The Return Value of this Stage Affects the Set Outcome:
Ensures that the request set's completion status is equal to
the completion status of this stage.
7. Allow Incompatibility: Allows your system administrator to
specify programs that this stage is incompatible with (may not

Field Description
The Set, Set Application and Stage fields default
from the previous screen.
1. Enter the Sequence number.
2. Select the concurrent program name from the LOV in
the Program field. Also Enter relevant description.
3. Print Options: Enter the number of Copies, print
Style and Printer name.

When you click parameters button, following screen will


be displayed with the parameters defaulted from the
concurrent program definition. You can overwrite the
default value for the parameters in this screen.

REQUEST SET STAGES

Field Description
1. Sequence: The Sequence field displays the order in
which each request parameter appears when you
run the request in the Submit Requests window.
2. Prompt: The Prompt field shows the request
parameter's prompt.
3. Display: Check the Display check box to specify
that you can see a request parameter at submission
time, or uncheck the check box to specify that a
parameter should not be displayed at submission
time. If a parameter is not displayed, then its default
value will be used.
4. Modify: Modify check box specifies whether you
can insert or change the value for a request
parameter at submission time.
5. Shared Parameter: The shared parameter field

Field Description
1. Set Defaulted from Request Sets Screen
2. Set Application Defaulted from Request Sets
Screen
3. Start Stage Stage with you want to be run as the
first stage of the program.
4. Display Sequence Defaulted from Define Stages
Screen
5. Name - Defaulted from Define Stages Screen
6. Success You need to enter the name of the stage
which you want to run when the Stage in the Name
field completes successfully.
7. Warning - You need to enter the name of the stage
which you want to run when the Stage in the Name
field completes with warning.
8. Error - You need to enter the name of the stage

RUNNING AND VIEWING A CONCURRENT REQUEST


RUNNING REQUESTS
Concurrent Programs or Request sets can be
manually submitted by the users or scheduled to
run at any point of time with any frequency.
Concurrent Programs or request sets are
assigned to any responsibility using a request
group.
Click View->Requests to Navigate to Find
Requests Form. You can query your requests by
using following Find Requests Form

The query could be based on the following parameters


Request Id Request Id
Name Name of the request
Date Submitted
Date Completed
Status
Phase
Requestor
After entering the appropriate query criteria click on Find
Button.

FLEXFIELDS

Oracle flexfields is one of the most important parts of Oracle Applications. It is because of
the flexfields that the Oracle applications is so generic in nature and can be used to suit
any industry or organization.
A flexfield, as the name suggests, is a flexible data field that your organization can customize
to your business needs without programming.
A flexfield is a field made up of subfields, or segments. While flexfields do not require
programming, they do allow you to perform significant customizations to the Oracle
Applications, so they do require enough explanation for you to get the most out of the features
they provide.
Oracle Applications uses two types of flexfields, key flexfields and descriptive flexfields.

KEY FLEX FIELD - A key flexfield is a field you can customize to enter multisegment values such
as part numbers, account
numbers, and so on.
DESCRIPTIVE FLEX FIELD - A descriptive flexfield is a field you customize to enter additional
information for which your
Oracle Applications product has not already provided a field.
Oracle Applications flex fields let you satisfy the following business needs:
Have intelligent fieldsfields comprised of one or more segments, where each segment has both
a value and a meaning.
Rely upon your application to validate the values or the combination of values that you enter in
intelligent fields.
Have the structure of an intelligent field change depending on data in your application. Capture
additional information if you so
choose. Customize data fields to your meet your business needs without programming. Query
intelligent fields for very specific

KEY FLEX FIELDS


KEY FLEXFIELDS
Key flexfield is a field made up of segments, where each segment has both a value and a meaning.
You can think of a key flexfield as an intelligent field that your business can use to store
information represented as codes.
Most organizations use codes made up of meaningful segments to identify general ledger
accounts, part numbers, and other
business entities. Each segment of the code can represent a characteristic of the entity. For
example, consider an account number
for a bank. A complete bank number may consists of various segments like the country code, area
code, city code, branch code,
account type, account number etc.
Bank Number : [01].[002].[08].[S].[124467]
[Country Code][City Code][Branch
Code][Account Type (Savings/Checking)][Account Number]

The number of segments a bank requires to identify an account number uniquely is a requirement
specific to the bank. Another
bank might not require a country code if its presence is there only in one country. Key flexfields
are used to identify such
information uniquely. A key flexfield is flexible enough to let you use any code scheme you want to
describe an entity. When your
organization initially installs an Oracle Applications product, your organizations implementation
team customizes all the key
flexfields in that product to use meaningful code segments to describe each key flexfield entity.
Your organization decides for
each key flexfield, how many segments an entity has, what each segment means, what values each
segment can have, and what

KEY FLEX FIELDS


OWNER

KEY FLEXFILED

FLEX FIELD
CODES

Oracle Assets

Asset Key Flex field

KEY#

Oracle Assets

Category Flex field

CAT#

Oracle Assets

Location Flex field

LOC#

Oracle General Ledger

Accounting Flex field

GL#

Oracle Human Resources

Grade Flexf ield

GRD

Oracle Human Resources

Job Flexfield

JOB

Oracle Human Resources

Personal Analysis Flex Field

PEA

Oracle Human Resources

Position Flex Filed

POS

Oracle Human Resources

Soft Coded Key Flex Field

SCL

Oracle Inventory

Account Aliases

MDSP

Oracle Inventory

Item Catalogs

MICG

Oracle Inventory

Item Categories

MCAT

Oracle Inventory

Sales Orders

RLOC

Oracle Inventory

Stock Locators

MTLL

Oracle Inventory

System Items

MSTK

Oracle Payroll

Bank Details

BANK

Oracle Payroll

Cost Allocation

COST

Oracle Payroll

People Group

GRP

Oracle Receivables

Sales Tax Location Flex Field

MKTS

Oracle Receivables

Territory Flex Field

CT#

Oracle Service

Oracle Service Item Flex


Field

SERV

Oracle Training Administration

Training Resources

RES

DESCRIPTIVE FLEX FIELDS


Descriptive flex fields like the key flex fields provides further scope of customization in Oracle
Applications.
Descriptive flex fields provide customizable expansion space on your forms. Though the fields on
an Oracle Applications form
are more than enough to capture all the possible information from the user perspective, but still
the users can feel the need of
capturing additional information. A descriptive flex field gives you room to expand your forms for
capturing such additional
information. A descriptive flex field appears on a form as a singlecharacter, unnamed field
enclosed in brackets ([ ])
Oracle Applications has provided space for descriptive flex fields on almost all the forms. Just like
in a key flex field, a popup
window appears when you move your cursor into a customized descriptive flex field. And like a
key flex field, the popup
Window has as many fields as your organization needs. Each field or segment in a descriptive flex
field has a prompt (figure 4),
just like ordinary fields, and can have a set of valid values. The pop-up as shown in the figure 4
comes up when you click on the
[ ] icon on the form in the figure below

IMPLEMENTING KEY FLEX FIELDS


The basic steps in defining a key Flexfields are as given below.
You may or may not use all the steps. The detailed explanation is being followed after the steps.
Identifying Key flexfields that are required for you Oracle Applications installation

Designing a Key flexfield structure


Selecting the appropriate Key flexfield to define
Defining structure information for the Key flexfield
Defining segment attributes
Defining flexfield qualifiers
Defining segment qualifiers
Implementing optional features as needed

To define the key Flexfield structure, you need to open the Key Flexfield segment form. The
navigation path is
Application Developer -> Flexfield: Key -> Segments.

The Enabled checkbox is checked by default. You can optionally uncheck it. You cannot delete a Key flexfield
structure, but you can disable it by unchecking the Enabled checkbox.
Next, you may select a Segment Separator other than the default period. Your choices are period, dash, pipe,
or any custom character. You must have a segment separator.
Next, you can select whether you want to Cross-Validate Segments. Unchecking this checkbox will disable
cross-validation for this Key flexfield structure.
You can then identify whether you want to Freeze Rollup Groups. If you mark this checkbox, you will not be
able to change the assigned rollup groups in the Define Segment Values form.
As a last step, you can determine whether you want to Allow Dynamic Inserts for Key flexfield structures. If
you do not allow dynamic inserts, you must create all flexfield combinations in the combination form.

You can freeze your flexfield structure by checking the Freeze Flexfield Definition checkbox. Once frozen, you
can only make very limited changes
to the flexfield structure definition. If you need to change the flexfield structure definition, first uncheck the
Freeze Flexfield Definition checkbox
and make the changes. Next, reactivate the Freeze Flexfield Definition checkbox. You will receive a warning
message that tells you that unfreezing

IMPLEMENTING DESCRIPTIVE FLEX FIELD


The descriptive flexfield could be defined for a custom form or a standard form but in either case,
the descriptive flexfield is required to be defined in the system first. If the descriptive flexfield is to be defined on a
custom table then the custom table is required to be registered with Applications Objects Library before it can be
used in the descriptive flexfield
definition. To register custom tables under AOL refer to the document on Table Registration. The standard tables
come registered with the Oracle
Applications therefore you do not need to register them again.
To register the descriptive flexfield, open the register form using the navigation path : Application Developer ->
Once you have identified the additional information you
Flex field -> Descriptive -> Register.
want to capture in a Descriptive flex field, you must
The form would look like as shown in figure below.
determine the usage. There are two types of segments for
Descriptive flex fields:
Global Segments
A global segment is a segment that will always be
displayed in a Descriptive flex field window common to all
context values, and it is the most commonly used type of
Descriptive flex field. Each global segment maps one-toone to a database column. Descriptive flex field segments
are usually stored in columns named ATTRIBUTE1 to
ATTRIBUTEn, where n is the maximum number of
segments for a given Descriptive flex field.
Context-Sensitive Segments
A context-sensitive segment is a segment that may or may
not be displayed in a Descriptive flex field window,
depending on a context value. A context value can be
derived from another field in the same block or from the
context field. The field from which a context value derives
its value is called a reference field. Remember, a
Descriptive flex field is associated with a database table,
not a single form. A context field is a special field
appearing in the Descriptive flex field window. You can use
a context field to allow users to enter their own context

EXAMPLE OF CONTEXT SENSITIVE FLEXFILED


Lets say, you need to define a DFF for the Human Resource People Enter and Maintain form.
The DFF field ( [ ] ) is already provided on the form. Depending upon whether the details being entered
are for an employee or an applicant, you want to decide on the details to be entered in the database.
For an employee the details required are:
1. Drivers License Jurisdiction 2. Drivers License Number 3. Global ID 4. Country of Origin 5. Security
Clearance 6. Badge Number
7. Bonded? 8. Hired Via Acquisition 9. Acquired Company 10. Original Hire Date 11. Proposed Retirement
Date 12. Proposed Retirement Reason 13. Service Start Date 14. Union Seniority Date
And the details required if the person is an applicant are:
1. Current Employer 2. Employer's Phone 3. Verification Check Date 4. Verification Checked By 5. Reference
Check Date 6. Referenced Checked By 7. Pre-Employment Physical Date
The DFF prompt fields have to depend on the value entered in the context field. If the value entered is EMP then
the prompt for the
employee details should pop-up and if the value entered is APL then the prompt for Applicant details should popup.
Steps Involved in this are
Forms and
routines
use
the combination
of
1. Register the DFF using the Descriptive Flex field registration
formflex
as field
shown
in figure
below.
Standard DDFs
application
and
flex field
to DFFs.
uniquely
are already registered with oracle applications and hence
this stepname
can be
skipped
forname
seeded
identify your flex field. The details of the fields on the
above forms are:
Application name where you want to register your
DFF.
Name Use this name when you use flex field routines to
call your descriptive flex field from your forms or
programs.
Title Flex fields displays this unique title at the top of
the flex field window when your users enter your
descriptive flex field.
Table Name Enter the name of the table that contains
your descriptive flex field columns. Your table must
already exist in the database, and it should already have

EXAMPLE OF CONTEXT SENSETIVE FLEX FIELD


STRUCTURE COLUMN
Enter the name of the column, such as ATTRIBUTE_CATEGORY, in your table that your flex field
uses to differentiate among descriptive flex field structures. Your descriptive flex field uses this column to let your
users see different
descriptive flex field structures based on data supplied by the form or the user. You must have a structure column
even if you only
intend to use one descriptive flex field structure.
CONTEXT PROMPT
Enter a default context field prompt that asks your user which descriptive flex field structure to display. Depending
upon how your
application installer defines your descriptive flex field, your user may or may not see a context field as part of the
descriptive flex field
pop-up window. Descriptive flex field windows display this context field prompt if the installer allows the end user
to override the
default context field value.
PROTECTED In some cases, you may want to create a descriptive flex field that cannot be inadvertently changed
by an installer or user.
This type of flex field is called a protected descriptive flex field. You build a protected descriptive flex field the
same way you build a
normal descriptive flex field. The main difference is that you check the Protected check box after defining your
segment structures.
Once a descriptive flex field is protected, you cannot query or change its definition using the Descriptive Flex field
Segments window.
You should define your descriptive flex field segments before you change the Protected check box.
REFERENCE FIELDS WINDOW Use this window to specify any form fields that might serve as descriptive flex
field reference fields. Your
Flex field can use values in one of these fields (context field values) to determine which flex field structure to
display.
COLUMNS These are columns of the table that would to be used in the DFF. You may declare all columns here
even if they are not being used in the
DFF presently. Save the changes and close the form. You need to define the structure of the DFF now. To do this

EXAMPLE OF A CONTEXT SENSITIVE FLEX FIELD

The segment form as shown in the figure above is used to enter the context field values upon
which the prompts in the pop
up would depend. The EMP and APL are the values that a user would enter in the context prompt
for the DFF. The pop-up would decide the prompts on the basis of this value.
Global Data Elements are those prompts which would be displayed in the all the values for the
context prompt.
To determine the structure of the DFF on APL context value, click on segments button at the
bottom when the APL value in
Context Field Values is selected. The fields to be entered are shown in figure below.

PROMPTS FOR APL CONTEXT

PROMPTS FOR EMP CONTEXT

Save the changes and click on compile to freeze the DFF definition. You may optionally use the
Value Sets for the values to be entered in the various prompts.
The DFF is now ready to be used from the form. To enable the DFF on the form, follow the

EXAMPLE OF A CONTEXT SENSISTIVE DFF

PROMPT FOR EMP CONTEXT

FREQUENTLY ASKED INTERVIEW QUESTIONS


1. What is the difference between key flex field and Descriptive flex field?
2. What are context sensitive segments in descriptive flex fields?
3. What is the significance of structure id in key flex fields?
4. Can we use other columns (beside attributes) as segments for DFF?
5. Which procedure should be used to make the DFF read only at run time?
6. What is the significance of cross validate segments in the Key flex field structure screen (figure 6)?
7. What is the significance of reference field in a DFF?
8. How do I enter the default value of Key flex field or DFF segment?
9. What is the difference between flex field qualifier and segment qualifier?
10. How do I define global segment qualifier?
11. Which procedure should be called to enable a DFF in a form?
12. Do we need to register Standard DFFs?
13. Are the value sets mandatory for DFF segments?
14. What is the maximum number of segments that can be defined for KFF?
15. How do I enable a database column to use it in a DFF segment?

PROFILE OPTIONS
WHAT ARE PROFILE OPTIONS IN ORACLE APPS ?
Profile Options provide flexibility to Oracle Apps. They are a key component of Oracle
Applications, hence these much be
understood properly. I will be taking multiple examples here to explain what profile options mean.
I will also try to explain by
stepping into Oracle shoes "How will you design a program that is flexible", by using Profile
Options.
WHAT IS PROFILE OPTION?
The profile option acts like a Global Variable in Oracle.
WHY DOES ORACLE PROVIDE PROFILE OPTIONS?
These are provided to keep the application flexible. The business rules in various countries and
various companies can be
different. Hence the profile options are delivered by Oracle in such a manner to avoid hard-coding
of logic, and to let the
implementation team at site decide the values of those variables.
SOME SCENARIOS WHERE PROFILE OPTIONS ARE USED BY ORACLE....
1. There are profile options which can turn the debugging on, to generate debug messages. Say
one of 1000 users reports a problem, and hence you wish to enable debugging against just
that specific user. In this case you can Turn On the debugging profile option "again that
specific user.
2. There are profile options that control which user can give discount to their customers at the
time of data entry. You can set profile option "Discount Allowed" to a value of either Yes or No
against each Order Entry user.
3. Lets assume an Organization has department D1 and D2. Managers of both the Departments

EXAMPLE OF DEFINING A PROFILE OPTION


EXAMPLE
Lets assume you are a developer in Oracle Corporation building a screen in ERP.
Let us further assume that you are developing an Order Entry screen.
Assume that business requirements for your development work is 1. Screen should be flexible to ensure that different users of the screen can give different levels
of discounts. For example, a clerk Order Entry User can give no more than 5% discount. But
Sales Manager can enter an Order with 15% discount.
2. There should not be any hard-coding regarding the maximum permissible discount.
3. In the screen there will be a discount field.
4. When the discount value is entered in discount field, an error will be raised if user violates the
maximum permissible discount.
HERE IS HOW ORACLE WILL CODE THIS SCREEN
1. They will define a profile option named "OETRIUNE Maximum Discount Allowed".
2. The short name of this profile option is "OETRIUNE_MAX_DISCOUNT"
2. In the when-validate-item of the discount field(assuming Oracle Forms), following code will
be written
IF :oe_line_block.discount_value > fnd_profile.value('OETRIUNE_MAX_DISCOUNT')
THEN
message(
'You cant give discount more than '
|| fnd_profile.value('OETRIUNE_MAX_DISCOUNT') || '%' ) ;
raise form_trigger_failure ;-- I mean raise error after showing message
END IF ;
HERE IS HOW, THE CLIENT IMPLEMENTING ORACLE ORDER ENTRY WILL
CONFIGURE THEIR
SYSTEM.
1. Navigate to System administration and click on system profile menu.
2. For Clerk User(JOHN), set value of profile "OETRIUNE Maximum Discount Allowed" to 5

EXAMPLE OF PROFILE OPTIONS


Question: This sounds good, but what if you have 500 Order Entry Clerks and 100 Order Entry
Sales Managers? Do we have to
assign profile option values to each 600 users?
Answer : Well, in this case, each Clerk will be assigned Responsibility named say XX Order Entry
Clerk Responsibility
Each Sales Manager will be assigned Responsibility named say XX Order Entry Sales Manager
Responsibility
In this case, you can assign a profile option value to both these responsibilities.
XX Order Entry Clerk Responsibility will have a value 5% assigned against it. However, XX
Order Entry Sales Manager
Responsibility will have a profile option value of 15% assigned.
In the when-validate-item of the discount field, following code will then be written
IF :oe_line_block.discount_value > fnd_profile.value('OETRIUNE_MAX_DISCOUNT')
THEN
message(
'You cant give discount more than '
|| fnd_profile.value('OETRIUNE_MAX_DISCOUNT') || '%' ) ;
raise form_trigger_failure ;-- I mean raise error after showing message
END IF ;
PRECEDENCE
What is the order of precedence for Profiles?
Security Profiles: Site Level >> Application Level >> Responsibility Level >> User Level

SOME QUESTONS ON PROFILE OPTIONS


Why the need of Organization Level profile option?
For example multiple responsibilities can be attached to same Operating Unit. In such event, it can get tedious to
attach the same profile option to each such responsibility. By attaching an Organization Level Profile Option to an
Operating Unit implies that all such
responsibilities inherit Org Level Profile value.
Will Organization Level Profile override the Responsibility Level Profile? Yes
Give me some example usages of Server Level Profiles
Managing Time zones
In a single Global DB Instance implementation, you may desire to display different time in UI screen,
depending upon the local time zone. If you have a separate Middle Tier Server for each time zone, then time
zone profile options [Enable Time zone Conversions, Client Time zone, Server Time zone] can be set at Server
Level.
External WWW Facing Mid Tiers
It is possible that for security reasons, you may desire to change the functionality of Application when its
accessed from External WWW facing mid-tier. Such security profiles can be assigned at server level.
For example, profile option Node Trust Level can be set to a value of external against a server to flag the
specific mid-tier server as External.
Give me some example usages of Organization Level Profiles
Managing Time zones
In a single Global DB Instance implementation, you may desire to display different time in UI screen,
depending upon the local time zone. If you cant afford to have a separate Middle Tier Server for each time
zone, then time zone profile options [Enable Time zone Conversions, Client Time zone, Server Time zone] can
be set at Organization Level, as each Organization assumingly will be in a specific time zone.
Setting Org Level Profile Option in HRMS
A HRMS Business Group can be assigned to various Oracle HRMS Responsibilities. Keeping a track of profiles
against all such responsibilities, which belong to a specific Business Group can be tedious. Hence you may
simplify this by simply assigning the profile to Business Group Organization.

Вам также может понравиться