Flexfield FAQ

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 22

Chapter 9 Summary

This chapter is all about flexfields. It started out by giving an overview of


flexfields. Flexfields in Oracle Applications enable you to have a flexible
structure for some of the key information, such as Chart of Accounts, and can
facilitate a flexible structure to store additional information you want to
capture, beyond all the standard information. You can use flexfields to tailor
Oracle Applications to fit your unique business needs. Flexfields can have one
or more structures. Structures can have one or more segments. When you enter
a flexfield, you enter the segment values for every segment of a flexfield
structure. This is called a flexfield combination. You can assign a value set to
each segment to specify what kind of validation should be performed for each
segment.

There are two kinds of flexfields: Key flexfields and Descriptive flexfields. Key
flexfields provide the user with the ability to customize structure and
appearance, while Descriptive flexfields expand Oracle Applications processing
to capture additional information without added programming. Whenever you
see a [] field in a form, the [] represents the Descriptive flexfield and can be
expanded to capture additional information that otherwise is not tracked by
Oracle Applications.

A Key flexfield is stored in a separate combination table with a structure ID


column, unique identifier column, and segment value columns. Segment values
are stored in columns named SEGMENT1 to SEGMENTn, where n is the maximum
number of segments of the Key flexfield. Descriptive flexfields are not stored
in a separate table and are simply stored as part of the application table.
There is a context-sensitive column as well as segment value columns. Segment
values are stored in columns named ATTRIBUTE1 to ATTRIBUTEn, where n is the
maximum number of segments of the Descriptive flexfield.

Key flexfields and Descriptive flexfields have different features. Flexfield


qualifier, segment qualifier, shorthand flexfield entry, and cross-validation
rules only apply to Key flexfields, while context-sensitive structures only apply
to Descriptive flexfields.

Next, the chapter identifies Key flexfields and Descriptive flexfields used by
Oracle Applications. Key flexfields of the Financial Management modules
include Accounting flexfield, Asset Key Flexfield, Category Flexfield, Location
Flexfield, sales orders, system items, and Territory Flexfield. There are only 22
Key flexfields, but there are more than 900 Descriptive flexfields. Almost every
application table can have a Descriptive Flexfield.

Security rules are used to restrict segment values that your user can enter
during data entry. This is done via responsibility. Data entry includes using the
segment value in concurrent program parameters. The List of Values will only
display segment values that can be entered by your user. Security rules can be
applied to both Key flexfields and Descriptive flexfields. Cross-validation rules
are used to define valid combinations. Cross-validation rules define whether
segment values of a particular segment can be combined with other segment
values of other segments of the same Key flexfield. Cross-validation rules can
only be applied to Key flexfields.

Before you can define Key flexfields and Descriptive flexfields, you need to
implement value sets. There are six different validation options for value sets:
None, Independent, Dependent, Table, Special, and Pair. A None validation
option means no validation except format validation. Format validation
includes the maximum segment value size, precision, numbers only, uppercase
only, right-justify and zero-fill, as well as minimum values and/or maximum
values. An independent value set contains a list of predefined values stored in
the Application Object Library (AOL) FND_FLEX_VALUES and
FND_FLEX_VALUES_TL tables. A dependent value set contains a list of
predefined values based on an independent value set segment value. For each
independent value, there is a list of predefined dependent values. The
independent value set segment must be created prior to the dependent value
set segment. The values for the dependent value set are stored in the same
AOL tables.

When you define a dependent value set, you must specify the associated
independent value set and a default value. As the independent value is
entered, the default dependent value is automatically inserted into the
dependent value set for the newly entered independent value. Make sure that
the dependent default value follows the sequence of first creating the
independent value set, followed by the dependent value set. Next, define the
independent values, and, lastly, the dependent values.

The table value set validates segment values against an application table. You
can use the table name, column name, and Where/Order By clause, as well as
additional columns to perform advanced validation features. Independent value
set, dependent value set, and table value set all provide lists of values. A
special value set provides you with the ability to enter a flexfield for a single
segment of a flexfield—flexfield within a flexfield. A pair value set is very
similar to a special value set, except that a pair value set provides you with the
ability to enter a flexfield range for a segment of a flexfield. Both special and
pair value sets are used primarily for standard request submission concurrent
program parameters.

Issues you need to consider when planning a validation strategy include


maximum size, validation option, naming convention, format, and common
value set. After you set up a value set, you can only increase the maximum size
—you cannot decrease it. You cannot change the validation option of a value
set. You can only replace the old value set with the new value set of a
different validation option. You can safely change validation options from other
validation options to None, or exchange validation options from independent to
table, and vice versa. You only have to make sure that the existing segment
values also exist in the new value set. A dependent validation option, on the
other hand, cannot be switched to any other validation option except a None
validation option. If you need to enter a segment qualifier, since a segment
qualifier is only captured in the Define Segment Value form, the value set must
be of the independent value set and dependent value set. A naming convention
should be adopted to avoid value sets being replaced during upgrade. The
format needs to be planned since you cannot change it without running the risk
of invalidating existing data. Also, if you plan to share value sets, you must
identify them early.

