Sometimes its a tough job putting all the entities together in Oracle Applications. The following query is a combination SQL behind the "Reponsibilities" for a given user on the Users form, and the list of values for the Request Name (Concurrent Program) on the "Submit Requests" form, for version 11.5.10.2 (11i.10.2). This can be useful to provide an "Audit" of what concurrent requests/programs a given Oracle eBusiness Suite user or Responsibility has access to.
select distinct
fu.user_name
, r.responsibility_name
, p.user_concurrent_program_name
, a.application_name
, a.application_short_name
, p.concurrent_program_name
, p.concurrent_program_id
, p.application_id program_application_id
from fnd_concurrent_programs_vl p
, fnd_application_vl a
, fnd_request_group_units u
, fnd_responsibility_vl r
, fnd_user fu
, (select user_id
, responsibility_id
, responsibility_application_id -- ,start_date,end_date
from fnd_user_resp_groups_indirect
where (responsibility_id,responsibility_application_id)
in (select responsibility_id, application_id
from fnd_responsibility
where (version = '4' or
version = 'W' or
version = 'M' or
version = 'H')
)
and nvl(start_date,sysdate-1) <= sysdate
and nvl(end_date,sysdate+1) > sysdate
union
select user_id
, responsibility_id
, responsibility_application_id
from fnd_user_resp_groups_direct
where (responsibility_id,responsibility_application_id)
in (select responsibility_id, application_id
from fnd_responsibility
where (version = '4' or
version = 'W' or
version = 'M' or
version = 'H'))
and nvl(start_date,sysdate-1) <= sysdate
and nvl(end_date,sysdate+1) > sysdate
) user_resps
where p.srs_flag in ('Y', 'Q')
and p.enabled_flag = 'Y'
and request_set_flag = 'N'
and (
(a.application_id = u.unit_application_id
and u.application_id = r.group_application_id
and u.request_group_id = r.request_group_id
and u.request_unit_type = 'A')
or (p.application_id = u.unit_application_id
and p.concurrent_program_id = u.request_unit_id
and u.application_id = r.group_application_id
and u.request_group_id = r.request_group_id
and u.request_unit_type = 'P'))
and p.application_id = a.application_id
and user_resps.user_id = fu.user_id
and user_resps.responsibility_id = r.responsibility_id
and user_resps.responsibility_application_id = r.application_id
order by 1,2,4;
PS. This was my response to a question posted on Oracle Forums, a very handy place for information, and if you're searching for something, worthwhile doing a "site:forums.oracle.com xxxx" on Google!

No comments:
Post a Comment