Oracle EBS 11i Add Responsibility to User by the Responsibility reference of Other User.

Warning: R12 version must be fixed columns sort to insert successfully.

 

 

DECLARE

   --input parameters

   l_reference_user_name             VARCHAR2 (50) := 'HKIT_KPWONG';

   l_add_resp_user_name              VARCHAR2 (50) := 'SZIT_QWR';

   l_resp_name                       VARCHAR2 (300) := 'Application Developer';

   -----------------------------------------------------------

 

   l_user_orig_system_id             NUMBER := -999999;

   l_role_name                       VARCHAR2 (300) := NULL;

   l_add_resp_user_exists            NUMBER := 0;

   l_insert_role_record             NUMBER := 0;

   l_insert_role_assign_record   NUMBER := 0;

BEGIN

   --get responsibility role name

   SELECT COUNT (1)

     INTO l_add_resp_user_exists

     FROM (SELECT u.user_id user_id

                , (SELECT responsibility_name

                     FROM fnd_responsibility_tl

                    WHERE     responsibility_id = wur.role_orig_system_id

                          AND application_id = fa.application_id

                          AND language = 'US')

                     app_responsibility_name

                , wur.role_name

                , wur.user_orig_system_id

                , wur.role_orig_system_id responsibility_id

                , fa.application_id responsibility_application_id

                , fsg.security_group_id security_group_id

                , fnd_date.canonical_to_date ('1000/01/01') start_date

                , TO_DATE (NULL) end_date

                , TO_CHAR (NULL) description

                , TO_NUMBER (NULL) created_by

                , TO_DATE (NULL) creation_date

                , TO_NUMBER (NULL) last_updated_by

                , TO_DATE (NULL) last_update_date

                , TO_NUMBER (NULL) last_update_login

             FROM fnd_user u

                , wf_user_role_assignments_v wura

                , wf_user_roles wur

                , fnd_application fa

                , fnd_security_groups fsg

            WHERE     wura.user_name = u.user_name

                  AND wur.role_orig_system = 'FND_RESP'

                  AND wur.partition_id = 2

                  AND wura.role_name = wur.role_name

                  AND wura.user_name = wur.user_name

                  AND fa.application_short_name = /* Val between 1 st and 2 nd separator */

                         REPLACE (SUBSTR (wura.role_name

                                        ,   INSTR (wura.role_name

                                                 , '|'

                                                 , 1

                                                 , 1)

                                          + 1

                                        , (  INSTR (wura.role_name

                                                  , '|'

                                                  , 1

                                                  , 2)

                                           - INSTR (wura.role_name

                                                  , '|'

                                                  , 1

                                                  , 1)

                                           - 1))

                                , '%col'

                                , ':')

                  AND fsg.security_group_key =  /* Val after 3 rd separator */

                         REPLACE (SUBSTR (wura.role_name

                                        ,   INSTR (wura.role_name

                                                 , '|'

                                                 , 1

                                                 , 3)

                                          + 1)

                                , '%col'

                                , ':')

                  AND u.user_name = l_add_resp_user_name) resp

    WHERE 1 = 1 AND resp.app_responsibility_name = l_resp_name;

 

 

   IF (l_add_resp_user_exists > 0)

   THEN

      DBMS_OUTPUT.put_line (

            'Failed !!! Add Responsebility Name: '

         || l_resp_name

         || ' to User: '

         || l_add_resp_user_name

         || ' by reference User: '

         || l_reference_user_name);

      DBMS_OUTPUT.put_line (

         'The Responsibility exists at Added User: ' || l_add_resp_user_name);

      RETURN;

   END IF;

 

 

 

   --get responsibility role name

   SELECT resp.role_name

     INTO l_role_name

     FROM (SELECT u.user_id user_id

                , (SELECT responsibility_name

                     FROM fnd_responsibility_tl

                    WHERE     responsibility_id = wur.role_orig_system_id

                          AND application_id = fa.application_id

                          AND language = 'US')

                     app_responsibility_name

                , wur.role_name

                , wur.user_orig_system_id

                , wur.role_orig_system_id responsibility_id

                , fa.application_id responsibility_application_id

                , fsg.security_group_id security_group_id

                , fnd_date.canonical_to_date ('1000/01/01') start_date

                , TO_DATE (NULL) end_date

                , TO_CHAR (NULL) description

                , TO_NUMBER (NULL) created_by

                , TO_DATE (NULL) creation_date

                , TO_NUMBER (NULL) last_updated_by

                , TO_DATE (NULL) last_update_date

                , TO_NUMBER (NULL) last_update_login

             FROM fnd_user u

                , wf_user_role_assignments_v wura

                , wf_user_roles wur

                , fnd_application fa

                , fnd_security_groups fsg

            WHERE     wura.user_name = u.user_name

                  AND wur.role_orig_system = 'FND_RESP'

                  AND wur.partition_id = 2

                  AND wura.role_name = wur.role_name

                  AND wura.user_name = wur.user_name

                  AND fa.application_short_name = /* Val between 1 st and 2 nd separator */

                         REPLACE (SUBSTR (wura.role_name

                                        ,   INSTR (wura.role_name

                                                 , '|'

                                                 , 1

                                                 , 1)

                                          + 1

                                        , (  INSTR (wura.role_name

                                                  , '|'

                                                  , 1

                                                  , 2)

                                           - INSTR (wura.role_name

                                                  , '|'

                                                  , 1

                                                  , 1)

                                           - 1))

                                , '%col'

                                , ':')

                  AND fsg.security_group_key =  /* Val after 3 rd separator */

                         REPLACE (SUBSTR (wura.role_name

                                        ,   INSTR (wura.role_name

                                                 , '|'

                                                 , 1

                                                 , 3)

                                          + 1)

                                , '%col'

                                , ':')

                  AND u.user_name = l_reference_user_name) resp

    WHERE 1 = 1 AND resp.app_responsibility_name = l_resp_name;

 

 

   IF (l_role_name IS NULL)

   THEN

      DBMS_OUTPUT.put_line (

            'Failed !!! Add Responsebility Name: '

         || l_resp_name

         || ' to User: '

         || l_add_resp_user_name

         || ' by reference User: '

         || l_reference_user_name);

      DBMS_OUTPUT.put_line (

            'The reference User have not the Responsibility: '

         || l_resp_name

         || '. Please input correct data!');

      RETURN;

   END IF;

 

 

   --get user orig system id

   SELECT DISTINCT wur.user_orig_system_id

     INTO l_user_orig_system_id

     FROM wf_user_roles wur

    WHERE 1 = 1 AND wur.user_name = l_add_resp_user_name;

 

 

   IF (l_user_orig_system_id = -999999)

   THEN

      DBMS_OUTPUT.put_line (

            'Failed !!! Add Responsebility Name: '

         || l_resp_name

         || ' to User: '

         || l_add_resp_user_name

         || ' by reference User: '

         || l_reference_user_name);

      DBMS_OUTPUT.put_line ('No found User Orig System ID.');

      RETURN;

   END IF;

 

 

   INSERT INTO wf_local_user_roles

      SELECT l_add_resp_user_name

           , wur.role_name

           , wur.user_orig_system

           , l_user_orig_system_id

           , wur.role_orig_system

           , wur.role_orig_system_id

           , wur.start_date

           , wur.expiration_date

           , wur.security_group_id

           , wur.partition_id

           , wur.owner_tag

           , wur.created_by

           , wur.creation_date

           , wur.last_updated_by

           , wur.last_update_date

           , wur.last_update_login

           , wur.assignment_type

           , wur.parent_orig_system

           , wur.parent_orig_system_id

           , wur.user_start_date

           , wur.role_start_date

           , wur.user_end_date

           , wur.role_end_date

           , wur.effective_start_date

           , wur.effective_end_date

           , wur.assignment_reason

        FROM wf_local_user_roles wur

       WHERE     1 = 1

             AND wur.user_name = l_reference_user_name

             AND wur.role_name = l_role_name;

 

 

   l_insert_role_record := SQL%ROWCOUNT;

 

   IF (l_insert_role_record = 0)

   THEN

      DBMS_OUTPUT.put_line (

            'Failed !!! Add Responsebility Name: '

         || l_resp_name

         || ' to User: '

         || l_add_resp_user_name

         || ' by reference User: '

         || l_reference_user_name);

      DBMS_OUTPUT.put_line ('No data into Role table.');

      RETURN;

   END IF;

 

 

   INSERT INTO wf_user_role_assignments

      SELECT l_add_resp_user_name

           , wura.role_name

           , wura.relationship_id

           , wura.assigning_role

           , wura.start_date

           , wura.end_date

           , wura.created_by

           , wura.creation_date

           , wura.last_updated_by

           , wura.last_update_date

           , wura.last_update_login

           , wura.user_start_date

           , wura.role_start_date

           , wura.assigning_role_start_date

           , wura.user_end_date

           , wura.role_end_date

           , wura.assigning_role_end_date

           , wura.partition_id

           , wura.effective_start_date

           , wura.effective_end_date

           , wura.user_orig_system

           , l_user_orig_system_id

           , wura.role_orig_system

           , wura.role_orig_system_id

           , wura.parent_orig_system

           , wura.parent_orig_system_id

           , wura.owner_tag

           , wura.assignment_reason

        FROM wf_user_role_assignments wura

       WHERE     1 = 1

             AND wura.user_name = l_reference_user_name

             AND wura.role_name = l_role_name;

 

 

   l_insert_role_assign_record := SQL%ROWCOUNT;

 

 

   IF (l_insert_role_record <> l_insert_role_assign_record)

   THEN

      DBMS_OUTPUT.put_line (

            'Failed !!! Add Responsebility Name: '

         || l_resp_name

         || ' to User: '

         || l_add_resp_user_name

         || ' by reference User: '

         || l_reference_user_name);

 

      ROLLBACK;

      COMMIT;

   END IF;

 

   DBMS_OUTPUT.put_line (

         'Successfully !!! Add Responsebility Name: '

      || l_resp_name

      || ' to User: '

      || l_add_resp_user_name

      || ' by reference User: '

      || l_reference_user_name);

 

   COMMIT;