Use the Define Value Set form to define value sets. First, enter all the format
validations and then input additional information for dependent value sets,
table value sets, special value sets, and pair value sets. When you define a
dependent value set, you need to enter the independent value set and the
default value. When you define a table value set, you must enter the table
name, column names (ID, value, meaning), Where/Order By clause, and
additional columns. If you enter an ID column, the ID will be stored as the
segment value. If you do not enter an ID column, the value will be stored as
the segment value. For special and pair value sets, you must enter events and
functions.

To implement multiple tables for a table value set, you can create a view that
joins the multiple tables or enters the multiple tables in the Table Name field
of the table value set.

After you define the value set, if the value set is of an independent or
dependent validation type, you need to enter allowable values through the
Define Segment Values form. When you enter values for a dependent value set,
you need to make sure that you are entering the dependent values for the
correct independent value. The Qualifiers field in the Define Segment Values
window will pop up to capture segment qualifiers if segment qualifiers are
defined. You can also define parent values in the Define Segment Values form.
You can delineate parent values for an independent value set, dependent value
set, and table value set. You can also use the Define Segment Value form to
define child ranges, move child ranges, or display the view hierarchy.

The chapter then talks about defining and planning Key flexfields. First, the
section explains what an intelligent key is. An intelligent key is a multiple
meaningful code combined together to form a meaningful key. Each intelligent
key is unique, and is used to identify a single entity. Intelligent keys facilitate
data entry but do not offer easy storage in the database. Next, the chapter
moves on to explain how Key flexfields bridge the gap between what intelligent
keys and unique identifiers can offer in terms of data entry and data storage by
storing both the intelligent keys and unique identifiers in a combination table.
For tables that reference the intelligent keys, these tables store only the
unique identifiers. When implementing Oracle Applications modules, you must
identify all the required Key flexfields that should be defined. The one Key
flexfield that is required for almost all modules is the Accounting Flexfield.

The discussion progresses to the additional features that you can implement for
Key flexfields. There are two kinds of qualifiers that you can associate with Key
flexfields: flexfield qualifier and segment qualifier. A flexfield qualifier tags a
particular segment that Oracle Applications associates functionality with, while
a segment qualifier tags a particular value for a segment. An example of a
flexfield qualifier is the balancing segment qualifier, and an example of a
segment qualifier is the account type for the natural account segment. There
are other optional Key flexfield features you can implement. They are dynamic
insertion, shorthand flexfield entry, flexfield value security, and cross-
validation rules.

If you implement dynamic insertion, when a user enters a new flexfield


combination, the flexfield combination will be validated against the cross-
validation rules. If the flexfield combination is valid, the combination will be
inserted into the combination table and the unique identifier will be stored in
the database table the user is utilizing to input data. If you allow dynamic
inserts, you may have more of a business need to cross-validate segments so
that invalid combinations will not be created. Not all Key flexfields allow
dynamic inserts. Category flexfield, item catalogs, item categories, and system
items do not allow dynamic inserts, since you need to enter other attributes for
the combination over and above the standard flexfield attributes.

If you enable shorthand flexfield entry, you can use shorthand aliases to enter
partial or complete flexfield combinations to speed data entry. If you want to
enable flexfield value security for a segment, enable security in that segment
definition. If you want to enable cross-validation, you must enable cross-
validating segments at the flexfield structure definition. If you freeze the
rollup groups, you cannot change the rollup groups assigned to the parent
values in the Define Segment Values form.

After you define your Key flexfield structure, you must freeze and compile a
flexfield structure before a user can access your newly defined or modified
flexfield structure. When you compile a flexfield structure, one or two views
will be generated. A combination table name with the _KFV suffix will always
be generated. It contains all the concatenated segment values across all the
Key flexfield structures of the Key flexfields you are compiling. If you have
specified a view name for the flexfield structure you are compiling, an
additional view with your specified view name will be generated with the
segment names as the column names and other flexfield-related columns.
When you plan for your Key flexfield structure, you should have a worksheet
that contains the flexfield title, description, view name, and segment
separator, and whether you want to cross-validate segments, freeze rollup
groups, or allow dynamic inserts. It should also delineate number of segments,
order of segments, segment names, segment lengths, and flexfield qualifiers.
In determining the number of segments and the segment lengths, you need to
consider how fast your company grows. For each segment, you should have a
worksheet that contains the segment name, segment number, segment
description, prompts (Lists of Values, window), column, value set, default
value, required security enabled, and sizes (display, description, concatenated
description size). Only the segment name, segment number, window prompts,
and columns are required for a segment definition. The Segment Number field
is used to order the segments within the Flexfield window and are important
for dependent segments, because the associated independent segment must
have a lower segment number than the dependent segment. You can have a
default type of Constant, Current Date, Current Time, Field, Profile, SQL
Statement, and Segment. Default values entered must be in the context of the
default type. You can use the Range field in the segment definition to make
Oracle Applications enforce validation on two segments, with one being lower
than the other.

