在改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)的更多相关文章

  1. MO_GLOBAL - EBS R12 中 Multi Org 设计的深入研究 (2)

    这是多组织访问的第二篇文章,翻译自Anil Passi的Multi Org R12 我们都知道,在Oracle Release 12中多组织模型(Multi Org)会被改变, 它被叫作多组织访问控制 ...

  2. MO_GLOBAL - EBS R12 中 Multi Org 设计的深入研究 (3)

    这是多组织访问的第三篇文章,翻译自Anil Passi的MO_GLOBAL-Dive into R12 Multi Org Design 我希望你已经读了文章 EBS R12 中的 Multi Org ...

  3. 更改EBS R12中forms的模式Servlet/Socket

    EBS R12中forms的模式有:Servlet mode 和 Forms Socket mode 当我们完成Oracle EBS R12套件的快速安装后,forms的默认配置是Servlet mo ...

  4. EBS R12中FND凭证打印警告:OPP响应超时

    接近年关,最近年结忙的飞起,此为背景,今天运维那边反应日记账凭证打印报错,看了下后台请求发现请求有警告. 查看日志发现报了“并发:OPP响应超时”的警告,这个地方响应超时可能是配置文件中“并发:OPP ...

  5. EBS R12中重新enable失效用户之后,丢失职责

    以下请求跑完不能立即生效,需要等上一段时间! oracle support说这并不是一个bug,是一个问题,呵呵,bug和问题,都是你的错,oracle! 工 作中将某个用户失效之后,有可能又需要重新 ...

  6. R12中注册客户化应用为多组织应用

    Oralce EBS R12中引入了MOAC的控制,所有多OU的表对象都添加了数据库VPD的控制策略,需要访问这些对象中的数据,首先需要进行多组织环境的初始化,但是如果客户化的应用中也需要具备多OU的 ...

  7. Oracle EBS R12 XML数据表格的Excel脚本报表

    http://www.cnblogs.com/quanweiru/archive/2012/07/28/2612680.html 一.概述 在EBS系统中,报表是一个非常重要的客户化开发内容,也是系统 ...

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

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

  9. Oracle Ebs R12 SLA与GL关系变化

    http://www.cnblogs.com/bruce_zhao/p/3809886.html Oracle Ebs R12 SLA与GL关系变化 SLA概念:SLA(Subledger Accou ...

随机推荐

  1. mac下怎么删除隐藏文件比如 .Trashes文件

    U盘和移动硬盘接入Mac时会产生.Trashes,.Spotlight-V100,.fseventsd等文件 每插入Mac一次,都会检查是否有这些文件,如果没有,就会创建这些文件 特别是有时候,在文件 ...

  2. 反射实现java深度克隆

    一.克隆 有时想得到对象的一个复制品,该复制品的实体是原对象实体的克隆.复制品实体的变化不会引起原对象实体发生变化,这样的复制品称为原对象实体的克隆对象或简称克隆. 1.浅复制(浅克隆) 概念:被复制 ...

  3. Spring--AOP 例子

    先用代码讲一下什么是传统的AOP(面向切面编程)编程 需求:实现一个简单的计算器,在每一步的运算前添加日志.最传统的方式如下: Calculator.Java package cn.limbo.spr ...

  4. 一口一口吃掉Hibernate(六)——多对多关联映射

    今天来说说hibernate中的多对多关联映射,多对多关联映射涉及到单向映射和双向映射2种. 首先举个多对多关联例子:用户User和角色Role,一个用户可以属于多个角色,一个角色可以有多个用户.这就 ...

  5. 关于一些基础的Java问题的解答(三)

    11. HashMap和ConcurrentHashMap的区别   从JDK1.2起,就有了HashMap,正如上一个问题所提到的,HashMap与HashTable不同,不是线程安全的,因此多线程 ...

  6. JavaScript数据结构和算法----栈

    前言 栈是一种遵循后进先出(LIFO)原则的有序集合,新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另外一端就叫栈底.在栈里,新元素都靠近栈顶,旧元素都接近栈底.可以想象桌上的一叠书,或者厨房里的 ...

  7. 628. Maximum Product of Three Numbers

    Given an integer array, find three numbers whose product is maximum and output the maximum product. ...

  8. gdb调试的基本使用

    GDB调试 启动程序准备调试 GDB yourpram 或者 先输入GDB 然后输入 file yourpram 然后使用run或者r命令开始程序的执行,也可以使用 run parameter将参数传 ...

  9. bootstrap table 和 x-editable 使用方法

    最近需要做一些数据表格,有同事推荐EasyUI,但经过比较还是选择了Bootstrap,一款极为强大的表格组件,基于Bootstrap 的 jQuery .本文还将介绍Bootstrap-editab ...

  10. win10安装配置vs community 2015+opencv3.1.0

    下载并安装Visual Studio Community 2015.具体安装步骤自行解决.下载地址: https://www.visualstudio.com/ 下载opencv3.1.0,并解压.地 ...