天天看點

SYS_R12 MOAC多組織的四個應用(案例)

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>

(2). 建立Policy Function

(3). 注冊VPD Policy

(4). 比較注冊Policy前後,View的輸出結果,由10條變為了7條,直接過濾了USD的記錄

    a. 注冊前

    a. 注冊後

Thanks and Regards

<b>ERP技術讨論群: 288307890</b>

<b>技術交流,技術讨論,歡迎加入</b>

<b>Technology Blog Created By Oracle ERP - 鮑建立</b>