Next, you learned how to define flexfield qualifiers and segment qualifiers. All
flexfield structures within the same flexfield share the same qualifiers. You can
set up global or unique flexfield qualifiers. Global flexfield qualifiers tag all
segments of the flexfield, while unique flexfield qualifiers only allow—at most—
one segment to be tagged. You can also mark qualifiers as required, then
associate segment qualifiers to flexfield qualifiers. For segment qualifiers,
define the derived column to store the qualifier values and supply a default
value with a specified lookup type from an AOL lookup table. Segment
qualifiers are being captured as you enter the segment values through the
Define Segment Values form.

The last part of the Key flexfield section shows you how to define shorthand
aliases and to enable the Shorthand Flexfield Entry option. You enable
Shorthand Flexfield Entry through the Define Shorthand Aliases form.
Recompile the flexfield structure for the enabling to take effect, and use the
same form to define shorthand aliases. You can associate shorthand aliases
with complete or partial combination templates. To disable a shorthand alias,
uncheck the Enabled checkbox or delete the shorthand alias. Do not delete it if
you think you may need the shorthand alias again. As you enter the shorthand
alias, individual segments will be validated, but the validation on each segment
and on the entire combination will take place again when the shorthand aliases
are used.

The chapter proceeds to delve into planning and defining Descriptive flexfields.
Unlike Key flexfields, Descriptive flexfields are not required. In order to
identify where a Descriptive flexfield is needed, go through your forms and
note where you see a [] and need to capture additional information.
Descriptive flexfields are assigned to the database table. Forms using the same
database table will have the same Descriptive flexfield—this applies to multiorg
structure implementation as well.

Descriptive flexfields consist of global segments and context-sensitive segments.


Global segments will always be displayed in a Descriptive Flexfield window common to
all context values, and global segments map one-to-one to a database column. Context-
sensitive segments are segments that may or may not display, depending on the context
value. Context-sensitive segments for different context values can map to the same
database column. The number of database columns you need is the number of global
segments plus the maximum number of context-sensitive columns across all possible
context values. Context values can come from a default value, a reference field, or a
context field. A context field is the only mechanism that allows the user to override
default or reference fields and enter their own context values. If you do not have a
context field, you must have either a default value or a reference field, or you cannot
require a context value. Be careful selecting a reference field, because every form that has
the Descriptive flexfield needs to have the same reference field in the form for you to
avoid an error message. The context value is stored in the context-sensitive column in the
database.

The layout of the Descriptive flexfield depends on whether you have global
segments, context fields, and context-sensitive segments. Global segments
always come before the context field, and before the context-sensitive
segment. Within each group, the segment number is used to sort the ordering.
If you have a context field, as you enter a context value or change a context
value, the layout may change on the fly since you may be using different
context-sensitive structures for different context values. In fact, the reason for
having context-sensitive structures is to have the ability to accommodate
different structures. You may still want to implement all context-sensitive
segments for a Descriptive flexfield, even if there is no current need for a
context-sensitive Descriptive flexfield. This is because if you implement all
global segments, you will have to use up all the database columns and you will
have no room to grow.

To define a Descriptive flexfield, use the Define Descriptive Flexfields


Segments form. You can change the Descriptive flexfield title, but you cannot
add new Descriptive flexfields in this form. Enter the default value, the
context field prompt, and the reference field. The Override Allowed checkbox
is checked if you want a context field—the context field prompt will be used
for the context field. Input context value codes after you enter the context
definition. Each context value code represents a structure. You always have
the Global Data Elements context value code for the global segments, and you
cannot disable it. Next, add a structure for each possible context value. Enter
the context value code exactly as the default value or reference field will be,
including the capitalization. For context fields, select by context value name
and description—the context value code will be used in the background. The
context value code must be unique.

For each structure, define the segments for Descriptive flexfields exactly the
same way you would when you define the segments for Key flexfields. Freeze
and compile the Descriptive flexfields after you have finished for the changes
to take effect.

The chapter then talks about implementing cross-validation rules. Cross-


validation rules do not apply to Descriptive flexfields. Cross-validation rules
define whether segment values for one segment can be combined with segment
values of other segments. When a cross-validation rule is violated, the user will
receive an error message and the erred segment will be highlighted. Erred
segments use very specific error messages to point the user to the correct
segment to change.

Cross-validation rules are made up of cross-validation rule elements. A cross-


validation rule element can be defined as an include or an exclude. You should
always have an all-encompassing include element and several exclude
elements. An all-encompassing include element includes all 0’s to all 9’s for
numeric segments, and all 0’s to all Z’s for alphanumeric segments. If the
segment does not require values, you can enter a blank to include all segment
values. You can disable or delete a cross-validation rule, but do not delete it if
you think you may need it in the future.

