PL/SQLbeginner

Value Sets and Validation in EBS

Explain the different value set validation types used across flexfields, concurrent program parameters, and profile options

A value set defines what may be entered somewhere — a flexfield segment, a concurrent program parameter, a profile option. It is reusable, so one definition serves many places.

A value set is like a dropdown menu template that a restaurant chain can reuse across every location's ordering kiosk — define 'Valid Toppings' once, and every kiosk (form/parameter) that references it automatically shows the same governed list, updated centrally.

Key Concepts

1
Five validation types.
    None         format and length only; free text
    Independent  a fixed list you maintain
    Dependent    the list depends on another segment's value
    Table        a SQL query against any application table
    Special/Pair used for flexfield cross-validation
2
Dependent is the State-and-City case. Choose a state, and the city list shows only that state's cities. The dependent value set is filtered by the independent one above it.
3
Table-validated is the one worth knowing properly, because it keeps the list in step with live data.
4
    Table:            gl_code_combinations
    Value:            segment2
    Meaning:          description
    WHERE clause:     enabled_flag = 'Y'
                  AND org_id = :$PROFILES$.ORG_ID
5
The bind variables are the useful part.
    :$PROFILES$.name    a profile option value for this session
    :$FLEX$.value_set   a value chosen in another segment
    :$SYSTEM.CURRENT_DATE
    :block.field        a field on the current form
6
So a cost centre parameter can list only the cost centres in the user's operating unit, without hardcoding anything. Two users running the same program see different lists, correctly.
7
A worked example, which is what interviewers ask for. "A parameter listing only active cost centres for the user's operating unit":
8
    validation type:  Table
    table:            xx_cost_centres
    value column:     cost_centre_code
    meaning column:   cost_centre_name
    WHERE:            active_flag = 'Y'
                  AND org_id = :$PROFILES$.MO_OPERATING_UNIT
9
Two practical cautions. The WHERE clause runs every time the list is opened, so a query against a large unindexed table makes the parameter list slow and users notice immediately.
10
And a value set is shared. Changing one to suit a new program changes it everywhere it is already used — which is the trade for reusability, and the reason installations end up with near-duplicate value sets rather than editing a shared one.
11
What the interviewer is probing.1. "What are the value set validation types?" Probing: the breadth. Stalls: "A list." *Moves up:* none, independent, dependent, table, special, pair and translatable variants — table-validated being the most used for custom lists.
12
2. "When would you use a dependent value set?" Probing: the fit. Stalls: "Never." *Moves up:* when valid values depend on another segment, such as a cost centre list that varies by company.
13
3. "What is the risk with a table-validated value set?" Probing: the practical angle. Stalls: "None." Moves up: the WHERE clause runs on every validation and list of values, so a poorly written one slows down data entry everywhere it is used.
14
4. "How are these used outside flexfields?" Probing: the breadth. Stalls: "They are not." Moves up: as concurrent program parameters, which is how a custom report gets a validated list of values.