MO_GLOBAL - EBS R12 中 Multi Org 设计的深入研究(1)
在改EBS的BUG过程中,会在网上查找很多资料,这次是碰到一个多组织(Multi Org)的问题,发现Anil Passi写的几篇文章不错,慢慢的会陆续翻译过来,这次翻译的是http://getappstraining.blogspot.com/2006/10/orgid-and-multi-org-in-oracle-apps.html
为什么我们需要org_id
在任何一个跨国公司中, 都会在不同的地区有自主经营的子公司,我们以一个游戏公司为例,公司名称是'GameGold Inc',在文章中我们叫它'黄金游戏公司',在英国和法国都设有组织机构.
请注意以下各点:
1.这家公司(黄金游戏公司)在伦敦和巴黎都有办公室.
2.英国和法国税不同,也就是都有自己的tax code.
3.黄金游戏公司是以单实例的方式来实现Oracle应用程序的(英国和法国都使用一个应用程序数据库).
4.当'英国订单输入'或者'英语应付'用户登录到应用程序后,他们不希望看到法国姐妹公司的税务代码(Tax Code).
5.在黄金游戏公司中单个数据库实例中, 只有一张表用来存储税务列表, 我们假设这张在Oracle中的表名是 'ap_tax_codes_all'.
6. 在这张表中我们假设有两条记录:
记录 1 tax code -"FRVAT"
记录 2 tax code - "UKVAT"
7. 我们再进一步的假设有两个职责:
职责 1 - "French order entry".
职责 2 - "UK order entry"
8. 现在,法国的用户使用职责 1 - "French order entry"
9. 英国的用户就使用职责 2 - "UK order entry"
10. 在订单输入界面, 有一个输入项: Tax Code(或者 VAT Code).
11. 对法国用户来说, 在输入项中, 'UKVAT'是不能在值集列表是出现.
12. 而且, "法国订单输入" 用户只能在税的输入项中选择 "FRVAT".
13. 同样的, 英国的主意输入用户只能选择"UKVAT".
在不用硬编码的情况下,这些是如果实现的呢?答案就是org_id.
这些名词会被习惯性的使用到: ORG_ID/Multi-Org/Operating Unit.
截屏在文章的底部
1. 在应用程序中,你可以定义两个组织机构: "French operations" and "UK Operations", 这些可以通过组织机构定义来实现(截屏).
2.在Oracle应用程序中, 一个组织机构可以归类为HRMS
Org, 或者 Inventory Warehouse Org, 或者 Business Group, Operating Unit Org 或者更多的类型. 记住,组织机构类型只是用来标识组织机构定义的一种意思(Organization type is just a mean of tagging
a flag to an organization definition).
3.我们定义的这两个组织机构是operating
unit类型的, 接下来会用到org_Id 和 operating unit 这两个习惯用语.
4.我们可以说,英国的组织机构有一个内部的organization
id = 101, 法国的则是102.
问: 你是如何建立起英国职责(UKresponsibility)和英国组织(UK organization)机构间的关系?
答:在'uk
order entry'职责下,设置profile 'MO : Operating Unit'的值为 'UK organization'
问: 系统是如何知道
UKVAT 是属于uk org的?
答: 在
VAT code 输入界面(税务代码会被输入), 下面的语句会被执行:
Insert into ap_vat_codes_all values(:screenblock.vatfield, fnd_profile.value('org_id').
或者, 使用 USERENV('CLIENT_INFO')
下一个问题, 当在值集列表(VAT)中显示VAT Codes 时, 数据库是否会做: select * from ap_vat_codes_all where org_id=fnd_profile.value('ORG_ID')?
答: 是的.
Oracle 会做以下操作
1. 当插入数据库到multi-org表中时,也会同时做insert
into (vatcode,org_id) ....
2.用以下方式创建一个视图:
Create
or replace view ap_vat_codes as Select * from ap_vat_codes_all where org_id = fnd_profile.value('ORG_ID')
3.在值集列表(LOV)上,select
* from ap_vat_codes ,
如果通过以上说明还没有明白, 那么继续往下看.
快速浏览:
1.在多组织环境中(像在一个数据库中的UK和france), 每一张Multi-Org的表都会有一个名为'org_id'的列,
像发票这个的表是对组织敏感的,因为UK的用户没有理由去看到以及修改法国的发票,所以发票的表会有org_id这一列.
2.供应商站点/位置(Vendor
Sites/Locations)也是有区分的,因为UK会在dell.co.uk中存放订单而法国则会在dell.co.fr中存放, 这些在Oracle术语中被叫作vendor sites.
3.任何一张multi-org的表(有org_id这一列)的名称,都会以'_all'结束.
4.对每张 _all 的表, Oracle会提供一个名称中没有'_all'的相关视图, 例如create or replace view xx_invoices as select * from xx_invoices_all
where org_id=fnd _profile.value('org_id').
5.在插入数据库到这个表中时,org_id列的值也会被填充.
6.如果你想对所有的operating unit做一个输出,那么使用select
from _all table.
7.在APPS中的_all 对象会作为一个同义词关联到真实schema中的_all 表,例如,在APPS schema中的po_headers_all是PO
schema中po_headers_all的同义词.
8. 使用SQL*Plus 连接到数据库做以下操作:
connect apps/apps@dbapps ;
--假设 101 是法国的 Org Id
execute dbms_application_info.set_client_info ( 101 );
select tax_code from ap_tax_codes ;
---返回 FRVAT
下面是一些截屏:
MO_GLOBAL - EBS R12 中 Multi Org 设计的深入研究(1)的更多相关文章
- MO_GLOBAL - EBS R12 中 Multi Org 设计的深入研究 (2)
这是多组织访问的第二篇文章,翻译自Anil Passi的Multi Org R12 我们都知道,在Oracle Release 12中多组织模型(Multi Org)会被改变, 它被叫作多组织访问控制 ...
- MO_GLOBAL - EBS R12 中 Multi Org 设计的深入研究 (3)
这是多组织访问的第三篇文章,翻译自Anil Passi的MO_GLOBAL-Dive into R12 Multi Org Design 我希望你已经读了文章 EBS R12 中的 Multi Org ...
- 更改EBS R12中forms的模式Servlet/Socket
EBS R12中forms的模式有:Servlet mode 和 Forms Socket mode 当我们完成Oracle EBS R12套件的快速安装后,forms的默认配置是Servlet mo ...
- EBS R12中FND凭证打印警告:OPP响应超时
接近年关,最近年结忙的飞起,此为背景,今天运维那边反应日记账凭证打印报错,看了下后台请求发现请求有警告. 查看日志发现报了“并发:OPP响应超时”的警告,这个地方响应超时可能是配置文件中“并发:OPP ...
- EBS R12中重新enable失效用户之后,丢失职责
以下请求跑完不能立即生效,需要等上一段时间! oracle support说这并不是一个bug,是一个问题,呵呵,bug和问题,都是你的错,oracle! 工 作中将某个用户失效之后,有可能又需要重新 ...
- R12中注册客户化应用为多组织应用
Oralce EBS R12中引入了MOAC的控制,所有多OU的表对象都添加了数据库VPD的控制策略,需要访问这些对象中的数据,首先需要进行多组织环境的初始化,但是如果客户化的应用中也需要具备多OU的 ...
- Oracle EBS R12 XML数据表格的Excel脚本报表
http://www.cnblogs.com/quanweiru/archive/2012/07/28/2612680.html 一.概述 在EBS系统中,报表是一个非常重要的客户化开发内容,也是系统 ...
- Oracle EBS R12多组织(多OU)访问架构
Oracle EBS R12多组织访问架构 多组织架构实现了经营单位(OU)的数据安全性,在底层数据表中有一列ORG_ID来记录数据所属的经营单一,所有多OU的基表都是以"_ALL" ...
- Oracle Ebs R12 SLA与GL关系变化
http://www.cnblogs.com/bruce_zhao/p/3809886.html Oracle Ebs R12 SLA与GL关系变化 SLA概念:SLA(Subledger Accou ...
随机推荐
- 重写轮子之 kNN
# !/usr/bin/python # -*- coding:utf-8 -*- """ Re-implement kNN algorithm as a practic ...
- The specified JRE installation does not exist异常的原因和解决办法
今天,回首为了学习新框架,于是将JDK的版本从1.7开发标配版换成了1.8,一切前期很顺利,完成了新框架的测试和体验,但在运行原有项目的时候问题出现了,爆出了The specified JRE ins ...
- Memcached在Linux环境下的使用详解
一.引言 写有关NoSQL数据库有关的文章已经有一段时间了,可以高兴的说,Redis暂时就算写完了,从安装到数据类型,在到集群,几乎都写到了.如果以后有了心得,再补充吧.然后就 ...
- 关于mysql安装到最后一步老是停留在starting server,显示无响应
从昨天晚上到今天安装MySQL花了好长的时间,一直是在后面starting server 这部就显示无响应,查资料了解到是MySQL有残留,有些注册表文件需要手动清理,下面是具体方法. 1.先用卸载软 ...
- linux shell数组
from: http://www.jb51.net/article/34322.htm bash shell只支持一维数组,但参数个数没有限制. 声明一个数组:declare -a array(其实不 ...
- 谈谈Circuit Breaker在.NET Core中的简单应用
前言 由于微服务的盛行,不少公司都将原来细粒度比较大的服务拆分成多个小的服务,让每个小服务做好自己的事即可. 经过拆分之后,就避免不了服务之间的相互调用问题!如果调用没有处理好,就有可能造成整个系统的 ...
- Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)
8.1.常用命令 启动ZK服务 bin/zkServer.sh start 查看ZK服务状态 bin/zkServer.sh status 停止ZK服务 bin/zkServer.sh stop 重启 ...
- Android Studio 如何打JAR包
Android Studio 如何打JAR包 在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用. 在AS中可以通过修改gradle才处理. 我们新建一个项目MakeJar,在 ...
- Android图表库MPAndroidChart(五)——自定义MarkerView实现选中高亮
Android图表库MPAndroidChart(五)--自定义MarkerView实现选中高亮 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库MP ...
- ThinkPHP 初探
准备 ThinkPHP下载 Eclipse-for-php 如何使用 放置位置 检验引用效果 效果 路由 调试之模板的使用 前提 生产模式 开发模式 添加完相应的路径以及模板文件后 总结 对国人开发的 ...