Multiple cross-validation rules work together to make the validation of segment


combinations more restrictive. In other words, combinations are valid if they
are in at least one include element and outside of all exclude elements. If
there is no include element, no flexfield combinations are valid. You can have
as many cross-validation rules as you want for any Key flexfield structure—the
sacrifice is performance.

The text progresses to the implementing of flexfield value security. Flexfield


value security only applies to independent, dependent, or table value sets, but
flexfield value security can be applied to both Key flexfields, Descriptive
flexfields, and concurrent program parameters. Key flexfields and Descriptive
flexfields can even share the same security rules if they use the same value set
and the user is accessing the two flexfields through the same responsibility.
Security rules are attached to value sets and then assigned to a responsibility.
If you query data that is associated with flexfield segment values to which you
are denied access—depending on if it is a balance-related form—you may not
see the data at all, or you may see the data without the flexfield combination.
In designing a security plan, determine which flexfields need security and
which segments needs security. Next, define the security rules and identify
which responsibilities require which security rules.

A security rule is made up of security rule elements. As in the case of cross-


validation rules, security rule elements can be include or exclude. You should
have an all-encompassing include element and several exclude elements. You
can access the segment values if the segment values are included in any
security rule element, as long as the segment values are not explicitly
excluded. If you have multiple security rules, the segment values can be
accessed if all security rules include the same segment values.

The more security rules you have, the more security is restricted. Segment
values must pass all the assigned security rules in order to be valid values.
When the user cannot enter a segment value because of security rules, the
violated security rule message will appear.

After you define the security rules, assign the security rules to responsibilities.
You can assign the security rules through the Define Security Rules form or
through the Navigator. For security rules to take effect, besides assigning
them, you also need to enable security at two levels. One level is the value set
level, and the second is at the segment level. After you enable security at the
segment level, you must freeze and compile the flexfield to enable security.

The last section of this chapter explores advanced validation capabilities


available in Oracle Applications. You can use multiple tables and expressions in
table value sets. You can also include subqueries, profile options, and field
values in the where clause of the table value set. Enter multiple tables in the
Table Name field and key in the join conditions in the where clause. Refer to
profile options by the :$PROFILE$ keyword. Refer to field values by
using :block.field where block is the block name and field is the field name.

Moving on to cascading flexfields, you can refer to columns associated with


prior segments of the same flexfield by using the keyword :$FLEX$. You can
refer to the ID column, value column, or meaning column of any prior segment.
If the server-side validation is off, you can even refer to any user-defined
additional columns associated with prior segments of the same flexfield. This
feature is called a cascading flexfield. These and other features can be used in
the where clause of table value sets to make table value sets very powerful.
They can perform quite advanced validations.

Finally, the chapter explains defining both special value sets and pair value
sets. Special value sets invoke a flexfield for a single segment of a flexfield.
This is called a flexfield within a flexfield. Pair value sets invoke a flexfield
range instead of a flexfield. To set them up, you must enter an event and
associate the event to a function. A function is a flexfield subroutine—also
known as user exit—and it can be POPID, LOADID, or VALID. For pair value sets,
the corresponding functions will be POPIDR, LOADIR, or VALIDR. The function is
invoked when the event happens. The most common events are Edit, Load, or
Validate.

You can use special arguments to pass values to and from the function
subroutines. These special arguments include the combination ID (:!ID), the
concatenated values (:!VALUE), the concatenated descriptions (:!MEANING),
and the navigation directions (:!DIR).

Two-Minute Drill
 Flexfield structures are combinations of segments for a flexfield. They specify how
many segments there are, as well as their display order.

 A value set determines what segment values are valid. A segment can have—at most
—one value set.

 A flexfield combination is a combination of segment values for a flexfield. Each Key


flexfield combination is assigned to a unique identifier and is stored in the
combination table.

 Having flexfields gives you the ability to have a flexible structure to capture key
information, or expand the form to capture additional information.

 There are two kinds of flexfields: Key flexfields and Descriptive flexfields.

 Key flexfields provide the user with the ability to customize key information
structures and appearances that will be meaningful to your company. Key flexfields
are stored separately in combination tables. Each segment of the Key flexfield is
mapped to a segment column called SEGMENTn. The segments are stored together
with their unique identifier/combination ID and their structure ID. You can
implement flexfield qualifiers, shorthand flexfield entry, and cross-validation rules
only for Key flexfields.

 Descriptive flexfields provide the user with the ability to expand Oracle Applications
to capture additional information specific to a company’s needs that would otherwise
not be tracked. Descriptive flexfields are not stored in separate tables. They are part
of the database tables. Each segment of the Descriptive flexfield is mapped to a
segment column, usually called ATTRIBUTEn. There is no unique identifier or
structure ID. If you are implementing context-sensitive Descriptive flexfields, the
context-sensitive column is also filled in with the context values.
 Key flexfields that are more commonly used in Oracle Applications include the
