API to Create User

Create User


CREATE TABLE APPS.XX_CREATE_USER_STG
(
  USER_NAME     VARCHAR2(111 BYTE),
  PASSWORD      VARCHAR2(111 BYTE),
  OWNER         VARCHAR2(111 BYTE),
  PROCESS_FLAG  VARCHAR2(111 BYTE),
  ERROR_MSG     VARCHAR2(1000 BYTE)
)
 */
CREATE OR REPLACE PROCEDURE xx_create_fnd_user_prc
IS
   CURSOR c_user
   IS
      SELECT ROWID, t.* FROM XX_CREATE_USER_STG t;

   l_user_name       VARCHAR2 (100);
   l_user_password   VARCHAR2 (100);
   l_person_id       VARCHAR2 (111);
   l_process_flag    VARCHAR2 (50);
   l_error_msg       VARCHAR2 (200);
   l_status          VARCHAR2 (10);
BEGIN
   FOR i IN c_user
   LOOP
      BEGIN
         SELECT person_id
           INTO l_person_id
           FROM per_all_people_f paf
          WHERE FULL_NAME = i.OWNER
                AND SYSDATE BETWEEN EFFECTIVE_START_DATE
                                AND EFFECTIVE_END_DATE;

         DBMS_OUTPUT.put_line ('person_id : ' || l_person_id);
         l_status := 'S';
      EXCEPTION
         WHEN OTHERS
         THEN
            l_error_msg := l_error_msg || '--Person ID is NULL';
            l_status := NULL;
      END;


      BEGIN
         SELECT user_name
           INTO l_user_name
           FROM fnd_user
          WHERE USER_NAME = i.user_name;

         l_status := 'N';
      EXCEPTION
         WHEN OTHERS
         THEN
            l_status := 'S';
      -- l_error_msg:=l_error_msg||'--Person ID is NULL';
      END;


      BEGIN
         IF l_status = 'S'
         THEN
            fnd_user_pkg.
             CreateUser (x_user_name                    => i.user_name,
                         x_owner                        => I.OWNER,
                         x_unencrypted_password         => i.password,
                         x_start_date                   => NULL,
                         x_end_date                     => NULL,
                         x_last_logon_date              => NULL,
                         x_description                  => NULL,
                         x_password_date                => NULL,
                         x_password_accesses_left       => NULL,
                         x_password_lifespan_accesses   => NULL,
                         x_password_lifespan_days       => NULL,
                         x_employee_id                  => l_person_id,
                         x_email_address                => NULL,
                         x_fax                          => NULL,
                         x_customer_id                  => NULL,
                         x_supplier_id                  => NULL);
            DBMS_OUTPUT.
             put_line ('USER is Created Successfully:=' || i.user_name);
             
             UPDATE XX_CREATE_USER_STG
               SET process_flag = 'S', error_msg = l_error_msg
             WHERE ROWID = i.ROWID;

            COMMIT;
         ELSE
            UPDATE XX_CREATE_USER_STG
               SET process_flag = 'E', error_msg = l_error_msg
             WHERE ROWID = i.ROWID;

            COMMIT;
         END IF;
         end;
      END LOOP;
   END;
   
   
  EXEC xx_create_fnd_user_prc