Developer ToolsFree generatorPDF, Excel, Word exportOracle E-Business SuiteAll Oracle E-Business Suite tools

Oracle EBS Query to Get Concurrent Program Parameters and Responsibilities

This generator writes three queries that answer the questions support teams ask about any Oracle E-Business Suite concurrent program: what runs, which parameters it takes in which order, and which responsibilities can submit it. It works on EBS 11i, 12.1 and 12.2 and needs only read access to the APPLSYS objects through APPS.

Fill in

Matches USER_CONCURRENT_PROGRAM_NAME or CONCURRENT_PROGRAM_NAME. Use % wildcards.

Blank means any application.

Generated code
Download:

Query 1: program definition and executable

SELECT a.application_short_name,
       p.concurrent_program_id,
       p.concurrent_program_name,
       p.user_concurrent_program_name,
       e.executable_name,
       e.execution_method_code,   -- I PL/SQL, P Oracle Reports, Q SQL*Plus, H Host, L SQL*Loader, K Java
       e.execution_file_name,
       p.output_file_type,
       p.enabled_flag,
       p.srs_flag
FROM   fnd_concurrent_programs_vl p
JOIN   fnd_executables_vl e
       ON  e.executable_id  = p.executable_id
       AND e.application_id = p.executable_application_id
JOIN   fnd_application a
       ON  a.application_id = p.application_id
WHERE  (p.user_concurrent_program_name LIKE 'Journal Import%'
        OR p.concurrent_program_name LIKE 'Journal Import%')
AND    a.application_short_name = NVL('[Program application short name (optional)]', a.application_short_name)
ORDER  BY p.user_concurrent_program_name;

Query 2: parameters in submission order

SELECT p.concurrent_program_name,
       u.column_seq_num,
       u.end_user_column_name,
       u.form_left_prompt,
       u.application_column_name,
       u.srw_param,               -- Oracle Reports token
       u.required_flag,
       u.enabled_flag,
       u.display_flag,
       u.default_type,
       u.default_value,
       vs.flex_value_set_name,
       vs.validation_type        -- I independent, D dependent, F table, N none, P pair, U special
FROM   fnd_concurrent_programs_vl p
JOIN   fnd_application a
       ON  a.application_id = p.application_id
JOIN   fnd_descr_flex_col_usage_vl u
       ON  u.application_id = p.application_id
       AND u.descriptive_flexfield_name = '$SRS$.' || p.concurrent_program_name
       AND u.descriptive_flex_context_code = 'Global Data Elements'
LEFT JOIN fnd_flex_value_sets vs
       ON  vs.flex_value_set_id = u.flex_value_set_id
WHERE  (p.user_concurrent_program_name LIKE 'Journal Import%'
        OR p.concurrent_program_name LIKE 'Journal Import%')
AND    a.application_short_name = NVL('[Program application short name (optional)]', a.application_short_name)
ORDER  BY p.concurrent_program_name, u.column_seq_num;

Query 3: request groups and responsibilities that can run it

SELECT p.user_concurrent_program_name,
       r.responsibility_name,
       r.responsibility_key,
       rg.request_group_name,
       ga.application_short_name AS group_application,
       rgu.request_unit_type,     -- P single program, A all programs of the application
       r.start_date,
       r.end_date
FROM   fnd_concurrent_programs_vl p
JOIN   fnd_application a
       ON  a.application_id = p.application_id
JOIN   fnd_request_group_units rgu
       ON  rgu.unit_application_id = p.application_id
       AND (   (rgu.request_unit_type = 'P' AND rgu.request_unit_id = p.concurrent_program_id)
            OR  rgu.request_unit_type = 'A')
JOIN   fnd_request_groups rg
       ON  rg.request_group_id = rgu.request_group_id
       AND rg.application_id   = rgu.application_id
JOIN   fnd_application ga
       ON  ga.application_id = rg.application_id
JOIN   fnd_responsibility_vl r
       ON  r.request_group_id     = rg.request_group_id
       AND r.group_application_id = rg.application_id
WHERE  (p.user_concurrent_program_name LIKE 'Journal Import%'
        OR p.concurrent_program_name LIKE 'Journal Import%')
AND    a.application_short_name = NVL('[Program application short name (optional)]', a.application_short_name)
AND    (r.end_date IS NULL OR r.end_date > SYSDATE)
ORDER  BY r.responsibility_name;

The _VL views return names in the session language (USERENV('LANG')); set NLS_LANGUAGE or query the _TL tables for another language. Programs reached only through a request set (unit type S) are not listed by Query 3. Confirm REQUEST_UNIT_TYPE values on your instance with SELECT DISTINCT request_unit_type FROM fnd_request_group_units.