Accounting flexfield and the System Items flexfield. The Accounting flexfield stores
the Chart of Accounts, while the System Items flexfield stores the part number.

 The maximum number of segments across all Key flexfields is 30.

 Some database tables have more than one Descriptive flexfield. For example, the
SO_LINES_ALL table has the regular Descriptive flexfield and the Pricing Attributes
flexfield, while the RA_CUSTOMER_TRX has the regular Descriptive flexfield and
the Invoice Transaction flexfield.

 Security rules restrict—by responsibility—the segment values that a user can enter
during data entry. Security rules can be applied to both Key flexfields and Descriptive
flexfields.

 Cross-validation rules define whether segment values of a segment in the flexfield


can be combined with segment values of other segments. Cross-validation rules can
only be applied to Key flexfields.

 There are six validation types for a value set: None, Independent, Dependent, Table,
Special, and Pair.

 The None validation option will only validate the format. These include size, format
type, numbers only, uppercase only, as well as a minimum and/or a maximum value.

 Independent value sets contain a list of predefined values. The user entering a
segment value with an independent value set will be provided with a List of Values.
The predefined values are stored in AOL tables FND_FLEX_VALUES and
FND_FLEX_VALUES_TL.

 A dependent value set is very similar to an independent value set and is stored in the
same AOL tables, except that the set of predefined values depends on the independent
value of a prior segment. Each independent value has its own set of predefined
dependent values. You must have a default dependent value defined when you define
the dependent value set.

 The proper sequence in setting up dependent value sets where default dependent
values can be automatically created is as follows: (1) Create independent value set,
(2) create dependent value set, (3) define independent values, and (4) define
dependent values.

 Table value sets validate segment values against values in a database table. To define
the table and the columns that you want to use, you can optionally enter a where
clause to restrict rows retrieved from the database table. Using the where clause, you
can also perform some advanced validations.
 Special value sets provide you with the ability to enter a flexfield for a single
segment of a flexfield. This is called a flexfield within a flexfield. The pair value set
is similar, except that instead of providing a flexfield for a single segment, a pair
value set provides a flexfield range for a single segment. Both special value sets and
pair value sets are usually only used in the Standard Request Submission form for
concurrent program parameters.

 Independent value sets, dependent value sets, and table value sets all provide a List of
Values.

 You can increase the maximum size of a value set as long as the value set is not right-
justified or zero-filled.

 You should not replace an old value set with a new value set that will change the
validation option from Dependent to anything other than None.

 To use segment qualifiers, you need to use either independent value sets or dependent
value sets, because segment qualifiers are entered through the Define Segment Values
form.

 Naming a value set with a custom prefix will eliminate the risk of your value set
being overridden by Oracle Applications during a future upgrade.

 When defining a value set, you must enter additional information for dependent value
sets, special value sets, pair value sets, and table value sets.

 You can enter a registered table name through the List of Values as the table name
for a table value set, or you can enter any unregistered table or multiple tables free-
form. Oracle Applications does not validate the table name you entered.

 If you enter an ID column for a value set, the ID column will be the value stored in
the database, or passed to the concurrent program as a parameter.

 To implement multiple tables in a table value set, you must enter multiple tables in
the table name column and enter the join conditions in the Where/Order By field.

 You can still enter parent values through the Define Segment Values form, even
though your value set is of a table validation type if you allow parent values in your
value set.

 If you have defined parent values, you must define child ranges that belong to the
parent values. You can move child ranges from a parent value to another parent value.
Use the view value hierarchy option to see the parent-child ranges.
 An intelligent key is a multiple meaningful code combined together to form a
meaningful key. Each intelligent key is unique, and is used to identify a single entity.
Intelligent keys facilitate data entry, but do not offer easy storage in the database.

 A Key flexfield bridges the gap between what intelligent keys and unique identifiers
can offer in terms of data entry and data storage. They do this by storing both the
intelligent keys and unique identifiers in a combination table. For tables that reference
the intelligent keys, they store only the unique identifiers.

 If you allow dynamic inserts, when a user enters a new flexfield combination, the
flexfield combination will be validated against the cross-validation rules. If the
flexfield combination is valid, the combination will be inserted into the combination
table and the unique identifier will be stored in the database table the user is entering
data into.

 Not all Key flexfields allow dynamic inserts. Category flexfields, item catalogs, item
categories, and system items do not allow dynamic inserts, since you need to enter
other attributes for the combination over and above the standard flexfield attributes.

 If you allow dynamic inserts, you have more of a business need to enable cross-
validation rules, since you do not want your user to create invalid combinations.

 If you enable shorthand flexfield entry, you can use shorthand aliases to enter partial
or complete flexfield combinations to speed data entry. You associate shorthand
aliases with templates that have the complete or partial flexfield combinations. As
you enter a template, individual segments will be validated, but when you use the
shorthand aliases, the individual segment and the entire combination will be validated
once again.

 You must select a segment separator for both your Key flexfield and your Descriptive
