一、摘要


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. 注册后

PLSQL_R12 MOAC多组织的四个应用(案例)的更多相关文章

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

    2014-05-31 Created By BaoXinjian

  2. SYS_R12 MOAC多组织底层技术实现技术分析(Oracle VPD) (案例)

    2014-05-30 Created By BaoXinjian

  3. Pandas系列(十四)- 实战案例

    一.series import pandas as pd import string #创建Series的两种方式 #方式一 t = pd.Series([1,2,3,4,43],index=list ...

  4. Flume的四个使用案例

    一.Flume监听端口 1,在linux机器上下载telnet工具 yum search telnet yumm install telnet.x86_64 2.编写flume的配置文件,并将文件复制 ...

  5. maven第四章背景案例

    4.3简要设计 4.3.1接口设计 4.3.2模块结构 思想 先定义出核心接口,一个接口可以认为是一个功能,根据接口划分功能 设计模式就是一种思想,外观模式和代理模式,适配者模式三者的区别 http: ...

  6. java基础之多线程四:简单案例

    多线程案例: 有一个包包的数量为100个,分别从实体店和官网进行售卖.使用多线程的方式,分别打印实体店和官网卖出包包的信息.分别统计官网和实体店各卖出了多少个包包 第一种方法 继承Thread类: p ...

  7. 《数据结构与算法(C语言版)》严蔚敏 | 第四章课本案例

    //二叉树的顺序存储表示 #define MAXTSIZE 100 typedef TElemtype SqBiTree[MAXTSIZE]; SqBiTree bt; //二叉树的二叉链表存储表示 ...

  8. 基于知识图谱的APT组织追踪治理

    高级持续性威胁(APT)正日益成为针对政府和企业重要资产的不可忽视的网络空间重大威胁.由于APT攻击往往具有明确的攻击意图,并且其攻击手段具备极高的隐蔽性和潜伏性,传统的网络检测手段通常无法有效对其进 ...

  9. TCP/IP协议族的四个层次

    OSI7层模型的小结 : 在7层模型中,每一层都提供一个特殊的网络功能.从网络功能的角度看:下面4层(物理层.数据链路层.网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主:第4 ...

随机推荐

  1. 用js来实现那些数据结构13(树01-二叉搜索树的实现)

    前一篇文章我们学会了第一个非顺序数据结构hashMap,那么这一篇我们来学学树,包括树的概念和一些相关的术语以及二叉搜索树的实现.唉?为什么不是树的实现,不是二叉树的实现.偏偏是二叉搜索树的实现?嗯, ...

  2. Gradle 1.12用户指南翻译——第四十八章. Wrapper 插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  3. SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?

    本文属于SQL Server AlwaysON从入门到进阶系列文章 本文原文出自Stairway to AlwaysOn系列文章.根据工作需要在学习过程中顺带翻译以供参考.系列文章包含: SQL Se ...

  4. 安卓高级6 CoordinatorLayout

    原作者大神地址:http://blog.csdn.net/huachao1001/article/details/51554608 曾在网上找了一些关于CoordinatorLayout的教程,大部分 ...

  5. [Matlab]技巧笔记

    1.将字符串作为Matlab命令执行 md = 'dir'; eval(md); 2.将字符串作为系统命令执行 md = 'dir'; system(md); 3.使显示图像的坐标轴使用相同的度量单位 ...

  6. Android App之间通过Intent交互

    Android 最重要的功能之一是应用能够基于它要执行的"操作"向另一个应用发送用户. 例如,如果您的应用有您要在地图上显示的公司地址,您无需在显示地图的应用中构建 Activit ...

  7. CSDN 支持Markdown写文章了!

    开源中国等其他技术博客很早就支持markdown格式写文章了,今天发现csdn竟然也可以了,不仅支持而且可以在线预览,本地导入导出,远程导入. 这些对于程序员写东西都非常好用,不用总是花时间来排版了. ...

  8. [apache2.4]configure: error: APR not found. Please read the documentation.

    apache2.4 安装出现如下错误 ``` [lzz@localhost httpd-2.4.10]$ ./configure  checking for chosen layout... Apac ...

  9. 信用卡3D验证相关资料

    3D 验证服务,是银行与VISA .MASTERCARD国际组织联合推出的为保障银行维萨及万事达信用卡持卡客户网上交易安全,防范网上伪冒交易的一项信用卡网上支付安全验证服务( 维萨卡使用的验证服务叫& ...

  10. Struts 1 之文件上传

    Struts 1 对Apache的commons-fileupload进行了再封装,把上传文件封装成FormFile对象 定义UploadForm: private FormFilefile; //上 ...