Get a request group access review

Send us the output of Query 3 for your key programs and we flag responsibilities with broader access than they need.

Optional. The tool and every export work without this. No spam.

Was this tool useful?

How to use it

Type part of the program's user name or its short name with % wildcards, for example Journal Import% or GLLEZL, and optionally restrict to an application short name. Run Query 1 to confirm you have the right program, since many seeded programs share similar names across applications. Query 2 lists parameters in COLUMN_SEQ_NUM order, which is exactly the argument1, argument2 order FND_REQUEST.SUBMIT_REQUEST expects. Query 3 lists active responsibilities whose request group contains the program, either directly or through an all-programs-of-this-application unit.

  • Use Query 2 before writing any SUBMIT_REQUEST call
  • Hidden parameters (display_flag N) still occupy an argument position
  • Disabled parameters (enabled_flag N) are not passed

Where this lives in EBS

Concurrent program parameters are stored as a descriptive flexfield whose name is $SRS$. followed by the program short name, owned by the program's application. The context is Global Data Elements, and each parameter is a column usage in FND_DESCR_FLEX_COLUMN_USAGES (view FND_DESCR_FLEX_COL_USAGE_VL) mapped to ATTRIBUTE1, ATTRIBUTE2 and so on. That is why the Parameters window of the Concurrent Program form looks like a flexfield segment form. Request groups live in FND_REQUEST_GROUPS with their members in FND_REQUEST_GROUP_UNITS, and a responsibility points at one group through REQUEST_GROUP_ID and GROUP_APPLICATION_ID.

Worked example: Journal Import

With the default pattern Journal Import%, Query 1 returns the GL program with short name GLLEZL under SQLGL. Query 2 returns its parameters in sequence, with prompts, value sets and defaults; use this list to build the argument list for an automated journal import rather than copying an example from a blog written for another release. Query 3 shows every General Ledger responsibility that can run it. If a user says they cannot see a program, compare their responsibility to this list: the fix is almost always adding the program to that responsibility's request group, not granting a new responsibility.

Gotchas

DEFAULT_TYPE holds a code (C constant, P profile, S SQL statement and others), and DEFAULT_VALUE holds the constant, profile name or SQL text. A parameter with a SQL statement default can behave differently when submitted from PL/SQL, because SUBMIT_REQUEST does not evaluate defaults: you must pass the value yourself. For value sets of type F (table) with an ID column defined, the stored value is the ID column, which is what you pass in arguments. Responsibilities can also be end-dated per user in FND_USER_RESP_GROUPS_DIRECT, so a responsibility listed here may still be unavailable to a particular person.

Frequently Asked Questions

What is the query to get concurrent program parameters in Oracle Apps?

Join FND_CONCURRENT_PROGRAMS_VL to FND_DESCR_FLEX_COL_USAGE_VL on application_id and descriptive_flexfield_name = '$SRS$.' || concurrent_program_name, then to FND_FLEX_VALUE_SETS for the value set. Order by COLUMN_SEQ_NUM to get the submission order. Query 2 above is that query with prompts, flags and defaults.

How do I find which responsibility a concurrent program is assigned to?

Find request group units of type P whose request_unit_id is the program's concurrent_program_id (plus type A units for its whole application), join to FND_REQUEST_GROUPS, then to FND_RESPONSIBILITY_VL on request_group_id and group_application_id. Query 3 does this and filters out end-dated responsibilities.

Why do my SUBMIT_REQUEST arguments land in the wrong parameters?

Arguments are positional and follow COLUMN_SEQ_NUM of the enabled parameters, including hidden ones. Developers often skip a hidden parameter or count from a screenshot. Run Query 2 and map argument1 to the first enabled row, argument2 to the second, and so on.

Does this include programs in request sets?

No. Query 3 covers programs added directly to a request group and application-level units. A program that users run only as part of a request set appears in the group as a set unit, and its stages are stored in the request set tables, so check those separately.

If you want support staff to ask which responsibility runs a program or what a parameter means, and get the answer from your own EBS instance in plain English on your servers, we can set that up.

ArchRay builder
Design the on-prem AI stack for Oracle E-Business Suite: model, GPUs, RAG pipeline, guardrails
See memory, speed and cost as you swap parts, then export the diagram. Free, in your browser.
Open the builder

Keep exploring

Free tools

ERP fixes and how-tos

Runs with your ERP

AI on your ERP

Integrations

Software