flexfield. Select a segment separator that will not conflict with your segment value. If
there is a conflict, the character in the segment value will be displayed as a caret.

 You can use the Freeze Rollup Groups checkbox to disallow changes in the rollup
group associated with parent values.

 Before a user can access your newly defined or modified flexfield structure, you need
to freeze and compile the flexfield structure.

 When you compile a flexfield structure, one or two views will be generated. A
combination table name with the _KFV suffix will always be generated. It contains
all the concatenated segment values across all the Key flexfield structures of the Key
flexfield you are compiling. If you have specified a view name for the flexfield
structure that you are compiling, an additional view will be generated with your
specified view name, along with the segment names as the column names and other
flexfield-related columns.
 When defining a flexfield segment, you must enter the segment number for the
ordering of the segment within the Flexfield window, the segment name, the window
prompt, and the database column.

 You can optionally enter a default type and a default value for each of your segments.

 A Range field is used for enforcing the validation of a low and high pair of segments.
You mark the low segment with Low and the high segment with High in the Range
field. If the value set you selected is of validation type pair, pair will be defaulted in
the Range field.

 Flexfield qualifiers and segment qualifiers only apply to Key flexfields. Flexfield
qualifiers are used to identify a particular segment within the Key flexfield, while
segment qualifiers are used to capture values for any particular segment.

 You can define flexfield qualifiers that are unique, meaning that—at most—one
segment can associate with this flexfield qualifier. This means that all segments can
be associated with this flexfield qualifier. You can also mark a flexfield qualifier as
required, meaning that it is mandatory that one or more segments must be associated
with this flexfield qualifier.

 You define segment qualifiers by associating them with flexfield qualifiers. You
must define a derived column to store the segment qualifier value in the combination
table. You also need to specify a lookup type and a default value from an AOL
lookup table.

 A Descriptive flexfield is made up of global segments and context-sensitive


segments.

 Global segments will always be displayed in a Descriptive window common to all


context values. Global segments map one-to-one to a database column.

 A context-sensitive segment is a segment that may or may not display, depending on


the context value. Context-sensitive segments for different context values can map to
the same database column.

 The number of database columns you need is the number of global segments plus the
maximum number of context-sensitive columns across all possible context values.

 A context value can come from a default value, a reference field, or a context field. A
context field is the only mechanism that allows users to override default or reference
fields and enter their own context values. Without the context field, the value in the
reference field or the default value will be used in the background—the user will not
see the context value. Check the Override Allowed checkbox to display a context field
on the screen.
 Global segments precede context fields, which come before context-sensitive
segments. Within each group, the segment number determines the ordering.

 The layout of the Descriptive Flexfield window will change on the fly if the context
value changes and the associated structures are different.

 You can change the title of the Descriptive flexfield in the Define Descriptive
Flexfield Segments form, but you cannot add Descriptive flexfields.

 A context value code must be unique. It represents structures for Descriptive


flexfields. Global Data Elements are predefined context value codes for global
segment structures—you cannot disable them.

 For each context value, you need to enter the context value code, context value name,
and the associated structures. The context value code must be identical to the value in
the reference field of the default value for Oracle Applications in order to make the
connection. If you use a context field, you select the context value name and
description, but the context value code is still used in the background to perform the
matching to invoke the correct structure.

 When a user enters a flexfield combination that violates any cross-validation rule, an
error message will be displayed and the error segment will be highlighted.

 An all-encompassing include element includes all 0’s to all 9’s for numeric segments,
and all 0’s to all Z’s for alphanumeric segments. If the segment does not require a
value, you can enter a blank to include all segments.

 You can disable or delete a cross-validation rule. If you think you will need a cross-
validation rule in the future, disable it instead of deleting it.

 You should use multiple cross-validation rules if you need to cross-validate across
more than two segments. This will allow you to specify the exact error segment and
provide a more specific message to point the user in the right direction to correct the
problem.

 If the cross-validation rule has no include element, then no combination will be valid.

 A cross-validation rule has one or more cross-validation rule elements. Cross-


validation rule elements can be include or exclude. You should have an all-
encompassing include element and several exclude elements. A flexfield combination
is valid if it is within one of the include elements and not within any one of the
exclude elements.

 You can have as many cross-validation rules as you want for a specific Key flexfield
structure. The trade-off is performance.
 Flexfield security rules can be applied to Key flexfields or Descriptive flexfields as
long as the segment is associated with value sets of validation type independent,
dependent, or table. If a segment from the Key flexfield has the same value set as a
segment from the Descriptive flexfield, the two segments will share the same security
rules if the user accessing the segment is logged on with the same responsibility.

 If security rules do not give you access to a particular segment value, you will see
neither the data nor the flexfield combination during data inquiry.

 A security rule is made up of security rule elements. Security rule elements can be
