You are on page 1of 257

Oracle Apps R12

e-Business Suite

Oracle R12 - AOL by Dinesh Kumar S 1


File System in Oracle
Apps

The following are the most important TOP level directories in oracle apps.

APPL_TOP
Contains Oracle Application Product directories such as PO, INV, OM, GL, AP, AR etc.

COMMON_TOP
Contains Common directory and files (log files, java libraries) which is shared across
different modules.

ORACLE_HOME
Contains technology Stack component such as Oracle DB (10g/11g), Oracle Developer
Suite (Forms, Reports) etc.

DATA_TOP
Contains Data files.

INST-TOP
It is new top in R12. It contains configuration files of application & technology stack to share
between multiple instances.
Application Object
Library
(AOL)
Why AOL?

Collection of pre-built application components &


facilities.
Contains shared components - database objects,
forms, reports, libraries.
Coding standards use AOL.
Roles of AOL

AOL links all objects of Oracle application.


It stores and contains information and details about
the data in file system.
It is the backbone of oracle apps, which
integrates all the objects and derives a relation
between them.
Oracle Security Architecture

FND user

Responsibility
Data Group

Application
Oracle Schema

Request Group

Concurrent Prog.

Executable
Menu

Form & Sub functions

Forms
FND Applications

Navigation Application Register

Oracle R12 - AOL by Dinesh Kumar S 10


FND user

Responsibility

Data Group Request Group Men

Application Concurrent Prog. Form & Sub functions


Executable

Oracle Schema Forms


Table: FND_APPLICATION
~ APPLICATION_ID

FND_APPLICATION_TL
~ APPLICATION_ID
~ LANGUAGE

Why?

To register your application name, application short name, application base path,
and application description with Oracle Application Object Library.
Oracle Application Object
Library uses this information to identify application objects such as responsibilities
and forms as belonging to your application.
This identification with your custom application allows Oracle Applications to
preserve your application objects and customizations during upgrades.

Used Only When -

We are creating a custom application to isolate custom code and/or data from shipped
Oracle Applications.
Use of Short name -

Oracle Applications use the application short name as an internal key; for example, when
identifying forms, menus, concurrent programs and other application components. The
short name is stored in hidden fields while the name displays for users.

Use of Base path -

Its is the name of an environment variable that represents the top directory of your
application's directory tree. Oracle Applications searches specific directories beneath the
base path for your application's files and scripts.

SUMMARY ::

Used to
View the Existing Applications & its base path.
When creating Custom application.
Below you can see the screen shot of oracle Purchasing Application definition.
Oracle UserName

Table: FND_ORACLE_USERID
~ ORACLE_ID

Navigation Security Oracle Register


Data Group Request Group Men

Application Concurrent Prog.


Executable

Oracle Schema

Oracle R12 - AOL by Dinesh Kumar S 16


FND user

Responsibility

Form & Sub functions

Forms

Oracle R12 - AOL by Dinesh Kumar S 17


Why?

An ORACLE user name grants access privileges to the ORACLE database.

When?

The installation process always registers your ORACLE user name, so you
need not register it unless you create a custom application using Oracle Application
Object Library, (or).
To associate an additional ORACLE user name with Oracle Applications.

What if no ORACLE User name?

If you do not register and enable your ORACLE user name (or) if you disable a registered
ORACLE user name, your user cannot use Oracle Application Object Library features such
as menus and flex fields.

PASSWORD -

We need to enter Password while creating the ORACLE User name


Oracle User name Password should be Synchronized with Oracle
Database. (DATABASE PWD <-> APPLICATION PWD).
PRIVILEGE -

Why?
To restrict access to AOL features (menus, help text, and flex-fields) and its tables privilege is used.

Default value: Enabled

Privilege Types -

(a) Enabled:
An enabled ORACLE user name has full privileges (insert, query, update, and delete) to the
Oracle Application Object Library database tables.

(b) Restricted:
Restricted ORACLE user name has only query privileges to the Oracle Application Object
Library database tables.
This ORACLE user name can view Oracle Application Object Library data, but cannot

insert, update, or delete information.

(c) Disabled:
A disabled ORACLE user name has no privileges to the Oracle Application Object Library
database tables.
This ORACLE user name cannot insert, query, update, or delete Oracle Application Object
Library information and cannot use Oracle Application Object Library features.
Additional Privilege Types -

Two additional privilege types appear, associated with ORACLE user-names configured at
installation.

However, these types cannot be selected from your list of values.

(i) Public:
The installation process registered an ORACLE user-name with the Public
privilege, allowing all users to access the Application Sign-On Security form where
they must enter a valid Oracle Applications user-name and password.

(ii)Applsys:
The installation process registered the Oracle Application Object Library ORACLE
user-name with the Applsys privilege.
Default Oracle User-Names in oracle apps

Oracle R12 - AOL by Dinesh Kumar S 20


Data Group

Table: FND_DATA_GROUPS
~ DATA_GROUP_ID

Navigation Security Oracle DataGroup

21
FND user

Responsibility

Data Group Request Group Menu

Application

Concurrent Prog. Form & Sub functions


Oracle Schema Executable

Forms
Data Group contains -
Applications associated with user names

Application includes -
Concurrent programs executes commands on application table

how to access application -


By using 'Username' && 'Password'

Role of username /ORACLE ID -


It determines the database tables and table privileges accessible by the corresponding application or
applications.

Oracle ID -

An application uses an ORACLE ID to access tables in the database. Each ORACLE ID allows
access to a predefined set of tables in the database.

Data Group
|
Application (owns Concurrent pg)
|
Oracle Username ( DB Privilages - Select, Update, Delete )
|
Database ( Oralce 9i/10g/11g )
Data Group Purpose -

Identifies Oracle user name when forms Connect to when you select responsibility.
Concurrent managers use a data group to match the application that owns a
report or concurrent program (submitted by a user of the responsibility) with a Oracle
username.

Using Data Group -

Using Data Group with Multiple Set of Books


Applications product (for example, Oracle Parables) that supports multiple sets
of books, where a differentapplication is associated with each set of books.

For example, with two installations of Oracle Payables supporting two Sets of
Books, use data groups to indicate which Oracle Payables Oracle username to
access from a certain General Ledger responsibility.

Using Data Group to Include Custom Application


Can we Modify standard Data Group -

No, we cannot change / Delete Pre defined Values.


we can modify the Tool ORACLE username and description, or add new
Application- ORACLE username pairs to a Standard group.

Can we Define a new Data Group -

Yes, also you can copy a Data Group by defining new name.

How do we associate a new Application with a Data Group -


Register the application using "Application form".

Assign Oracle Usearname with Application.
Standard Data Group associated with Oracle ID APPS
Request Security Group (Or) Request Group

Table: Navigation: Security > Responsibility > Request


FND_REQUEST_GROUPS
~ APPLICATION_ID
~ REQUEST_GROUP_ID

27
FND user

Responsibility

Data Group Request Group Menu

Concurrent Prog.

Application Executable Form & Sub functions

Oracle Schema Forms

Oracle R12 - AOL by Dinesh Kumar S 28


Request Security -
Used to specify reports, request sets & Concurrent programs

How to setup Request security -


By defining a "request Group"

Where 2 define -
Request Group form

Where 2 assign -
In Responsibility form

What Request Security Group Contains -


Reports, request sets & Concurrent programs

Is Request Security Group Contains requests & request sets frm diff. application -
yes, using Data Groups

Is user can run request sets with single request not in Request Security group -
yes, If and only if the Request Set is in Request security group

Restriction:
- user cannot edit requests
- user cannot stop specific request while running
- Can edit request set by deleting requests but not single request
what do Request Group contains -
- Individual reports & Concurrent programs
- Request set ( Collection of reports & Concurrent pgs )
- Request set stage fns. ( Used to calculate status of stage withing request set )

Request group Levels -


(a) Responsibility Level
Request group assigned to "RESPONSIBILITY"
(b) Form Level
Request group assigned a "CODE" & that code is passed as a parameter in submit
request wiundow.

Using Codes in Request Group -


You can use the code as an argument passed from a menu to the
standard submission form.

A request group code is simply an argument that is passed from a menu to a customized
standard submission form

When a menu that calls the standard submission form uses the
code, that form lists only those programs in the request group
identified by the code.

Oracle R12 - AOL by Dinesh Kumar S 30


SUMMARY::

Request Security -
Used to specify reports, request sets & Concurrent programs

Request Security Group -


When a request group is assigned to a responsibility, the request group is referred to as a request security
group.

