We can end date a responsibility which is already assigned to all users / for a single user using the API fnd_user_pkg.delresp
        
DECLARE 
   v_user_name                  
VARCHAR2 (100) := NULL;
  
v_application_name        VARCHAR2 (100) :=
NULL; 
   v_responsibility_key       
VARCHAR2 (100) := NULL; 
   v_security_group             
VARCHAR2 (100) := NULL;
CURSOR xx_iexpenses_cursor 
IS
SELECT     
       fu.user_name,
      
fa.application_short_name, 
       frv.responsibility_key,
      
(select security_group_key from 
       apps.fnd_security_groups
fsg 
       where
fsg.security_group_id = furgd.security_group_id) Security_Group
FROM apps.fnd_user fu,
 
apps.fnd_user_resp_groups_direct furgd,
 
apps.fnd_responsibility_vl frv,
  apps. fnd_application fa
WHERE fu.user_id = furgd.user_id
AND fa.application_id =
frv.application_id
AND
furgd.responsibility_id          =
frv.responsibility_id
AND
furgd.end_date                 
IS NULL
AND
furgd.start_date               
<= sysdate
AND NVL(furgd.end_date, sysdate
+ 1) > sysdate
AND
fu.start_date                  
<= sysdate
AND NVL(fu.end_date, sysdate +
1)    > sysdate
AND
frv.start_date     <= sysdate
--AND fu.user_name = 'XX12345'
AND frv.responsibility_name like
'XX%Internet%Expenses';
    
l_xx_iexpenses_rec   xx_iexpenses_cursor%ROWTYPE;
BEGIN
OPEN xx_iexpenses_cursor;
LOOP
FETCH xx_iexpenses_cursor into
v_user_name, v_application_name,v_responsibility_key, v_security_group ;
EXIT WHEN xx_iexpenses_cursor%NOTFOUND;
DBMS_OUTPUT.put_line
(v_user_name);
DBMS_OUTPUT.put_line
(v_application_name);
DBMS_OUTPUT.put_line
(v_responsibility_key);
DBMS_OUTPUT.put_line
(v_security_group);
      fnd_user_pkg.delresp
      (   
username           =>
v_user_name, 
           resp_app           
=> v_application_name, 
           resp_key            
=> v_responsibility_key,  
           security_group     
=> v_security_group  
      );
END LOOP;
COMMIT;
CLOSE xx_iexpenses_cursor; 
END;
Comments
Post a Comment