DECLARE l_new_user_name VARCHAR2(100) := 'HAND_HYL'; l_new_password VARCHAR2(100) := '54321'; l_new_user_id NUMBER; l_user_name_copy_from VARCHAR2(100) := 'SYSADMIN'; BEGIN -- Test statements here IF fnd_user_pkg.userExists(x_user_name => l_new_user_name) THEN NULL; ELSE fnd_user_pkg.CreateUser(x_user_name => l_new_user_name, x_unencrypted_password => l_new_password, x_owner => NULL); END IF; SELECT user_id INTO l_new_user_id FROM fnd_user fu WHERE fu.user_name = l_new_user_name; FOR rec IN (SELECT d.RESPONSIBILITY_ID ,d.RESPONSIBILITY_APPLICATION_ID ,d.START_DATE ,d.END_DATE FROM fnd_user_resp_groups_direct d ,fnd_user u WHERE d.user_id = u.user_id AND u.user_name = l_user_name_copy_from AND SYSDATE BETWEEN nvl(d.START_DATE, SYSDATE - 1) AND nvl(d.END_DATE, SYSDATE + 1)) LOOP IF fnd_user_resp_groups_api.Assignment_Exists(user_id => l_new_user_id, responsibility_id => rec.responsibility_id, responsibility_application_id => rec.responsibility_application_id) THEN NULL; ELSE fnd_user_resp_groups_api.Insert_Assignment(user_id => l_new_user_id, responsibility_id => rec.responsibility_id, responsibility_application_id => rec.responsibility_application_id, start_date => rec.START_DATE, end_date => rec.END_DATE, description => NULL); END IF; END LOOP; END;