31
Menus

Table: FND_MENUS
~ MENU_ID Navigation: Application > Menu
FND user

Responsibility

Data Group Request Group Menu

Form & Sub functions

Forms

Oracle R12 - AOL by Dinesh Kumar S 33


Application Concurrent Prog.
Executable

Oracle Schema

Oracle R12 - AOL by Dinesh Kumar S 34


Menus:

A menu is a hierarchical arrangement of functions and menus of functions.


Each responsibility has a menu assigned to it.
A Responsibility becomes "Full Access", when it includes all the per-
defined functions in application included in the menu attached.
As it follows a hierarchical structure, a sub menu should be defined first
(Lowest level sub-menu) and attached to main menu.

Sequence:

It specifies the sequence in which the menu entries are aligned.


A menu entry with lowest sequence number appears before menu with
higher sequence number.

To understand the menu, we will navigate menu of Purchasing Module.


Purchasing Module
To view the hierarchical structure click "View Tree"
37
Web Based
Functions

Form
Functions

Oracle R12 - AOL by Dinesh Kumar S 38


Level 1

Level 2
Level 3
Form Functions

Oracle R12 - AOL by Dinesh Kumar S 41


Table: FND_FORM_FUNCTIONS
~ FUNCTION_ID

FND_FORM_FUNCTIONS_TL
~ FUNCTION_ID
~ LANGUAGE

FND_FORM
~ APPLICATION_ID
~ FORM_ID

FND_FORM_TL
~ APPLICATION_ID
~ FORM_ID
~ LANGUAGE

Navigation: Application > Function

Oracle R12 - AOL by Dinesh Kumar S 42


FND user

Responsibility

Menu
Data Group Request Group

Application Concurrent Prog. Form & Sub functions


Executable

Oracle Schema Forms


Now lets walk through the below functions in
purchasing module

1) PO Change History (Non Form Based)


2) Purchase Order (Form Based)

Root Menu : Purchasing Super User GUI


Purchase Order (Form Based)

Sub Menu: Purchase Orders: Subfunctions


Now we have identified the form function "Purchase Orders"

What is a Function?

Oracle R12 - AOL by Dinesh Kumar S 46


- A function is a part of an application's functionality that is registered under a unique
name for the purpose of assigning it to, or excluding it from, a responsibility.

Types of Functions
~ form functions
~ non-form functions

We always refer

Form Functions --> FORM


Non-Form Functions --> Sub-Functions

Oracle R12 - AOL by Dinesh Kumar S 47


FORM Blocks::

DESCRIPTION-

Function :
Users do not see this unique function name. However, you
may use this name when calling your function pro-grammatically

User Function Name :

Enter a unique name that describes your function. You see


this name when assigning functions to menus. This name appears in the
Top Ten List of the Navigator window.
PROPERTIES-

Type :
Type is a free-form description of the function's use (function type will
be validated in a future version of this form). A function's type is passed back
when a developer tests the availability of a function. The developer can write code
that takes an action based on the function's type.
Maintenance Mode Support:
Reserve for Future.

Context Dependence :

Some functions are controlled by profile options, that affect what the user can
perform within the current context. context dependence are Responsibility,
Organization, Security Group, None.
Form-

Form /Application :
If you are defining a form function, select the name and application of your
form.

Parameters :
Enter the parameters you wish to pass to your function. Separate parameters
with a space.

For a form function, if you specify the parameter QUERY_ONLY=YES, the


form opens in query-only mode. Oracle Application Object Library removes
this parameter from the list of form parameters before opening the form in
query-only mode.
Non Form Based Function: Sub Function

Oracle R12 - AOL by Dinesh Kumar S 50


51
Oracle R12 - AOL by Dinesh Kumar S
WEB HOST-
Host Name :
The URL (universal resource locator) or address required for your function consists of three
sections: the Host Name, Agent Name, and the HTML Call. The Host name is the IP address or alias of
the machine where the Web server is running.

Agent Name :
The second section of your function URL is the Oracle Web Agent. The Oracle Web Agent determines
which database is used when running your function. Defaults to the last agent used.

Icon :
Enter the name of the icon used for this function.

Secured :
Secured is only required when your function is accessed by Oracle Work flow Checking Secured
enables recipients of a work flow E-Mail notification to respond using E-Mail.

Encrypt Parameters:
Oracle R12 - AOL by Dinesh Kumar S 52
Checking Encrypt Parameters adds a layer of security to your function to ensure that a user cannot access
your function by altering the URL in their browser window.

Oracle R12 - AOL by Dinesh Kumar S 53


Responsibility
Table: FND_RESPONSIBILITY
~ Application_ID
~ Responsibility_ID
FND_RESPONSIBILITY_TL
~ Application_ID
~ Responsibility_ID
~ Language

53
FND user

Responsibility

Data Group Request Group

Men

Application Concurrent Prog. Form & Sub functions


Executable

Oracle Schema Forms

Oracle R12 - AOL by Dinesh Kumar S 54


Why?
- It determines user
- access Oracle application or Self service web application
- which function, reports, concurrent program user can run.

About-
- Application Name and Responsibility name uniquily identifies the responsibility.
- Responsibility Key: unique name for a responsibility that is used by loader programs.
- A responsibility can be associated with only one Application.

Mandatory Fields:

- Effective Date From


- Data Group
- Name
- Application
- Menu
Menu Exclusions:
- The rules to restrict the application functionality accessible to a responsibility.

Type

- 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.

HTML-Based Applications Security:


Oracle HTML-based applications use columns, rows and values in database tables to
define what information users can access.

Attribute Control:

Attributes are controlled by using


- Securing Attributes
- Exclude Attributes
why Attribute control:
By using securing and excluding attributes, you can control user's access to data based on
their ID and their responsibility.

where?
They are first defined using the Web Applications Dictionary.

Attribute Security is applied @ 2 levels

(a) ROW LEVEL (Securing Attributes)


(b) COLUMN LEVEL (Excluding Attributes)

Securing Attributes for Row-Level Security:

Securing attributes allow rows (records) of data to be visible to specified users or


responsibilities based on the specific data (attribute value) contained in the row.

Excluding Attributes for Column-Level Security:

Excluding attributes prevent certain columns of data from being visible to specified
responsibilities.
Seeded Securing Attributes:
Attributes are defined using the Web Applications Dictionary.
Assign securing attribute values for each user, and for each securing
attribute assigned to all responsibilities for this user.

Seeded Securing attributes are assigned at two levels


(1) User Level
(2) Responsibility Level

Example: @ User level.


By default when an supplier/ contact / User is created Securing attribute is created
automatically.

Customer Contact: ICX_CUSTOMER_CONTACT_ID


Internal Contact: ICX_HR_PERSON_ID
Supplier Contact: ICX_SUPPLIER_CONTACT_ID

For more information on Securing attributes please visit below link

http://download.oracle.com/docs/cd/A60725_05/html/comnls/us/aic/icxhsecr.htm
Oracle Application Responsibility:
Web Application

Oracle R12 - AOL by Dinesh Kumar S 60


Users

Table: FND_USER
~ USER_ID
Application Concurrent Prog. Form & Sub functions
Executable

Oracle Schema Forms

Oracle R12 - AOL by Dinesh Kumar S 62


FND user

Responsibility

Data Group Request Group Men

Oracle R12 - AOL by Dinesh Kumar S 63


Why Users -
An application user enters this user name to sign on to Oracle Applications

User-name Constraints -
must not contain more than one word
use only alphanumeric characters

Password Constraints -
5 - 100 Characters
use only alphanumeric characters

Can we define same user again -


No,

First time login -


User need to change the password

Can System administrator access User Password -


can set an initial password or change an existing password, but cannot access the
users chosen password.

default Length of Password -


5 characters
Profile Options::

1) Signon Password Length - set the minimum length of user password


2) Signon Password Hard to Guess
- Use to Set rules for Choosing password. The rules as below.
The password contains at least one letter and at least one number.
The password does not contain the username.
The password does not contain repeating characters.
3) Signon Password No Reuse profile option-
-set the minimum number of days that a user must wait before being allowed
to reuse a password.
4) Signon failure limit
- Number of times user is allowed to enter invalid credentials.
5) sign-on:audit level
- Tracking User activities

Direct Responsibilities -
Direct responsibilities are responsibilities assigned to the user directly.
Responsibility
Select the name of a responsibility you wish to assign to this application user. A
responsibility is uniquely identified by application name and responsibility name.

Security Group
This field is for HRMS security only.

