Preface in This Book I Have Explained About A Complete Beginners Guide For Oracle Apps. Hope This Will Be A Great Start For Beginners
Preface in This Book I Have Explained About A Complete Beginners Guide For Oracle Apps. Hope This Will Be A Great Start For Beginners
Preface in This Book I Have Explained About A Complete Beginners Guide For Oracle Apps. Hope This Will Be A Great Start For Beginners
e-Business Suite
Client Tier
DB Tier
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.
IAS
Data 10.2.X APPL COMN 8.0.6 Server
Appl_Top
Oracle_Home Oracle_Home
Data_Top Oracle_Home (Apps Common_Top
Product Tech. Stack Tech. Stack
(DB Files) (Oracle DB 10g) files (Shared Files)
PO, INV, OM (Forms, Reports) (Apache, Jser)
etc.)
Roles of AOL
FND user
Responsibility
Responsibility
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.
We are creating a custom application to isolate custom code and/or data from
shipped Oracle Applications.
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.
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.
Table: FND_ORACLE_USERID
~ ORACLE_ID
Responsibility
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.
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 -
Why?
To restrict access to AOL features (menus, help text, and flex-fields) and its tables privilege is used.
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.
Two additional privilege types appear, associated with ORACLE user-names configured
at installation.
(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.
Table: FND_DATA_GROUPS
~ DATA_GROUP_ID
Responsibility
Application includes -
Concurrent programs executes commands on application table
Oracle ID -
Data Group
|
Application (owns Concurrent pg)
|
Oracle Username ( DB Privilages - Select, Update, Delete )
|
Database ( Oralce 9i/10g/11g )
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.
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.
Yes, also you can copy a Data Group by defining new name.
Responsibility
Where 2 define -
Request Group form
Where 2 assign -
In Responsibility form
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
Request Security -
Used to specify reports, request sets & Concurrent programs
Table: FND_MENUS
~ MENU_ID Navigation: Application > Menu
Responsibility
Sequence:
Form
Functions
Level 2
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
Responsibility
What is a Function?
- 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
DESCRIPTION-
Function :
Users do not see this unique function name. However, you
may use this name when calling your function pro-grammatically
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.
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 /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.
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:
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 52
Responsibility
Table: FND_RESPONSIBILITY
~ Application_ID
~ Responsibility_ID
FND_RESPONSIBILITY_TL
~ Application_ID
~ Responsibility_ID
~ Language
Responsibility
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:
Type
- When you exclude a menu, all of its menu entries, that is, all the functions
and menus of functions that it selects, are excluded.
Attribute Control:
where?
They are first defined using the Web Applications Dictionary.
http://download.oracle.com/docs/cd/A60725_05/html/comnls/us/aic/icxhsecr.htm
Table: FND_USER
~ USER_ID
Responsibility
User-name Constraints -
must not contain more than one word
use only alphanumeric characters
Password Constraints -
5 - 100 Characters
use only alphanumeric characters
Direct Responsibilities -
Direct responsibilities are responsibilities assigned to the user directly.
Security Group
This field is for HRMS security only.
Table: FND_EXECUTABLES
~ APPLICATION_ID
~ EXECUTABLE_ID
Responsibility
.
- 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.
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.
Location:
Responsibility
Why?
It govern and control the Concurrent program and slave concurrent managers.
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.
The SM functions to run any reports and batch jobs that have not been defined to run
in any specific product manager.
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.
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.
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.
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 functions can support multiple territories and numeric character
sets as well as multiple languages. Oracle R12 - AOL 81
Request: Check box Options
SRS:
If a user wants to run Concurrent program in Standard Request Submission window, this options
is mandatory.
Run Alone:
If your program is incompatible with all programs in its logical database, including itself this option
can be choose
NLS Compliant:
OracleR12 -AOLby Dinesh Kumar S
This allows user to run concurrent program defined in different territory/Country . If
82
this option is blank then territory will default to the territory of the concurrent manager environment.
Output Window
Note**
An appropriate printer driver that handles HTML
or PDF files.
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.
If you want to restrict any data which cannot be simultaneously access or update by
two concurrent program conflict domain data should be mention.
Security Group:
Seq: To Specify the sequence in which program receives input values from concurrent
manager.
Description: Description of the parameter (or) detail info about the parameter.
Enab led : If a par ameter is dis abl ed it will not be visibl e during c onc urrent progr am s ubmissi on.
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”.
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.
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.
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.
SELECT lookup_code,
meaning
FROM fnd_lookup_values
WHERE lookup_type = 'CP_PHASE_CODE'
AND LANGUAGE = 'US'
AND enabled_flag = 'Y';
LOOKUP_CODE MEANING
C Completed
I Inactive
P Pending
Single Request
Request Set
Single Request
Request Set
SEQ
10
20
30
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.
Step 2 Step 2
Parallel Execution:
When we want to run all the requests simultaneously (or) in Parallel within a stage
parallel execution method is used.
Stage 1
Request 1
Request 2
Request 3
Request 4
S 95
One by one [Sequence] Execution
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.
(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
Success Request 5
Request 1
Request 3 Stage 4
Warning Request 4
Oracle R12 - AOL by Dinesh Kumar S 97
Stage 2
Creating Request Set:
Set Code: This is used for internal purpose probably during coding.
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.
Since we have define the request set using wizard, by default all the request will
be created in single stage.
Considering the same programs in method 1. This time we are going to define
separate stage for each programs.
Stage 2
Stage 3
Navigation:
Requests:
Request Set:
If you want to
execute the
request
immediately click
option “As soon as
possible”.
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 i.e. users should not have access to modify/change/edit anything using that responsibility.
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 119
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 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.
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
Responsibility 10003
User 10004
Server 10005
Kumar S 121
Organization 10006
How To Check If a Profile Option Is Set In Oracle Applications? (Ref. Note: 470102.1)
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
Run the standard concurrent report "User Profile Option Value" available from the
"System Administrator" responsibility.
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"
1. Enable Spooling
2. Execute the script
Table Used:
FND_PROFILE_OPTIONS
FND_PROFILE_OPTIONS_TL
FND_PROFILE_OPTION_VALUES
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.
•
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
•
Organization
•
Security
Oracle R12 - AOL 130
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.
• We can control the value of a profile option for a particular combination of a server
and responsibility.
•
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.
•
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.
•
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.
• 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.
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
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
•
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"
• 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.
• 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
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(*) ”
Oracle R12 - AOL 141
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) ”
• 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.
•
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(*)”
Oracle R12 - AOL 144
Value Sets
• 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
•
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.
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.
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.
1. No Security
2. Hierarchical Security
3. Non-Hierarchical Security
Hierarchical Security
• 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.
•)
Character
•)
Date
•)
DateTime
•)
Number
•)
Time
•)
Standard Date
•)
Standard DateTime
•
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.
• 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.
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
all flexfields and report parameters that use the same value set.
• 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.
•
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.
• 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.
•
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.
•
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.
Validate • Calls routine whenever the user’s cursor leaves the segment or closes Active
the pop–up window, (or) whenever a 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.
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).
Oracle R12 - AOL 175
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=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
:!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.
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.
● Data Entry
● Data Query
● Data 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.
●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 case–sensitive.
●
●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 column) Oracle R12 - AOL 186
: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 context–sensitive 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.
: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.
●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.
●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.
Oracle R12 - AOL 191
Navigation: SYS ADMIN RESP → Application → Flexfield → Key → Segments
Note** in all the base tables you can see Segment Columns where the flexfield
value will be stored.
Oracle R12 - AOL 193
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.
●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.
● 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.
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.
● Global segment is a segment that always appears in the descriptive flexfield pop–up window.
● Context–sensitive segment is a segment that may or may not appear depending upon
● Field in a form
● From a special field (a context field) inside the descriptive flexfield pop–up 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 number.
Oracle R12 - AOL 200
Enabling DFF in a Purchase Order form:
DFF
1 Input Apps
Username Password
DFF Enabled
DFF Enabled