The following query adds a particular responsibility to a particular user. This query needs to be run by APPS.
The query will prompt for a "User Name" and "Reponsibility Name" that need to be added to that user. The query first finds the RESPONSIBILITY_KEY and APPLICATION_SHORT_NAME for that responsibility, and then adds it to the user using Oracle's FND_USER_PKG.ADDRESP function.
In the following example, I used 'AMOHSIN' as my username, and added "System Administrator" to my responsibilities. Change these two input parameters as per your requirement.
-------------------------------------------------------------------------------
-- Query to add a responsibility to a user, using
FND_USER_PKG.ADDRESP
-------------------------------------------------------------------------------
DECLARE
v_username fnd_user.user_name%TYPE;
v_resp_key fnd_responsibility.responsibility_key%TYPE;
v_apps_short_name fnd_application.application_short_name%TYPE;
v_resp_name
fnd_responsibility_tl.responsibility_name%TYPE;
BEGIN
v_username := '&USER_NAME'; --
eg. 'AMOHSIN'
v_resp_name := '&RESP_NAME'; --
eg. 'System Administrator'
-------------------------------------------------------------
-- find APPLICATION_SHORT_NAME and RESPONSIBILITY_KEY for
-- the Responsibility that need to be added
-------------------------------------------------------------
SELECT
fr.responsibility_key,
fa.application_short_name
INTO v_resp_key,
v_apps_short_name
FROM
applsys.fnd_responsibility_tl frt,
applsys.fnd_responsibility
fr,
applsys.fnd_application_tl
fat,
applsys.fnd_application
fa
WHERE
fr.responsibility_id = frt.responsibility_id
AND
fa.application_id = fat.application_id
AND
fr.application_id = fat.application_id
AND
frt.language = USERENV('LANG')
AND
fat.language = USERENV('LANG')
AND
frt.responsibility_name = v_resp_name;
-------------------------------------------------------------
-- if found, then add it to the user; else jump into exception
-------------------------------------------------------------
FND_USER_PKG.ADDRESP(
USERNAME =>
UPPER(v_username), --
User Name: 'AMOHSIN'
RESP_APP =>
v_apps_short_name, -- Apps Short
Name: 'SYSADMIN'
RESP_KEY =>
v_resp_key, -- Resp Key: 'SYSTEM_ADMINISTRATOR'
SECURITY_GROUP => 'STANDARD',
DESCRIPTION =>
NULL,
START_DATE =>
SYSDATE,
END_DATE =>
NULL);
COMMIT;
DBMS_OUTPUT.PUT_LINE(v_resp_name || ' responsibility added successfully for ' || v_username);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(v_resp_name
|| ' responsibility not added for ' || v_username);
DBMS_OUTPUT.PUT_LINE('SQLERRM: ' || SUBSTR(SQLERRM, 1, 100));
ROLLBACK;
END;
No comments:
Post a Comment