Can we Delete a Responsibility


You cannot delete a responsibility because this information helps to provide an audit trail.
You can deactivate a user's responsibility at any time by setting the End Date to the
current date.
Oracle R12 - AOL by Dinesh Kumar S 67
Executable

Table: FND_EXECUTABLES
~ APPLICATION_ID
~ EXECUTABLE_ID
FND user

Responsibility

Data Group Request Group

Men

Application Concurrent Prog. Form & Sub functions


Executable

Oracle Schema Forms

Oracle R12 - AOL by Dinesh Kumar S 70


Why?
To Map executable source file you want to use with concurrent programs.

Source File <---> Concurrent Program

How executable is Identified?


Application Name + Program Name = Executable

Execution Method-
The execution method cannot be changed once the concurrent program executable has
been assigned to one or more concurrent programs in the Concurrent Programs window.
The possible execution methods are:

Host The execution file is a host script.


Oracle Reports The execution file is an Oracle Reports file.
PL/SQL Stored Procedure The execution file is a PL/SQL stored
procedure. Java Stored Procedure The execution file is a Java stored
procedure.
Java Concurrent Program The execution file is a program written in Java.
Multi Language Function The execution file is a function (MLS function) that supports
running concurrent programs in multiple languages.
SQL*Loader The execution file is a SQL script.
SQL*Plus The execution file is a SQL*Plus script.
Spawned The execution file is a C or Pro*C program.
Immediate The execution file is a program written to run as a
subroutine of the concurrent manager. We recommend
against defining new immediate concurrent programs,
and suggest you use either a PL/SQL Stored Procedure
or a Spawned C Program instead.
Request Set Stage Function PL/SQL Stored Function that can be used to calculate the
completion statuses of request set stages.
Execution File Name-

Name of the source file. Constraints in naming.


- Name entered here should match the file name exactly.

.
- Do not include spaces or periods ( ) in the execution file name, unless the execution
method is PL/SQL stored procedure or Request Set Stage Function.
- The maximum size of an execution file name is 60 characters.

Subroutine Name -

Enter the name of your C or Pro*C program subroutine here. Constraints as below
- Do not use spaces or periods (.) in this field.
- Only immediate programs or spawned programs using the Unified C API use
the subroutine field.

Stage Function Parameters -

The Stage Function Parameters button opens a window that allows you to enter
parameters for the Request Set Stage Function. This button is only enabled when you
select Request Set Stage Function as your Execution Method.
Lets Consider a sample Oracle Report Executable

Location:

74
Oracle R12 - AOL by Dinesh Kumar S
Concurrent Program
Table: FND_CONCURRENT_PROGRAMS_TL
FND_CONCURRENT_PROGRAMS ~APPLICATION_ID
~APPLICATION_ID ~CONCURRENT_PROGRAM_ID
~CONCURRENT_PROGRAM_ID ~LANGUAGE
FND user

Responsibility

Data Group Request Group

Men

Application Concurrent Prog. Form & Sub functions


Executable

Oracle Schema Forms

Oracle R12 - AOL by Dinesh Kumar S 76


Concurrent Manager

Why?
It govern and control the Concurrent program and slave concurrent managers.

How many Concurrent Managers?


The Oracle e-Business suite has three important master Concurrent Managers:
1) Internal Concurrent Manager (ICM)
2) Internal Concurrent Manager (SM)
3) Conflict Resolution Manager (CRM)

Internal Concurrent Manager (ICM)-

The master manager is called the Internal Concurrent Manager (ICM) because it
controls the behavior of all of the other managers, and because the ICM is the boss, it
must be running before any other managers can be activated.

The main functions of the ICM are to start up and shutdown the individual concurrent
managers, and reset the other managers after one them has a failure.
Standard Manager (SM)

The SM functions to run any reports and batch jobs that have not been defined to run in
any specific product manager.

Examples of specific concurrent managers include the Inventory Manager, CRP Inquiry
Manager, and the Receivables Tax Manager.

Conflict Resolution Manager (CRM)

The Conflict Resolution Manager (CRM) functions to check concurrent program


definitions for incompatibility rules. However, the ICM can be configured to take over the
CRM's job to resolve incompatibilities.

How to know ICM is started or not?

Using the OAM (Administrate Concurrent Manager).


Navigation: Login to the E-Business Home Page -> System Administrator -> Concurrent :
Manager/ Administer

How to start & stop the ICM ?

Log into Unix to apps login.


START Command: adcmctl.sh start apps/apps
Oracle R12 - AOL by Dinesh Kumar S 78
STOP Command: adcmctl.sh stop apps/apps
Navigation: Application Developer > Concurrent: Program

concurrent program window

Short Name: used to associate your concurrent program with a concurrent program
executable.

Application: determines what ORACLE user name your program runs in and where
to place the log and output files.

Enable: determines what ORACLE user name your program runs in and where to place
the log and output files.

Oracle R12 - AOL by Dinesh Kumar S 79


Executable:
When the execute is selected automatically this section will be filled.

Executable: Options
In case of running Report Executable, we can choose options to print like Landscape /
portrait (or) we can control the dimension like pagesize etc.

Executable: Priority
The concurrent managers process requests for this program at the priority you assign
here.

If you do not assign a priority, the user's profile option Concurrent:Priority sets the
request's priority at submission time.

Oracle R12 - AOL by Dinesh Kumar S 80


Request Block

Request: Type
Associate your program with a predefined request type. The request type can limit which
concurrent managers can run your concurrent program.

Request: Incrementor
Used only by oracle internal developers.

MLS Function: (Multilingual Concurrent Request)


It will allow the user to run the program multiple times.

Why Multiple times either we can schedule the concurrent program? this question arise to us.
Multiple times in this context means in multiple languages. So a single program can run in multiple
language.
Note**
Beginning with Release 12.1, MLS fOunracctlieoRn1s2c-aAnOsLubpypDoirntesmh uKlutimplaer Sterritories
and numeric character 81
sets as well as multiple languages.
Request: Check box Options

SRS:
If a user wants to run Concurrent program in Standard Request Submission window, this options is
mandatory.

Allow Disabled Values:


Its options, If SRS is selected we can use this if needed.
This allows user to enter disabled/outdated values as parameters.

Run Alone:
If your program is incompatible with all programs in its logical database, including itself this option can
be choose

Enable Trace: This is a Trace option.

Restart on System Failure:


This option is selected by default, this is used when concurrent program should automatically be
restarted when the concurrent manager is restored after a system failure.

NLS Compliant:
This allows user to run concurrent prOorgacrlaemR1d2e-
fAinOeLdbiynDdiinffeeshreKnutmtearrrSitory/Country. If this option is blank82 then territory will default to
the territory of the concurrent manager environment.
Output
Window

Format:Valid output format are below.