include or exclude. You should have an all-encompassing include element and several
exclude elements.

 You can access the segment values if the segment values are included in any security
rule element, as long as the segment values are not explicitly excluded.

 If you have multiple security rules, the segment values can be accessed if all security
rules include the same segment values. In other words, if you have two security rules
assigned to the same responsibility and they do not overlap, there will be no valid
segment value that your user logged on as that responsibility can enter.

 When the user cannot enter a segment value because of a security rule, the violated
security rule message will appear.

 After you define the security rules, you assign the security rules to responsibilities.
You can assign the security rules through the Define Security Rules form or through
the Navigator.

 For a security rule to take effect, you must enable security at two levels. One level is
the value set level, and the second is the segment level. After you enable security at
the segment level, you must freeze and compile the flexfield to enable security.

 You can use the keyword :$PROFILE$ plus the profile option name to refer to a
profile option value in the where clause of the table value set.

 You can utilize the keyword :$FLEX$ plus the value set name/segment name to refer
to a segment value from a prior segment in the where clause of the table value set.
The :$FLEX: keyword will return the segment value of the closest prior segment with
the specified value set name. If that does not exist, the :$FLEX: keyword will return
the segment value of the closest prior segment with the specified segment name. This
feature is called a cascading flexfield.

 You can add ID, VALUE, or MEANING to the end of the value set name from the
keyword :$FLEX$ to indicate whether you are referring to the ID column, value
column, or meaning columns, respectively. You can also use the additional columns
defined with an into clause if the server-side validation is not on.
 You can use :block.field to refer to the value in the specified block and the specified
field.

 :NULL is used for allowing null values when it is added as a suffix to the bind
variables :$PROFILE$, :$FLEX$, or :block.field.

 When defining a special value set or pair value set, you specify the function to invoke
when a specific event occurs.

 You can use POPID, VALID, or LOADID as the function for a special value set.

 You can utilize POPIDR, VALIDR, or LOADIDR as the function for a pair value set.

 Events can be Edit, Edit/Edit, Insert/Update, ListVal, Load, Query, or Validate.

 You can use special arguments to pass parameters to and from functions. Special
arguments include :!ID, :!VALUE, :!MEANING, or :!DIR.

Chapter Questions
1. What is a None value set?

A. Provides List of Values

B. Predefines values stored in AOL tables

C. Is a flexfield within a flexfield

D. Means no validation except for format validation

2. Which validation types allow you to enter additional information?

A. Special

B. Dependent

C. Table

D. All of the above

3. What is the correct sequence in creating and defining independent and


dependent value sets and their values?

A. Creating independent value sets


B. Defining independent values

C. Creating dependent value sets

D. Defining dependent values

4. Which column will be passed as a parameter to the concurrent program if


defined for a table value set?

A. ID

B. Value

C. Meaning

D. Additional column

5. What options should you use if you want to see all allowable values for all
Accounting flexfield segments?

A. Value set

B. Key flexfield

C. Descriptive flexfield

D. Concurrent program

6. Which of the following is not a flexfield feature specific to a Key flexfield?

A. Flexfield qualifier

B. Shorthand flexfield entry

C. Flexfield value security

D. Cross-validation rules

7. When will you need a flexfield qualifier?

A. When you need to tag a value for a segment within a Key flexfield

B. When you need to tag a segment within a Key flexfield

C. When you need to tag a value for a segment within a Descriptive flexfield
D. When you need to tag a segment within a Descriptive flexfield

8. What does the [] denote?

A. Descriptive flexfield

B. Key flexfield

C. Segment separator

D. Qualifier

9. What are global segments?

A. Represented by context value code Global Data Elements

B. Always displayed in Descriptive flexfields

C. Mapped one-to-one to database columns

D. Always appearing first in Descriptive Flexfield windows

10. Which of the following can fit into a 15-segment Descriptive flexfield?

A. Fifteen global segments

B. Fifteen global segments and 15 context-sensitive segments

C. Ten global segments and 10 context-sensitive segments for 10 context value


codes

D. Ten global segments and 10 context-sensitive segments for one context value
code

11. What will happen if a cross-validation rule has no include element?

A. If there are no exclude elements, then all flexfield combinations will be valid.

B. If there are exclude elements, only flexfield combinations outside of the exclude
element will be valid.

C. Existing enabled flexfield combinations will be valid.

D. No flexfield combination will be valid.

12. What must you do to enable flexfield value security for a user?
A. Enable security at the segment level

B. Enable security at the value set level

C. Assign security rules to the user’s responsibility

D. All of the above

13. How do multiple security rule elements work together?

A. Via an AND relationship, creating a union of all segment values within all the
security rule elements

B. Via an OR relationship, creating a union of all segment values within all the
security rule elements

C. Via an AND relationship, creating an intersection of all segment values within all
the security rules

D. Via an OR relationship, creating an intersection of all segment values within all


the security rules

