Bu script ile var olan inaktif kullanıcılar ve bu kullanıcılarıa atanan sorumlulukların son tarihi bulunur.
Declare
--Bütün inaktif kullanıcıları bulmak için cursor tanımlarız.
CURSOR cur_inactive_user
IS
select
fu.user_id,
fd.responsibility_id,
fd.responsibility_application_id,
fd.security_group_id,
fd.start_date,
fd.end_date
from
fnd_user fu,
fnd_user_resp_groups_direct fd
where
fu.user_id = fd.user_id
and (fu.end_date <= sysdate or fu.end_date is NOT NULL)
and fd.end_date is null;
BEGIN
FOR rec_inactive_user IN cur_inactive_user
LOOP
--Kullanıcıya sorumluluk atanıp atanmadığı kontrol edilir.
IF (fnd_user_resp_groups_api.assignment_exists
(rec_inactive_user.user_id,
rec_inactive_user.responsibility_id,
rec_inactive_user.responsibility_application_id,
rec_inactive_user.security_group_id)) then
--
API çağrılır
fnd_user_resp_groups_api.update_assignment
(user_id =>rec_inactive_user.user_id,
responsibility_id =>rec_inactive_user.responsibility_id,
responsibility_application_id =>rec_inactive_user.responsibility_application_id,
security_group_id =>
rec_inactive_user.security_group_id ,
start_date =>rec_inactive_user.start_date ,
end_date =>rec_inactive_user.end_date,
description =>NULL);
COMMIT;
END IF;
END LOOP;
END;
Bu script ile verilen kullanıcının bütün sorumlulukları çıkartılır. Bu sorgumuzda örnek olarak ismimin baş harflerinden oluşan 'BOUSER' kullanııcımın bütün sorumluluklarını çıkarttım.
1.Versiyon
SELECT fu.user_name, frt.responsibility_name, furgd.start_date,
SELECT fu.user_name, frt.responsibility_name, furgd.start_date,
furgd.end_date
FROM fnd_user fu,
fnd_user_resp_groups_direct furgd,
fnd_responsibility_tl frt
WHERE fu.user_id = furgd.user_id
AND furgd.responsibility_id
= frt.responsibility_id
AND UPPER (fu.user_name) = UPPER ('BOUSER');
2.Versiyon
SELECT frvl.RESPONSIBILITY_NAME
FROM FND_USER_RESP_GROUPS_DIRECT furgd,
FND_RESPONSIBILITY_VL frvl, FND_USER fu
WHERE furgd.responsibility_id = frvl.responsibility_id AND
fu.user_id = furgd.user_id AND
( to_char(furgd.end_date) IS NULL
OR furgd.end_date > sysdate )
AND fu.user_name = '&user' ; #User kısmına kullanıcı ismi yazılır.
Aşağıdaki script'in özellikle yardımcı olduğunu düşünüyorum. Bu scriptde parametre olarak menu adı verilir ve bu menu altındaki bütün erişilebilinecek fonksiyonlar belirtilir.
2.Versiyon
SELECT frvl.RESPONSIBILITY_NAME
FROM FND_USER_RESP_GROUPS_DIRECT furgd,
FND_RESPONSIBILITY_VL frvl, FND_USER fu
WHERE furgd.responsibility_id = frvl.responsibility_id AND
fu.user_id = furgd.user_id AND
( to_char(furgd.end_date) IS NULL
OR furgd.end_date > sysdate )
AND fu.user_name = '&user' ; #User kısmına kullanıcı ismi yazılır.
Aşağıdaki script'in özellikle yardımcı olduğunu düşünüyorum. Bu scriptde parametre olarak menu adı verilir ve bu menu altındaki bütün erişilebilinecek fonksiyonlar belirtilir.
SELECT DISTINCT
fmep.menu_id,
DECODE(fmep.function_id,NULL, DECODE(fmec.function_id, NULL,DECODE(fmec1.function_id,NULL,
'No
Func',fmec1.function_id ),
fmec.function_id),
fmep.function_id) funcID,
fff.user_function_name,
fff.description
FROM fnd_form_functions_tl fff,
fnd_menu_entries
fmec1,
fnd_menu_entries
fmec,
fnd_menu_entries
fmep
WHERE fmep.menu_id = (SELECT menu_id
FROM fnd_menus
WHERE menu_name='INV_NAVIGATE' --Change
the menu according to your requirement
AND ROWNUM=1)
AND fmep.sub_menu_id = fmec .menu_id(+)
AND fmec.sub_menu_id = fmec1 .menu_id (+)
AND fff.function_id = DECODE (fmep.function_id,NULL,DECODE(fmec.function_id, NULL,
DECODE(fmec1.function_id,NULL,-999,fmec1.function_id),
fmec.function_id),
fmep.function_id)
ORDER BY DECODE(fmep .function_id,NULL, DECODE(fmec.function_id, NULL,
DECODE(fmec1.function_id,NULL, 'No Func',fmec1.function_id ),
fmec.function_id),
fmep.function_id)
Hiç yorum yok:
Yorum Gönder