END;

 

http://www.cnblogs.com/quanweiru/archive/2013/05/21/3090818.html

Oracle EBS Add Responsibility to User by the Responsibility reference of Other User.的更多相关文章

  1. Oracle EBS Standard Package Function Add User & Resp

    Oracle EBS Standard Package Function Add User & Resp. fnd_user_pkg.CreateUser; fnd_user_pkg.AddR ...

  2. Oracle EBS R12经验谈(二)

    作者: jianping.ni    时间: 2009-2-13 12:52     标题: Oracle EBS R12经验谈(二) OAF页面:银行帐户开户人LOV值列表无值    在输入 应付超 ...

  3. Oracle EBS应用笔记整理 (转自IT++ flyingkite)

    ***************************************************** Author: Flyingkite Blog:   http://space.itpub. ...

  4. Oracle EBS R12 (12.1.3) Installation Linux(64 bit)

    Oracle EBS R12 (12.1.3) Installation Linux(64 bit) Contents Objective. 3 1 Download & Unzip. 3 D ...

  5. [转]oracle EBS 基础100问

    from:http://www.cnblogs.com/xiaoL/p/3593691.html  http://f.dataguru.cn/thread-51057-1-1.html 1001 OR ...

  6. Oracle EBS Concurrent Request:Gather Schema Statistics[Z]

    Oracle EBS 的Concurrent Request"Gather Schema Statistics"是一个和性能相关的Concurrent Program,它会对表,列 ...

  7. Oracle EBS R12多组织(多OU)访问架构

    Oracle EBS R12多组织访问架构 多组织架构实现了经营单位(OU)的数据安全性,在底层数据表中有一列ORG_ID来记录数据所属的经营单一,所有多OU的基表都是以"_ALL" ...

  8. Using Integrated SOA Gateway in Oracle EBS

    FROM:http://blog.csdn.net/pan_tian/article/details/10159935 Oracle EBS如何与第三方系统相集成?比如这样的需求,X系统知道物料编码, ...

  9. Oracle EBS 12.2.6 on VirtualBox

    Back in May, Oracle announced the general availability of Oracle VM Virtual Appliance for E-Business ...

