Hurriyet

19 Haziran 2013 Çarşamba

Oracle E-Business Suite: R12 Önemli Sorgular 3

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,

       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.




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