HTML
PCL (HP's Printer Control Language)
PDF
PS (Post Script)
Text

Note**
An appropriate printer driver that handles HTML or
PDF files.

Save: Default option, this will save the output in OS format.

Print:
To send the output to printer to print the same.

Style:Portrait/Landscape options.

Printer:If u want to print the output to a specific printer choose this option.

Business Events Region


Concurrent programs can be integrated with the Business Event System in Oracle Workflow.

Oracle R12 - AOL by Dinesh Kumar S 83


Concurrent Program Parameters:
84
Conflict Domain:

If you want to restrict any data which cannot be simultaneously access or update by two
concurrent program conflict domain data should be mention.

Conflict domain data can be created in the form

Navigation: System Administrator Concurrent Conflict Domains

Security Group:

This filed can be used only for HRMS security.

Seq: To Specify the sequence in which program receives input values from
concurrent manager.

Parameter: The parameter variable name.


Description: Description of the parameter (or) detail info about the parameter.

Enabled: If a parameter is disabOleradcleitRw12il-l AnOoLt bbyeDvinisesihbKleumdaurrSing


concurrent program 85
submission.
Value set::

If a parameter to be validated, a value set can be used. We can use only 3 types of
value sets.

i. Independent
ii. Table
iii. Non-Validated

Since value set field is mandatory, what should be the value to be provided if no
validation required for the parameter?
For a non-validated parameter we can assign Default Value.

Oracle R12 - AOL by Dinesh Kumar S 86


Default value::

Valid Values Description


Constant Any literal value we can assign.
Profile The default value will be taken from user profile.
SQL Statement Value based on any SQL query returning single value.
Segment Same value will be copied from the prior segment of
parameter window.

Required: To make the parameter mandatory for the request this option is used.

Enable Security: If security rules enabled for the value set this option can be used.

Range: If we want to validate the parameter against another parameter we need to provide
range as low or high.

For Example, If we want to end date an employee record, we have 2 date parameters,
then we need to do following validation for Effective_Start_date. Set range to low
with respective to Effective_End_Date.
Display Size: This represents the field length of the parameter in request submission
window. By default all value sets have 240 chars as length. If more than that the
characters will be truncated.

Description: Value description of the parameter.

Concatenated Description Size: User see this value in the parameter description
window.

Token:

This is one of the important parameter when the execution file is of type reports. The
parameter name defined in the RDF should be given in this field.
Monitoring Requests

Navigation: System Administrator Requests


In request window following actions can be performed.
VIEW - View the status of your submitted requests
CHANGE - Change processing options
DIAGNOSE - Diagnose errors
OUTPUR - View your request output

Concurrent Program Phase Codes

SELECT lookup_code,
meaning
FROM fnd_lookup_values
WHERE lookup_type =
'CP_PHASE_CODE' AND
LANGUAGE = 'US'
AND enabled_flag = 'Y';
LOOKUP_CODE MEANING
Dinesh Kumar S 90
Oracle R12 - AOL by
C Completed

I Inactive

P Pending

R Running
Value Meaning
Concurrent Program Status Codes U Disabled

SELECT lookup_code, W Paused


meaning FROM X Terminated
fnd_lookup_values Z Waiting
WHERE lookup_type =
'CP_STATUS_CODE' AND M No Manager
LANGUAGE = 'US' Q Standby
AND enabled_flag = 'Y'; R Normal
S Suspended
T Terminating
Information about submitted requests can be found in D Cancelled
table: FND_CONC_REQ_SUMMARY_V E Error
F Scheduled
G Warning
H On Hold
I Normal
A Waiting
B Resuming
C Normal
Oracle R12 - AOL by Dinesh Kumar S 91
Submitting a Requests:

92
Two Types of Requests:

Single Request
Request Set
Single Request

If we want to execute a single concurrent program, we need to select type as Single


request.

Request Set

If we want to execute multiple concurrent program one by one in a sequence order,


we need to create a Request set and submit it using this type.

It is possible we can pass one concurrent programs output as input to another


concurrent program.

Single Request Request Set

SE
Q
10
Oracle R12 - AOL by Dinesh Kumar S 93
20
30

Oracle R12 - AOL by Dinesh Kumar S 94


Request Sets:

Execution of multiple concurrent program one by one or in parallel, with passing one
program output as input to other program in sequence or executing in a sequence
order.

How to create Request set?

Step 1 Step 1 Step 1

Stage 1
Stage 2 Stage 3

Step 2 Step 2

Step 1: Creating Stages Step 2:


Steps to create Request Linking Stages
set
Create Request Set using (1) Request Set Wizard
2 methods (2) Manual Creation
Stage Organization:

Requests can be organized in two ways,

(1) Parallel Execution


(2) One by one [Sequence] Execution

Parallel Execution:

When we want to run all the requests simultaneously (or) in Parallel within a stage parallel
execution method is used.

Note** This should be used only,


- If the requests within a stage doesn't have any dependency with other like one request
executing based on output of another etc.

Stage 1

Request 1
Request 2
Request 3
Request 4
S 95

Oracle R12 - AOL by Dinesh Kumar


One by one [Sequence] Execution

When we want to run requests one by one in a sequence order, this execution
method is used.

Stage 1 Stage 2 Stage 3

Request 3
Request 1 Request 2 Request 4

Note**

Not only Requests executes in order even stages executes in order. Unless
stage1 is completed stage 2 & stage 3 will not be executed.

A stage is not complete when all the requests within the stage are completed.

Oracle R12 - AOL by Dinesh Kumar S 96


Stage Statuses:

A stage can be completed wit the following statuses.

(a) Success
(b) Warning
(c) Error

Linking Stages:
Based on the above statuses we can link stages (or) setup sequence of execution
of stages.
Stage 3
Error

Request 2
Stage 1

Request 1
Success
Request 3 Request 5
Request 4
Stage 4
Warning
Oracle R12 - AOL by Dinesh Kumar S 97
Stage 2
Creating Request Set:

Navigation: System Administrator Concurrent Set

Method 1: Using Request Set


Wizard. Method 2: Manual Creation.
Set: Define a name for your request set.

Set Code: This is used for internal purpose probably during coding.

Application: Specify the application to which request set belongs to.

Description: A brief description (or) Information about the request.


Owner: Its the user name who is defining the request set. It will be defaulted
automatically.

Active Dates [From To]: These are the dates for which the request set will be active.
If the TO field is left blank represents it will be active forever.

Print Together: If this check box is checked, after completion of the request, the
details of all the request [together] will be sent to printer for printing.

Allow Incompatibility: It will allow the system administrator to specify lists of programs
incompatible with this request set.
Oracle R12 - AOL by Dinesh Kumar S 99
Method 1: Using Request set Wizard

Step 1: Click Request Set Wizard Button

Step 2: Select execution option for requests to be executed. In this case I'm
selecting Sequential order.

100
Step 3: Select a Decision when the request sets ends with status ERROR. .

Step 4: Enter the details of the request set.. .


Step 5: Select option when Output should be generated for the request.

Step 6: Lists the concurrent programs in a sequence order of execution. Any concurrent
program of any application can be included.
Step 7: After clicking finish button, the following note will be displayed to the user.

Step 8: Request Set Created Successfully.


Step 8: View the default stage details. Click Define stages button.

Since we have define the request set using wizard, by default all the request will
be created in single stage.
Step 9: To view how stages are linked click Link Stages button.
By Default, when the Stage statuses in WARNING or SUCCESS,
the option Stage to Proceed to On will be defaulted to same program name.
Method 2: Manually Creating Request set

Considering the same programs in method 1. This time we are going to define separate
stage for each programs.

Stage 1
Stage 2 Stage 3

Stage 1: Buyer Listing.


Stage 2: Buyer's Requisition Action Reminder.
Stage 3: Item Detail's Listing.

Oracle R12 - AOL by Dinesh Kumar S 106


Step 1: Enter Request Set Details.
Step 2: Define Stages
Step 3: Assigning Request/Concurrent Program for the Request in a stage.
Click Requests button.
Step 4: Similarly repeat steps 2 to Step 3 to Define all Stages and associate programs for
each request.

Stage 2 110
Stage 3

Oracle R12 - AOL by Dinesh Kumar S

111
Step 5: Link Stages by clicking Link Stages button.

If Stage 1 is success, it will execute stage 2.


If stage 2 is success, it will execute stage 3.
Step 6: Assign Request set to a Request Group.
Scheduling Requests / Request Sets

The request or request set can be scheduled using SYSTEM ADMINISTRATION


Responsibility.

Navigation:

Requests:

System Administration Request Set Schedule

Request Set:

System Administration Requests Schedule.

We can manage the schedules using System Administration responsibility.

Navigation: Manage Schedules

Oracle R12 - AOL by Dinesh Kumar S 113


Step 1: Select a Request to schedule.

Step 2: Select application name.


Step 3: Defining Scheduling details.

If you want to
execute the
request
immediately click
option As soon
as possible.

115
Step 4: Set Schedule Status Notification.

In case of Normal Completion, Warning or Error, a notification will be sent to


the Oracle User Email Address.

Oracle R12 - AOL by Dinesh Kumar S 116


Step 5: Request Output Delivery.

If the request output to be transmitted via Fax,Email, printer etc. the details
needs to be defined here.
Step 6: Schedule Summary Details [Review Page].

118
Profile Options:

What is User Profile option ?


A Profile option is set of values/options, which is used to direct the functioning of Oracle application.

Why Profile Option?


- To control & manage transactions and activities in oracle application.
- To make the Oracle application flexible in the way it functions.
- Provides option to define custom rules for users.

Usage of Profile options.

Scenario 1: We have 100 users defined in oracle application, Consider all users have responsibility
US Self Service Purchasing. Now we have a new requirement, out of 100 only 30 should access the
responsibility and the responsibility should not be end dated for 70 users.

Scenario 2: We all know that system administrator responsibility have Admin privileges to
create/define new objects in oracle application. Also, we can assign this responsibilities to any
number of users say 100. Now business came up with an requirement, we need to provide access to
only 20 users to assign secure responsibility to other users even though all have system admin
responsibility.

Scenario 3: Consider I have a Purchasing Buyer responsibility, I want to provide read only access
users should not have access to modify/change/edit anything using that responsibility.

Oracle R12 - AOL by Dinesh Kumar S 119


Scenario 4: Suppose we want to develop a customization and that custom logic should work only
for Organizations for which a custom profile is enabled at organization level. If we want to restrict
further within the Organization, we can restrict by setting the profile @ Responsibility level.

Oracle R12 - AOL by Dinesh Kumar S 120


Scenario 6: Consider in our manufacturing company, we have 1000 of customers who provides orders
frequently. In general, all the manufacturing company will have top level of customers. This
manufacturing company is using Oracle apps. In a manufacturing company we have lots of item
categories like high value items, mid-range items, low value items etc. Business came up with a
requirement, when any top level customer orders high value item the system should automatically
provide 15% discount for the customers. In this scenario we will define profile option common to top
level customers.

Scenario 7: Consider we have 20 requester s, who are given access to create requisitions. Now
business wants to provide access to each requester that they can only modify/change requisition
created by them and they should not be allowed to edit other requester s requisition..

Scenario 8: In oracle application we have a Debug functionality, suppose business wants to enable
this functionality only for Developers. This can be achieved via profile options.

Scenario 9: Consider, we have created a custom report, now business wants for execute this reports
only for certain organization. This can be achieved via profile options.

These are only some scenarios, we can use the profile option functionality to achieve any custom
functionality or even we can bypass oracle seeded functionality.

Oracle R12 - AOL by Dinesh Kumar S 120


Profile Types:

System Profile (Oracle Seeded Profile Options)


User Profile (Custom Profile created by user)

Profile Levels:

Site Level
Application Level
Organization Level
Responsibility Level
User Level

Profile Hierarchy:

(High) User --> Responsibility --> Organization --> Application --> Site (Low)
Level Level ID
Site 10001
Application 10002
Oracle R12 - AOL by Dinesh Kumar S 121
Responsibility 10003
User 10004
Server 10005
Organization 10006
How To Check If a Profile Option Is Set In Oracle Applications? (Ref. Note: 470102.1)

We can check in 3 ways,

(1) Option 1: Data Collection Set


(2) Option 2: Run Standard Concurrent Report
(3) Option 3: Using SQL Query

Option 1: Data Collection Set

1.Login to Oracle E-Business Suite

2.Select the responsibility "Oracle Diagnostics Tool" (see Note 358831.1


for details)

3.Select application "Oracle Application Object Library" from


the "Application" list of values

4.Click the "Advanced" tab


5.Scroll down to group "Data Collection"
O ra c le R12 - AOL by Dinesh Kumar S 122
6. Select test name "Profile Optio n s "
7.Input Parameters (*
required) Responsibility Id
(LOV) * Language Code *
Search Option *
Search Value *

8.Output contains
Product Installation Status and Patchset Level
Site Level Profile Options
Application Level Profile Options
Responsibility Level Profile Options
User Level Profile Options
References

Option 2: Run standard Concurrent Report

Run the standard concurrent report "User Profile Option Value" available from the "System
Administrator" responsibility.

Oracle R12 - AOL by Dinesh Kumar S 123


Option 3: Using SQL Query

SELECT po.user_profile_option_name,
po.profile_option_name "NAME"
,
DECODE (TO_CHAR (pov.level_id), '10001', 'SITE' , '10002', 'APP', '10003',
'RESP', '10004', 'USER', '???') "LEV",
DECODE (TO_CHAR (pov.level_id) , '10001', '', '10002',
app.application_short_name , '10003', rsp.responsibility_key, '10004', usr.user_name, '???')
"CONTEXT",
pov.profile_option_value "VALUE"
FROM fnd_profile_options_vl po,
fnd_profile_option_values pov,
fnd_user usr,
fnd_application app,
fnd_responsibility rsp
WHERE (po.profile_option_name = upper('&profil_name'))
AND pov.application_id = po.application_id
AND pov.profile_option_id = po.profile_option_id
AND usr.user_id(+) = pov.level_value
AND rsp.application_id(+) = pov.level_value_application_id
AND rsp.responsibility_id(+) = pov.level_value
AND app.application_id(+) = pov.level_value
ORDER BY "NAME", pov.level_id, "VALUE"
How To List E-Business Suite Profile Option Values For All Levels Using SQLPlus?
(ref Note: 201945.1 )

1. Enable Spooling
2. Execute the script

set long 10000


set pagesize 500
set linesize 160
column SHORT_NAME format a30
column NAME format a40
column LEVEL_SET format a15
column CONTEXT format a30
column VALUE format a40

select p.profile_option_name SHORT_NAME,


n.user_profile_option_name NAME,
decode(v.level_id,
10001, 'Site',
10002, 'Application',
10003, 'Responsibility',
10004, 'User',
10005, 'Server',
10006, 'Org',
10007, decode(to_char(v.level_value2), '-1', 'Responsibility',
decode(to_char(v.level_value), '-1', 'Server',
'Server+Resp')), Oracle R12 - AOL by Dinesh Kumar S 125
'UnDef') LEVEL_SET,
decode(to_char(v.level_id),
'10001', '',
'10002', app.application_short_name,
'10003', rsp.responsibility_key,
'10004', usr.user_name,
'10005', svr.node_name,
'10006', org.name,
'10007', decode(to_char(v.level_value2), '-1', rsp.responsibility_key,
decode(to_char(v.level_value), '-1',
(select node_name from fnd_nodes
where node_id = v.level_value2),
(select node_name from fnd_nodes
where node_id = v.level_value2)||'-'||rsp.responsibility_key)),
'UnDef') "CONTEXT",
v.profile_option_value VALUE
from fnd_profile_options p,
fnd_profile_option_values v,
fnd_profile_options_tl n,
fnd_user usr,
fnd_application app,
fnd_responsibility rsp,
fnd_nodes svr,
hr_operating_units org
where p.profile_option_id = v.profile_option_id (+)
and p.profile_option_name = n.profile_option_name
Oracle R12 - AOL by Dinesh Kumar S 126
and upper(p.profile_option_name) in ( select profile_option_name
from fnd_profile_options_tl
where upper(user_profile_option_name)
like upper('%&user_profile_name%'))
and usr.user_id (+) = v.level_value
and rsp.application_id (+) = v.level_value_application_id
and rsp.responsibility_id (+) = v.level_value
and app.application_id (+) = v.level_value
and svr.node_id (+) = v.level_value
and org.organization_id (+) = v.level_value
order by short_name, user_profile_option_name, level_id, level_set;

Table Used:
FND_PROFILE_OPTIONS
FND_PROFILE_OPTIONS_TL
FND_PROFILE_OPTION_VALUES

Navigation: (Set up Profile)


System Admin Profile System
Navigation: (Create User
Profile) Application Developer
Profile

128
Name: A unique name given to a profile.

Application: The name of the application to which the profile to be


registered.

User Profile Name: This is the name your users see as their profile option.

Description: User can give the usage/purpose of the profile option (or) any
other note.

Oracle R12 - AOL by Dinesh Kumar S 129


Hierarchy Type:

Hierarchy types enable system administrators to group and set profile


options according to their business needs or the needs of the
installation.
The default hierarchy type is Security.

Types of Hierarchy:

Server
Server + Responsibility
Oracle R12 - AOL by Dinesh Kumar S 130
Organization
Security

Oracle R12 - AOL by Dinesh Kumar S 131


Hierarchy Type: Server

The Server hierarchy type is used when the system needs to determine the
server on which the user's session is running.

For Example, the profile "Applications Web Agent can be used for cookie
validation, the setting may be different for local servers and external
servers.

Hierarchy Type: Server-Responsibility

We can control the value of a profile option for a particular


combination of a server and responsibility.
Hierarchy Type: Organization

Organization refers to operating unit.


The Organization hierarchy type allows system administrators to set a
profile option at the organization level, so that all users within that
organization will use the profile option value set once at the organization
level.

Hierarchy Type: Security

Profiles that use the Security hierarchy type follow the traditional
hierarchy: Site
> Application > Responsibility > User.

Profiles using the Server type use the hierarchy: Site > Server >User.

Profiles using the Organization type use the hierarchy: Site > Organization >
User.
Hierarchy type Access level

Define the characteristics of your profile option at each profile level.


Depending on the hierarchy type you chose for your profile, you can define
the characteristics at the Site, Application, Responsibility, Server,
Server+Responsibility, Organization, and User levels.

Note** provide access to each option at the Site level

User Access

If you want your end user to be able to update profile option values in
the Profile Values window, you must provide user visible and updatable
access at the User level here.

Visible - Indicate whether your system administrator can see your profile
option while setting user profile option values for the specified profile level.

Updatable - Indicate whether your system administrator can change the


value of your profile option while setting user profile option values for the
profile level you select.
Hierarchy Type & its Access Levels
Active Dates

Enter the dates on which the profile


option becomes active/inactive.

SQL Validation

If you want your profile option to provide a list of values (LOV) the
following syntax to be used in the SQL Validation field.

To validate your user profile option, select the profile option value into the
fields.
i. :PROFILE_OPTION_VALUE
ii. :VISIBLE_OPTION_VALUE
Oracle R12 - AOL by Dinesh Kumar S 136
Syntax:

Lets discuss the syntax part by part

SQL:

A SELECT statement that selects the rows to display in your LOV.


In the SQL statement you can specify column aliases, use an INTO
clause to put values into form fields.
Display database values without selecting them into form fields (by
selecting values INTO NULL).
Mix values to put into form fields with display only values in the same INTO
clause

Oracle R12 - AOL by Dinesh Kumar S 137


If you specify more than one column in your COLUMN option, the LOV
displays the columns in the order you specify in your COLUMN statement

Column aliases cannot be longer than 30 characters. Larger identifiers will


cause errors.

The HEADING option overrides the COLUMN lengths and aliases.

SQL=SELECT FULL_NAME
,EMPLOYEE_NUMBER
INTO
:PROFILE_OPTION_VALUE
, :VISIBLE_OPTION_VALUE
FROM PER_ALL_PEOPLE_F
ORDER BY
EMPLOYEE_NUMBER"
Note**
You can use GROUP BY or HAVING clauses in your SQL statement, but only
in your main query; you cannot use them in sub-queries. You can use
DISTINCT and ORDER BY clauses as you would normally.

Set functions such as MIN(), MAX(), SUM(), and COUNT() can be used in the
SELECT or HAVING clause, but you cannot use them on the columns that
you select into the PROFILE_OPTION_VALUE or VISIBLE_OPTION_VALUE
fields.

Though you can use a fairly complex WHERE clause and/or an ORDER BY
clause in your SQL definition, you cannot use UNION, INTERSECT, or
MINUS in your main query. If you need a UNION, INTERSECT, or MINUS to
select the proper values, you should create a view on your tables, then
select from the view, or include these operators as part of a sub-query.

In addition, you cannot use a CONNECT BY or any other operation that


would come after the WHERE clause of a SELECT statement.

Finally, if you use OR clauses, you should enclose them in parentheses.


COLUMN:

Lists the names of columns (or column aliases) you want to display in
your LOV window, the order in which to display them, and their display
widths.

If you specify more than one column in your COLUMN option, your LOV
displays the columns in the order you list them. This order can differ from
the column order in your SQL statement.

You must specify column widths in the COLUMN= "..." parameter, although
any column widths you specify in the HEADING="..." option below override
these values.

You can specify static or dynamic column widths in your COLUMN option.

o Static column width by following the column name with the desired
width.

o Dynamic width column by placing an asterisk instead of a number


in the parentheses following the column name

Oracle R12 - AOL by Dinesh Kumar S 140


Put parenthesis while concatenating multiple columns,

SQL=SELECT (LAST_NAME || : || FIRST_NAME)


,EMPLOYEE_NUMBER
INTO
:PROFILE_OPTION_VALUE
, :VISIBLE_OPTION_VALUE
FROM PER_ALL_PEOPLE_F
ORDER BY
EMPLOYEE_NUMBER"

Static & Dynamic Column width,

SQL=SELECT FULL_NAME
,EMPLOYEE_NUMBER
INTO
:PROFILE_OPTION_VALUE
, :VISIBLE_OPTION_VALUE
FROM PER_ALL_PEOPLE_F
ORDER BY
EMPLOYEE_NUMBER
COLUMN= FULL_NAME(100) , EMPLOYEE_NUMBER(*)
Include Spaces in Column Alias,

put a backslash and double quotes before and after the column alias,
so that the LOV routine recognizes the double quotes as real double
quotes, rather than the end of your parameter.

SQL=SELECT FULL_NAME
,EMPLOYEE_NUMBER
INTO
:PROFILE_OPTION_VALUE
, :VISIBLE_OPTION_VALUE
FROM PER_ALL_PEOPLE_F
ORDER BY
EMPLOYEE_NUMBER
COLUMN= \EMPLOYEE NAME\(100)
TITLE:

Text you want to display centered and highlighted on the top line of your
LOV window i.e. the window title message.

We can specify a Message Dictionary token in your LOV definition by


providing the application short name and the message name.

Any title starting with "*" is treated as a Message Dictionary name, and the
message contents are substituted for the title.

Note**
SQL=SELECT FULL_NAME FND: is Application Short
,EMPLOYEE_NUMBER Name followed by
INTO message name.
:PROFILE_OPTION_VALUE
, :VISIBLE_OPTION_VALUE
FROM PER_ALL_PEOPLE_F
ORDER BY
EMPLOYEE_NUMBER
COLUMN= FULL_NAME(100) , EMPLOYEE_NUMBER(*)
TITLE=*FND:MESSAGE_NAME
HEADING:

Lets you specify a list of column headings and column widths, separated by
spaces or commas.
There should be one heading in the HEADING="..." parameter for
each column in the COLUMN="..." parameter.
We can suppress headings in your LOV window altogether by setting
HEADING="N".
If you do not provide an explicit TITLE and HEADING in your SQL validation,
your profile has TITLE="user_profile_option_name" and HEADING="N"
appended to the definition at runtime.

SQL=SELECT FULL_NAME
,EMPLOYEE_NUMBER
INTO
:PROFILE_OPTION_VALUE
, :VISIBLE_OPTION_VALUE
FROM PER_ALL_PEOPLE_F
ORDER BY
EMPLOYEE_NUMBER
COLUMN= FULL_NAME(100) , EMPLOYEE_NUMBER(*)
HEADING=*FND:MESSAGE_NAME(*)
Value Sets

Reference: Oracle Flexfield Guide


About Valueset:

Oracle Application Object Library uses values, value sets and validation
tables as important components of key flexfields, descriptive flexfields,
and Standard Request Submission.

We define value sets first, either before or while you define your flexfield
segment structures.

We can share/Use value sets,

Among segments in different flexfields


segments in different structures of the same flexfield
segments within the same flexfield structure.
Across key and descriptive flexfields.
Use value sets for report parameters for your reports that use the
Standard Request Submission feature.
Value Set Name: A unique name given by user

Description: User defined description about the purpose/usage of value set.

List Type:
Choose List of Values if your value set should not provide the
LongList feature in Oracle Forms applications.
Choose Long List of Values if your value set should provide the
LongList feature in Oracle Forms Applications.
This feature requires a user to enter a partial segment value before
the list of values retrieves all available values.
You may not enable LongList for a value set that has a validation type of
None.
Choose Poplist if your value set should not provide the LongList
feature in Oracle Forms applications, but should provide a poplist in
Oracle Self-Service applications.
Guidelines for List type field,

Poplist - fewer than 10 values expected


List of Values - between 10 and 200 values expected
Long List of Values - more than 200 values expected

Security Type:

Specify the Security Type you plan to use with any segments that
use this value set. Security does not apply to value sets of
validation type None, Special, or Pair.
Flexfield value security is not available for Translatable Independent
and Translatable Dependent value sets.

Security Types are,

1. No Security
2. Hierarchical Security
3. Non-Hierarchical Security
No Security

All security is disabled for this value set.

Hierarchical Security

Hierarchical security is enabled. With hierarchical security, the features


of value security and value hierarchies are combined. With this feature
any security rule that applies to a parent value also applies to its child
values.

Within a hierarchical tree of values, a value is subject to a security rule


if any parent above it is subject to that security rule.

Non-Hierarchical Security

Security is enabled, but the rules of hierarchical security do not apply.


That is, a security rule that applies to a parent value does not
"cascade down" to its child values.
Valueset usage:

Valueset can be associated with below Application objects,


KFF (Key flex fields)
DFF (Descriptive flex fields)
Concurrent Program Parameters

Oracle R12 - AOL by Dinesh Kumar S 150


Planning Values & Value Sets:

1) Choose Value format


