SYS_R12 MOAC多组织的四个应用(案例)

简介: 2014-05-31 Created By BaoXinjian 一、摘要 R12 Form 或者其他二次开发时,很多情况下会涉及R12 MOAC多组织开发,以下介绍了4个常见的应用,如有遗漏还请学友继续补充 1.

2014-05-31 Created By BaoXinjian

一、摘要


R12 Form 或者其他二次开发时,很多情况下会涉及R12 MOAC多组织开发,以下介绍了4个常见的应用,如有遗漏还请学友继续补充

1. 开发时打开Form自动弹出组织选择实现方式(增加Choose ORG功能)

2. 开发时打开Form中有组织LOV选择实现方式

3. R12多组织的技术实现方式-VPD技术

4. VPD技术详解,数据库安全策略 

下文对这4个情况做一些用法和案例做一下介绍

 

二、案例


案例1、开发时打开Form自动弹出组织选择实现方式(增加Choose ORG功能)

    (1). 新增4个Paramters: Chart_Of_Account_Id, Org_Name, Org_Code, Org_id四个参数;

    (2). 在Form Level中Pre-Form中新增fnd_org.choose_org;

    (3). 在Form Level中When-New-Form-Instance中新增app_window.set_title('bxj_windows', :parameter.org_code);

 

案例2、开发时打开Form中有组织LOV选择实现方式

    (1). Pre-Form触发器初始化MOAC配置环境

        MO_GLOBAL.init(‘ONT’);

        IF l_default_org_id IS NOT NULL THEN — default org id not null
            MO_GLOBAL.SET_POLICY_CONTEXT(‘S’,l_default_org_id);
        ELSE
            MO_GLOBAL.SET_POLICY_CONTEXT(‘M’,null);
        END IF;

    (2). When-Create-Record触发器中复制OU默认值

        在此触发器中将默认的OU ID和OU Name拷贝给Form界面上对应的自动,实现创建记录的时候默认带出默认OU信息。
        copy(name_in(‘global.mo_default_org_id’),’’);
        copy(name_in(‘global.mo_default_ou_name’),’’);

    (3). 创建OU的LOV

        Form界面上的OU 名称字段创建一个LOV,LOV对应记录组的SQL语句如下:
            SELECT hr.organization_id organization_id, hr.NAME organization_name
              FROM hr_operating_units hr
             WHERE mo_global.check_access(hr.organization_id) = ‘Y’
          ORDER BY organization_name

 

案例3、R12多组织的技术实现方式-VPD技术

    (1). 三个Profile<MO: Security Profile、MO: Default Operating Unit、MO: Operating Unit>

    (2). ap_invoices 定义在ap_invoices_all基础之上

        a. 对于VPD<ap_invoices>表,简单的查询一般是不返回记录的,如果想查到记录,需要设置一下上下文先

        b. 普通查询VPD表

            select * from ap_invoices; -->No Output

        c. Single OU Mode

            BEGIN  execute mo_global.set_policy_context('S',204);

            --204为ORG_ID,S表示Single Org ContextEND;select * from PO_HEADERS;--会输出OU:204下边的所有PO

            --Multiple OU Mode(simulate login to a specific responsibility)

           Call fnd_global.apps_initialize(userid,resp_id,resp_appl_id);

        d. call MO_GLOBAL.INIT(p_appl_short_name);This will read the MO profile option values for your responsibility/user,

            and will initialize the Multi Org Access.

        e.select * from po_headers; -->Output
    (3). MO_GLOBAL.ORG_SECURITY的作用实际上就是根据你关于MOAC Profiles的设置,然后转换为相应Where条件(组织过滤),再进行查询

            

 

案例4、 VPD技术详解,数据库安全策略 

(1). 创建Table Or View的数据<bxj_invoices_policy_v>

 1     CREATE OR REPLACE VIEW apps.bxj_invoices_policy_v AS
 2 
 3         SELECT a.invoice_id,
 4 
 5                        b.vendor_name,
 6 
 7                        c.vendor_site_code,
 8 
 9                        a.invoice_num,
10 
11                        a.invoice_amount,
12 
13                        a.invoice_currency_code
14 
15             FROM ap_invoices_all a, ap_suppliers b, ap_supplier_sites_all c
16 
17           WHERE a.vendor_id = b.vendor_id AND a.vendor_site_id = c.vendor_site_id
18 
19                AND ROWNUM <= 10 

(2). 创建Policy Function

 1     CREATE OR REPLACE FUNCTION bxj_fun_invoices_policy (s_schema IN VARCHAR2,
 2 
 3                                                                                                     s_object IN VARCHAR2)
 4 
 5         RETURN VARCHAR2
 6 
 7     AS
 8 
 9     BEGIN
10 
11         RETURN 'invoice_currency_code = ' || '''EUR''';
12 
13     END; 

(3). 注册VPD Policy

 1     BEGIN
 2 
 3         DBMS_RLS.add_policy (object_schema => 'APPS',
 4 
 5                                                 object_name => 'BXJ_INVOICES_POLICY_V',
 6 
 7                                                 policy_name => 'POLICY_LIMITED_QUERY_INVOICES',
 8 
 9                                                 function_schema => 'APPS',
10 
11                                                 policy_function => 'BXJ_FUN_INVOICES_POLICY');
12 
13     END; 

 

(4). 比较注册Policy前后,View的输出结果,由10条变为了7条,直接过滤了USD的记录

    a. 注册前

         

    a. 注册后

        

 

Thanks and Regards

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
10月前
|
存储 关系型数据库 MySQL
第六章 schema设计与管理
第六章 schema设计与管理
html+css实战43-综合案例-学生信息表
html+css实战43-综合案例-学生信息表
241 0
html+css实战43-综合案例-学生信息表
|
SQL 数据库 开发者
【DB吐槽大会】第51期 - 缺乏SQL审查功能
大家好,这里是DB吐槽大会,第51期 - 缺乏SQL审查功能
一起谈.NET技术,改善代码设计 —— 组织好你的数据(Composing Data)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
717 0
改善代码设计 —— 组织好你的“.NET技术”数据(Composing Data)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
831 0
改善代码设计 —— 组织好你的数“.NET研究”据(Composing Data)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
792 0
|
SQL 测试技术 数据库
使用VS2010的Database项目模板统一管理数“.NET研究”据库对象
  Visual Studio 2010 有一个数据库项目模板:Visual Studio Database Project(以下简称VSDP),VS 2003/2005/2008也有类似的项目,在VS2010上的得到了很大的加强,现在还具备了智能感知,构建时验证和自动部署功能,VSDP是针对典型的数据库开发任务而设计的,可以对原有数据库反向工程,添加表,存储过程和其他数据库项目,而且有选择性地将修改部署到目标数据库中。
816 0
|
XML API Android开发
Andr“.NET研究”oid用户界面设计:使用片段
  Android 3.0引入的新的片断(Fragment)API,让我们更容易地创建动态用户界面。在这个教程中,我们学习如何将一个两屏的ListView转换成WebView流,以适应大屏幕的单屏流设计,比如在平板设备中。
1010 0
|
SQL Oracle 关系型数据库
[20180328]不要在sys建立用户对象.txt
[20180328]不要在sys建立用户对象.txt --//好几年前遇到的问题,开发安装UTL_DBWS在linux下遇到问题,最后选择winows下安装. --//随着业务增加,无法支撑,需要数据库组迁移到linux下,也就是我当时的安装笔记: --//http://blog.
958 0
|
SQL Oracle 关系型数据库

热门文章

最新文章