PLSQL_R12 MOAC多组织的四个应用(案例)
一、摘要
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多组织的四个应用(案例)的更多相关文章
- SYS_R12 MOAC多组织的四个应用(案例)
2014-05-31 Created By BaoXinjian
- SYS_R12 MOAC多组织底层技术实现技术分析(Oracle VPD) (案例)
2014-05-30 Created By BaoXinjian
- Pandas系列(十四)- 实战案例
一.series import pandas as pd import string #创建Series的两种方式 #方式一 t = pd.Series([1,2,3,4,43],index=list ...
- Flume的四个使用案例
一.Flume监听端口 1,在linux机器上下载telnet工具 yum search telnet yumm install telnet.x86_64 2.编写flume的配置文件,并将文件复制 ...
- maven第四章背景案例
4.3简要设计 4.3.1接口设计 4.3.2模块结构 思想 先定义出核心接口,一个接口可以认为是一个功能,根据接口划分功能 设计模式就是一种思想,外观模式和代理模式,适配者模式三者的区别 http: ...
- java基础之多线程四:简单案例
多线程案例: 有一个包包的数量为100个,分别从实体店和官网进行售卖.使用多线程的方式,分别打印实体店和官网卖出包包的信息.分别统计官网和实体店各卖出了多少个包包 第一种方法 继承Thread类: p ...
- 《数据结构与算法(C语言版)》严蔚敏 | 第四章课本案例
//二叉树的顺序存储表示 #define MAXTSIZE 100 typedef TElemtype SqBiTree[MAXTSIZE]; SqBiTree bt; //二叉树的二叉链表存储表示 ...
- 基于知识图谱的APT组织追踪治理
高级持续性威胁(APT)正日益成为针对政府和企业重要资产的不可忽视的网络空间重大威胁.由于APT攻击往往具有明确的攻击意图,并且其攻击手段具备极高的隐蔽性和潜伏性,传统的网络检测手段通常无法有效对其进 ...
- TCP/IP协议族的四个层次
OSI7层模型的小结 : 在7层模型中,每一层都提供一个特殊的网络功能.从网络功能的角度看:下面4层(物理层.数据链路层.网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主:第4 ...
随机推荐
- 这是一个测试,测试markdown语法
[TOC] 1. chpt1 这是一段话,前面没有空格 前面有4个空格,且在编辑状态下上面没有空行 前面有4个空格,且在编辑状态下上面有一个空行. 前面按了一下tab 1.1 1.1 2 段落1 前面 ...
- OpenCV+VS2013 属性表配置
简介 计算机视觉任务越来越多的依赖著名的开源计算机视觉库OpenCV.OpenCV 2.0 包含了一系列精心设计数据结构和经过优化的视觉算法,大家可以短时间内开发一个不错的视觉应用.OpenCV支持多 ...
- 炫酷:一句代码实现标题栏、导航栏滑动隐藏。ByeBurger库的使用和实现
本文已授权微信公众号:鸿洋(hongyangAndroid)原创首发. 其实上周五的时候已经发过一篇文章.基本实现了底部导航栏隐藏的效果.但是使用起来可能不是很实用.因为之前我实现的方式是继承了系统的 ...
- Maven之(六)setting.xml配置文件详解
setting.xml配置文件 maven的配置文件settings.xml存在于两个地方: 1.安装的地方:${M2_HOME}/conf/settings.xml 2.用户的目录:${user.h ...
- Android 多窗口
随着手机屏幕越来越大,单手操作手机越来越难,所以一些大厂早就开始研究多窗口,如iphone.samsung的单手模式,作为一个发展趋势google肯定也不会不考虑用户的体验,所以在android N中 ...
- 说一说关于破解支付宝AR红包的事
当朋友圈的你们才开始分享支付宝AR红包的消息的时候,我已经对它动了一二三四次歪脑筋了,虽然事实证明并不是那么顺利,至今我也只在电脑前识别出5个不知道在哪里的红包,其中一个还因为定位信息不符开不了. 昨 ...
- Android艺术开发探索第四章——View的工作原理(下)
Android艺术开发探索第四章--View的工作原理(下) 我们上篇BB了这么多,这篇就多多少少要来点实战了,上篇主席叫我多点自己的理解,那我就多点真诚,少点套路了,老司机,开车吧! 我们这一篇就扯 ...
- 国内外主流BI工具介绍和点评
商业智能的应用在国外已广为普及,并且开始不断探索大数据和云技术.而国内,商业智能BI工具在这几年才开始慢慢被接受,企业开始有意识地建立一体化数据分析平台,为经营决策提供分析. 从国内企业使用情况来看, ...
- Java异常封装(自己定义错误码和描述,附源码)
真正工作了才发现,Java里面的异常在真正工作中使用还是十分普遍的.什么时候该抛出什么异常,这个是必须知道的. 当然真正工作里面主动抛出的异常都是经过分装过的,自己可以定义错误码和异常描述. 下面小宝 ...
- Android必知必会-长按返回健退出
背景 平常比较常见的都是一定时间间隔内按两次返回键来退出应用,并且第一次点击会有相应的提示,网上资料比较多,这里写一下,长按返回键退出. 实现 实现的方案常用的有两个: 重写dispatchKeyEv ...