2) Decide usage and need
3) Choose Validation Type
4) Plan to use Range features (value hierarchies, cross-validation rules,

security rules etc.) Step 1: Choosing Value format


Below are the different formats
available,

)
Character
)
Date
)
DateTime
)
Number
)
Time
)
Standard Date
)
Standard DateTime
Maximum & minimum value for the value set can be given.

Choosing the maximum size for your value set depends on what
flexfield you plan to use with your value set.

Oracle Applications does not allow you to assign a value set whose
values would not fit in the flexfield table.
This flow diagram
shows how
Valueset will
behave based on
the format
validation setups.
Step 2: Decide Usage and Need

Decide whether your users need a predefined list of values from


which to choose, or whether they can enter any value that fits the
value set formatting conditions.

If you want to provide a list of values, you choose from independent,


dependent, or table value sets.

If you do not want a list, use a non-validated (None) value set.

Once we have chosen to provide a list of values for a segment, then we


choose whether to use independent, dependent, or table validation.

Use a dependent set if you want your segment values to depend upon
the value chosen in a prior independent segment.
If we already have suitable values in an existing table, you should choose a
table set.
Value set Type compatibility chart with LOV
Step 3: Choosing a Validation Type

There are 6 validation types available for Valueset,

1. None (not validated at all)