随机推荐

  1. [题解] [NOIP2008] 双栈排序——关系的冲突至图论解法

    Problem 题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操 ...

  2. Python项目输出小类概率,机器学习

    from pandas import read_csv import numpy as np from sklearn.datasets.base import Bunch import pickle ...

  3. python学习-day 2

    1.执行Python脚本的两种方式1)调用解释器 Python +绝对路径+文件名称2)调用解释器 Python +相对路径+文件名称 2.简述位.字节的关系8位为1个字节 3.简述ASCII.uni ...

  4. java SSH框架

    1整体流程: 1:hibernate流程: 2:hibernate使用流程: 2.1:建立用户jar包,导入hibernate相应的jar包 2.2 引入mysql的JDBC驱动包 2.3 在数据库中 ...

  5. JAVA 操作Excel工具类

    Bean转Excel对象 /* * 文件名:BeanToExcel.java */ import java.util.ArrayList; import java.util.List; import ...

  6. zookeeper简绍

    先一句话概括下zookeeper:zookeeper可谓是目前使用最广泛的分布式组件了.其功能和职责单一,但却非常重要. zookeeper到底是什么?(技术文) 1)zookeeper实际上是yah ...

  7. Ssm框架常见报错

    错误1: The origin server did not find a current representation for the target resource or is not willi ...

  8. 【BZOJ4154】Generating Synergy【kd树】

    题意 给定一棵以1为根的有根树,初始所有节点颜色为1,每次将距离节点a不超过l的a的子节点染成c,或询问点a的颜色 分析 我们以dfs序为横坐标,深度为纵坐标,建kd树.我们每次更新,都是在kd树中更 ...

  9. Cocoa Touch(五):网络请求 NSURLSession/AFNetworking, GCD, NSURLResquest

    NSURLRequest 网络请求的关键的就是NSURLRequest类,它的实例表示了请求报文实体以及请求的缓存策略等等,各种网络框架的最终目标都是把这个对象编译成为请求报文发送出去.下面用一个实例 ...

  10. MongoDB--CSharp Driver Quickstart .

    原文链接 http://www.mongodb.org/display/DOCS/CSharp+Driver+Quickstart?showComments=true&showCommentA ...