14. Under which security rule will the segment value 02 be valid?

A. Include 00 through 99; include 02 through 09

B. Include 00 through 99; exclude 02 through 99

C. Include 00 through 19; include 10 through 29

D. Include 00 through 19; include 02 through 09; exclude 00 through 03

15. What keyword is used for a cascading flexfield?

A. :$PROFILE$

B. :$FLEX$

C. :block.field

D. :NULL

Answer to Chapter Questions


1. Means no validation except D. for format validation
ExplanationA None value set does not provide a List of Values, since there are no
specific valid values. Values in AOL tables are predefined by independent and dependent
value sets. The flexfield within a flexfield feature is provided by pair and special value
sets.

2. All of the above D.

ExplanationYou must enter the independent value sets and the default values for
dependent value sets. Enter the event and function for special value sets. Input table
names, column names, and Where/Order By clauses for table value sets. All this
additional information is entered through the Edit Information button.

3. A., C., B., D.

ExplanationThe correct sequence in creating and defining independent and dependent


value sets and their values is: (1) Create independent value set, (2) create dependent value
set, (3) define independent values, and (4) define dependent values. This will eliminate
the need to manually enter default values as values in the dependent value set. If you
create the dependent value set before you enter your independent value, as you enter your
independent value, the default dependent value will be automatically generated.

4. ID A.

ExplanationIf you have defined the ID column, it will be passed as a parameter to the
concurrent program.

5. Key flexfield B.

ExplanationIf you want to see all allowable values for all Accounting flexfield
segments, you should select Find Value Set by Key Flexfield and enter the flexfield title,
Accounting flexfield.

6. Flexfield value security C.

ExplanationFlexfield value security works for both Key Descriptive and Descriptive
flexfields. Flexfield qualifiers, shorthand flexfield entry, and cross-validation rules are all
flexfield features specific to Key flexfields.

7. When you need to tag a B. segment within a Key flexfield

ExplanationA flexfield qualifier is a Key flexfield specific feature and is used to tag a
segment within a Key flexfield. A segment qualifier is one that tags a value for a segment
within a Key flexfield. Flexfield qualifiers do not apply to Descriptive flexfields.

8. Descriptive flexfield A.
ExplanationThe [] field is where the Descriptive flexfield is located in a form.

9. Represented by A., B., C., D. context value code Global Data Elements, Always
displayed in Descriptive flexfields, Mapped one-to-one to database columns, Always
Appearing first in the Descriptive Flexfield window

ExplanationGlobal segments are represented by the context value code, Global Data
Elements. Global segments always display and appear first in Descriptive flexfields.
Global segments also map one-to-one to database columns. Therefore, all four answers
apply.

10. Fifteen global segments, 10 A., C. global segments, and 10 context-sensitive


segments for 10 context value codes

ExplanationFifteen global segments will always fit into a 15-segment Descriptive


flexfield; it will use up all 15 columns. Since 15 global segments use up all the
Descriptive flexfield segment columns, there is no room for even one context-sensitive
segment, not to mention 15 context-sensitive segments. If you only have 10 global
segments, you have room for five context-sensitive segments. Ten context-sensitive
segments for one context value code means that you need 10 columns, so it will not fit.
However, 10 context-sensitive segments for 10 context values means one context-
sensitive segment per each context value. The 10 context values will share one column
and you have room for one column.

11. Existing enabled flexfield C. combination will be valid

ExplanationIf a cross-validation rule has no include element, no flexfield combination


will be valid. A flexfield combination is valid if it is in at least one include element and
outside of all exclude elements. However, because of the way Oracle Applications
validates flexfield combinations, it first checks all existing and enabled flexfield
combinations before checking the cross-validation rules. Therefore, if the flexfield
combination exists and is enabled, the cross-validation rule will not be checked.

12. All of the above D.

ExplanationTo enable flexfield value security for a user, you must enable security at
both the segment level and the value set level, and you need to assign security rules to the
user’s responsibility.

13. Via an OR relationship, creating B. a union of all segment values within all the
security rule elements

ExplanationMultiple security rule elements work together as a union, meaning that if


a segment value is within any one of the included ranges of the security rule elements,
and is not explicitly excluded, the segment value is valid. This is an OR relationship,
since an AND relationship makes multiple conditions more restrictive, but an OR
relationship makes multiple conditions less restrictive.

14. Include 00 through 99; Include A. 02 through 09

ExplanationMultiple security rules make the condition more restrictive. So, if there
are two includes, the segment value must be in both in order to be valid. This is different
than having multiple security rule elements. For A, the valid values are from 02 through
09. For B, the valid values are 00 through 01. For C, the valid values are 10 through 19.
For D, the valid values are 04 through 09.

15. :$FLEX$ B.

Explanation:$FLEX$ is the keyword used for a cascading flexfield. :$PROFILE$ is


used for profile options, while :block.field is used for values in the field within the
block. :NULL is to allow null values.

You might also like