2. Independent
3. Dependent
4. Table
5. Special (advanced)
6. Pair (advanced)

Note**
The Accounting Flexfield only supports Independent, Dependent, and Table validation.
We cannot change the validation type of an existing value set, since your changes affect
Table: FND_FLEX_VALUE_SETS

U Special
P Pair
I Independent
D Dependent
Y Transparent Dependent
X Transparent Independent
N None
F Table
None:

When you want to allow users to enter any value and it meets the
value set formatting rules.

Because a None value set is not validated, a segment that uses this
value set does not provide a list of values for your users.

A segment that uses this value set (that is, a non-validated


segment) cannot use flexfield value security rules to restrict
the values a user can enter.
Oracle R12 - AOL by Dinesh Kumar S 160
Independent:

It provides a predefined list of values for a segment.

These values can have an associated description.

The meaning of a value in this value set does not depend on the
value of any other segment.

Independent values are stored in an Oracle AOL table.


Table:

It provides a predefined list of values like an independent set, but its


values are stored in an application table.

use a table-validated set when you have a table whose values are
already maintained in an application table.

Table validation also provides some advanced features such as


allowing a segment to depend upon multiple prior segments in the
same structure.
Edit Information:
Dependent:

A dependent value set is similar to an independent value set, except that


the available values in the list and the meaning of a given value depend on
which independent value was selected in a prior segment of the flexfield
structure.
You must define your independent value set before you define the
dependent value set that depends on it.

6
Oracle R12 - AOL by Dinesh Kumar S 167
Edit Information:
Special and Pair Value Sets:
Special and pair value sets provide a mechanism to allow a "flexfield-
within-a-flexfield". These value sets are primarily used for Standard
Request Submission parameters.
We do not generally use these value sets for normal flexfield segments.
Special validation value sets allow you to call key flexfield user exits to
validate a flexfield segment or report parameter using a flexfield
withinaflexfield mechanism.
Or 9
Oracle Seeded Valueset: PO_SRS_ITEM

Oracle R12 - AOL by Dinesh Kumar S 170


Edit Information:
When you define a special validation value set, you specify two things:

Event : The event is the time when your function occurs.


Function: It is your call to a key flexfield user exit

For example, the Validate event occurs once a user enters a value,
and your
function would validate that value.

We can use a special validation value set to let your users enter an
entire key flexfield combination within a single segment of a
descriptive flexfield or report parameter.

For example, you may want to pass concatenated key flexfield segments
as a parameter to a report.

flexfield routines to perform flexfield data entry and validation functions


on segment values or report parameters.
Special Validation: Events

Valid events include,

Event Name Usage Statu


s
Edit when users cursor enters the segment in a data entry Activ
mode. e
You usually use POPID(R) for your Edit event.
Load Calls routine immediately after a query to populate your Activ
segment. e
You usually use LOADID(R) for your Load event.
If you have a Load event, you must have a nonnull ID
field (a field that contains the code combination ID
number) or data field (a field that contains the hidden
ID numbers corresponding to the values of a value set
that uses a hidden ID column).
If you have a Load event, you must use :!ID
(described below) with either an ID field or data field.
Your user exit passes the contents of :!ID to your
report or flexfield instead of the contents of :!VALUE
Event Name Usage Statu
s
Validate Calls routine whenever the users cursor leaves the Activ
segment or closes the popup window, (or) whenever a e
default value is copied into the segment or report
parameter.
The Validate event also fires after a query to
generate value descriptions for queried values.
You usually use VALID(R) for your Validate event.
Insert/Update Reserved for --
Future
Query Reserved for --
Future
Edit/Edit Reserved for --
Future
ListVal Reserved for --
Future
Special Validation: Function

Special validation provides several special arguments you can use to pass
values to and from the user exits,

:!ID
:!VALUE
:!MEANING
!DIR

:!ID
You can use :!ID to pass different information depending upon the
circumstances,
For flexfield routines, :!ID can pass either a combination ID
number of an entire combination of segment values (key
flexfields only)
It can pass a concatenated string of the individual flexfield segment
values (either key or descriptive flexfields).
When you use :!ID to pass a concatenated string of individual segment
values, :!ID should contain the hidden ID values.

For a foreign key flexfield when using VALIDATE=FULL


argument then, Use ID=:!ID argument
Not Use DATA_FIELD=:!ID
argument.

For a foreign key flexfield when using VALIDATE=PARTIAL (or NONE)


argument then, Use DATA_FIELD=:!ID
Not Use ID=:!ID argument

With the #FND POPIDR, LOADIDR, or VALIDR routines

for range flexfields, Use DATA_FIELD=:!ID


Not Use ID=:!ID
:!VALUE
Use :!VALUE to access the users input.
:!VALUE refers to the displayed values that appear in the flexfield
window and in the concatenated values field.
It contains the concatenated values for the flexfield your value set uses.

:!MEANING
Use :!MEANING to pass the concatenated descriptions of your flexfield values.
The value description appears as usual next to the flexfield
segment value and in the concatenated description field.

!DIR
Use !DIR for the NAVIGATE argument of key and descriptive flexfields routines.
!DIR allows the flexfields routines to determine the proper navigation
direction when you use a flexfield as a segment value set.
Do not use a colon when you specify !DIR for POPID or other flexfield
routines.
Example: (Reference Flexfield Guide)

Suppose you want to let your users pass a single combination of concatenated
Accounting Flexfield segments as a parameter to a report. To let your user choose a
single combination, you must provide a key flexfield window from within the
report parameters window on the Run Reports form.

To do this, you simply define a value set with Special validation and use your familiar
flexfield user exits.

Since you want to pass an existing combination (that is, you want to pass the ID
number of the combination) and this is a foreign key flexfield, you use
VALIDATE=FULL and the ID=:!ID argument. You do not use the DATA_FIELD=:!ID
argument.
Below Events are identified,

Data Entry
Data Query
Data Validation

179
Oracle R12 - AOL by Dinesh Kumar S 180
Pair Validation Valueset
Edit Information:
Example Pair Validation:

Suppose you want to let your users pass a range of concatenated Accounting
Flexfield segments as parameters to a report. For example, you want to let your
users request a report on all combinations where the second segment
value is between 001 and 101, inclusive.

To let your user choose such a range, you must provide a key flexfield range window
from within the report parameters window on the Run Reports form. To do this, you
simply define a value set with Pair validation and use your familiar
range flexfield user exits to pass a range of concatenated segment values.

For a range flexfield, you use VALIDATE=PARTIAL (or NONE). Since you use a
range flexfield, you cannot use the ID=:!ID argument. You do not use
DATA_FIELD=:!ID in this example (hidden ID value sets are not allowed with the
Accounting Flexfield), so you do not need a Load event.
Using Variables with Special and Pair Validation

Bind Variable Usage


:$FLEX$.value_set_name Retrieves a value (the hidden ID value, if a hidden
ID value is defined) in a prior segment.
:$PROFILES$.profile_option Retrieves the current value of a profile option. You
must specify the option name of the profile option,
such as GL_SET_OF_BKS_ID (which does not
contain the Accounting Flexfield structure
number).

:block.field Gets the current value in a field. You must ensure


that this value set is only used for forms that
have the same block.field.
:$FLEX$.Value_ Set_Name

Value_Set_Name is the name of either the value set for a prior segment. The
segment name of a prior segment in the same flexfield. Parameter window
that you want your validation table based values to depend on.

The $FLEX$ mechanism uses the closest prior segment with either a
matching value set name or segment name (it looks for the value set name
first, and uses the segment name second if there are no matching value set
names).

Value_Set_Name is casesensitive.

We can only use letters, numbers, and underscores (_) in your value set
names if you want to use them with a :$FLEX$.Value_Set_Name clause.

We cannot use quotes, spaces, or other special characters in these value set
names.

You can specify more than one :$FLEX$.Value_Set_Name in a single
WHERE clause, thereby creating a segment whose list of possible values
depends upon more than one previous segment.

When you specify :$FLEX$.Value_Set_Name, you can also explicitly choose


which column for which you want :$FLEX$.Value_Set_Name to return a value.
You do this by specifying :
$FLEX$.Value_Set_Name.OUTPUT, where OUTPUT can be ID, VALUE, or
MEANING (to return the
value of the description Oracle R12 - AOL by Dinesh Kumar S 186
column)
:block.field
block.field is the SQL*Forms/Oracle Forms name of a field on the form where
your descriptive flexfield appears.

Using this :block.field argument, however, gives you the same segments that
would normally appear, but changes the contents of the value set attached to
the segment depending on
what appears in your :block.field.

In some cases, you may wish to use a :block.field value set instead of a
descriptive flexfield reference field with many different contextsensitive
structures.

Note that if you use this argument, you must have the same :block.field on
every form where a value set based on this validation table could be used. For
example, if the same flexfield appears on seven forms, the all seven forms must
have this block.field.

Similarly, if you share your value set among more than one flexfield, then all
forms that use any of those flexfields must have this block.field.
Oracle R12 - AOL by Dinesh Kumar S 187
:$PROFILES$.profile_option

Profile_option_name is the internal option name of a user profile option such


as CONC_COPIES (for Concurrent:Report Copies) or GL_SET_OF_BKS_ID.

For example, you could define your WHERE clause as:

WHERE SET_OF_BOOKS_ID = :$PROFILES$.GL_SET_OF_BKS_ID

:NULL suffix
Use the :NULL suffix to make your bind variable optional, that is, allow null
values.
Instead of :block.field, :$PROFILES$.Option_name, or :
$FLEX$.Value_set_name, you would use
:block.field:NULL, $PROFILES$.Option_name:NULL, or :
$Flex$.Value_set_name:NULL, respectively.
For example, if your value set name is Car_Maker_Name_Value_Set, you
would use :
$FLEX$.Car_Maker_Name_Value_Set:NULL.
Flexfield

A flexfield is a field made up of subfields, or segments. A flexfield appears on your form


as a popup window that contains a prompt for each segment. Each segment has a
name and a set of valid values.

There are two types of flexfields:


(1) key flexfield
(2) Descriptive flexfield
Benefits of Flexfields
Flexfields provide you with the features you need to satisfy the following business needs:

Customize your applications to conform to your current business practice for accounting
codes, product codes, and other codes.

Customize your applications to capture data that would not otherwise be tracked by your
application.

Have "intelligent fields" that are fields comprised of one or more segments, where each
segment has both a value and a meaning.

Rely upon your application to validate the values and the combination of values that you
enter in intelligent fields.

Have the structure of an intelligent field change depending on data in your form or
application data.

Customize data fields to your meet your business needs without programming.

Query intelligent fields for very specific information.


Oracle R12 - AOL by Dinesh Kumar S 190
Key Flexfield

The Oracle Applications store these "codes" in key flexfields. Key flexfields
are flexible enough to let any organization use the code scheme they want,
without programming.

When your organization initially installs Oracle Applications, you and


your organization's implementation team customize the key flexfields to
incorporate code segments that are meaningful to your business.

To run a business we follow a structure in Finance, Inventory, HRMS etc. For


Example, consider Bajaj Motor Vehicles, their head office is in Delhi and it has
its other branches in Mumbai, Kolkata, Chennai and Bangalore. In each center
they have many branches say 100 branches each. Now lets ask some
questions to our self.

Is it possible for a person working in Delhi able to identify the


location in chennai? Practically it is not possible, because that person will
not be familiar with the names in chennai location.To avoid the confusion,
every business should have a structure created as below.
Delhi.Chennai.LOCATION_1
Now the person will easily identify the location. So based on the business
requirement the structure will be created.
Will all the Oracle application modules have flexfield and do we need
to create structure?

No, not all modules will have a structure or Key flexfield defined. Only Some
modules have KFF. When implementing Multi-Org you will be understanding it
better.
Navigation: SYS ADMIN RESP Application Flexfield Key Segments
Flexfield segments

Note** in all the base tables you can see Segment Columns where the flexfield value
will be stored.
Application: Name of the application in which flexfield is defined.

Flexfield Title: This is the Key Flexfield Name that belongs to the application General
Ledger.

For those application flexfields that support more than one structure (such as the multiple charts
of accounts in the Accounting Flexfield), you can create a new structure for your flexfield by
inserting a row. If you are defining the first structure for your flexfield, select the default flexfield
structure that appears automatically. If you are modifying an existing structure, use your cursor
keys to select the title of the flexfield structure you want.
Check the Enabled check box so that this structure may be used in your key flexfield. You cannot
delete structures from this window because they are referenced elsewhere in the system, but you
can disable them at any time. A structure must be enabled before it can be used.

Select the character you want to use to separate your flexfield segment values or descriptions. This
separator will appear whenever your application forms display concatenated segment values or
descriptions.

It is recommended that you do not use a character as your segment separator if you expect that
character to appear frequently in your segment values or descriptions.

If you do use a character that appears in your segment values or descriptions, then that character
will be preceded by a backslash (\) when it appears in a value or a description. A backslash in your
values will be preceded by another backslash.
Select the Cross-Validate Segments check box if you want to cross-validate
multiple segments using cross-validation rules. You can define cross-
validation rules to describe valid combinations using the Cross-Validation
Rules form. Uncheck the box if you want to disable any existing cross-
validation rules

Indicate whether you want to freeze your rollup group definitions. If you
do, you prevent users from modifying rollup groups using the Segment
Values form. You can freeze rollup groups before or after you define your
flexfield structure.

If you want to allow dynamic inserts, check the Allow Dynamic Inserts
check box. You would allow dynamic inserts of new valid combinations into
your generic combinations table if you want users to create new
combinations from windows that do not use your combinations table. You
should prevent dynamic inserts if you want to enter new valid
combinations only from a single application window you create to maintain
your specific combinations table.

You can update this field only if your application flexfield has been built
to allow dynamic inserts, and the flexfield has been defined in the
Register Key Flexfields form with Dynamic Inserts Feasible checked.
Otherwise this field is display only.

Compile your frozen flexfield by choosing the Compile button. Your


changes are saved automatically when you compile.
Key flexfield by Name:
Key flexfield by
Owing Application:
Descriptive Flexfield
Descriptive flexfields provide customizable "expansion space" on your forms. You can
use descriptive flexfields to track additional information, important and unique to your
business, that would not otherwise be captured by the form.

Descriptive flexfields can be context sensitive, where the information your application
stores depends on other values your users enter in other parts of the form.

A descriptive flexfield appears on a form as a single-character, unnamed field enclosed in


brackets. Just like in a key flexfield, a pop-up window appears when you move your
cursor into a customized descriptive flexfield.

DFF has 2 different types of segments,

Global segment is a segment that always appears in the descriptive flexfield


popup window.
Contextsensitive segment is a segment that may or may not appear
depending upon what other information is present in your form.

A descriptive flexfield can get context information from

Field in a form
From a special field (a context field) inside the descriptive flexfield popup
window.

A DFF requires one column for each possible segment and one additional column in which
to store structure information (that is, the context value). The descriptive flexfield
columns are usually named ATTRIBUTEn where
n is a
Oracle R12 - AOL by Dinesh Kumar S 200
number.
Enabling DFF in a Purchase Order form:

DFF

Oracle R12 - AOL by Dinesh Kumar S 201


Step 1: Know the details of the DFF

Navigation: Help Menu Diagnostics Examine

1 Input Apps Username


Password

2
Give the Block & field
values as given

3
Step 2: Enable the DFF

Navigation: SYS ADMIN Application Flexfield Descriptive Segments


Unfreeze the flexfield definition to
enable segment.
Step 3: Enter the segment information as below

Now save the changes.


Click OK
Note** if you want any validation to be enabled, assign a value set else
leave it blank as it is optional.
Step 4: Now freeze the flexfied after the changes.
Flexfield successfully compiled
Lets Query Purchase Order form

DFF Enabled
DFF Enabled
Hope this was a great learning

You might also like