EBS多OU和多帳套客戶化總結


(一)  多OU總結
1. Form多OU實現 1)  創建一個Table,以CUX_AP_CHECK_HEADER_ALL為例
2)  創建Table的兩個Synonym(一個不含_ALL,一個以_ALL結尾):CUX_AP_CHECK_HEADER和CUX_AP_CHECK_HEADER_ALL
3)  給不含_ALL的Synonym:CUX_AP_CHECK_HEADER加上組織屏蔽的策略函數
dbms_rls.add_policy(object_name       => 'CUX_AP_CHECK_HEADER',
          policy_name       => 'ORG_SEC',
          policy_function => 'MO_GLOBAL.ORG_SECURITY',
              policy_type       =>  dbms_rls.shared_context_sensitive);
4)  在不含_ALL的Synonym的基礎上創建視圖: CUX_AP_CHECK_HEADER_V
5)  進入FORM時(pre-form觸發器)添加代碼:
mo_global.init(&p_appl_shortname);--p_appl_shortname為應用簡稱
6)  當選擇某個OU時(一般在when_validate_item觸發器)中添加代碼:mo_global.set_policy_context('S',&p_org_id);--p_org_id為OU的id
2. Report多OU實現 1)  給並發程序設置業務實體模式:單個,多個和空(默認)。一般設置為‘單個’
業務實體模式對應表fnd_concurrent_programs中的multi_org_category字段
2)  得到當前OU的值。
使用:mo_global.get_current_org_id或者fnd_global.org_id
3)  在報表的參數和報表的邏輯中加上OU的限制
3. GL數據的多OU實現 1)  得到當前OU的值。
使用:mo_global.get_current_org_id或者fnd_global.org_id
2)  根據OU的值得到部門段的值:
DECLARE
    l_segment1  VARCHAR2(150);--部門段
   BEGIN  
SELECT o3.attribute5
   INTO l_segment1
  FROM hr_all_organization_units     o,
       hr_all_organization_units_tl  otl,
       hr_organization_information   o2,
       hr_organization_information   o3
WHERE o.organization_id = o2.organization_id
   AND o.organization_id = o3.organization_id
   AND o2.org_information_context = 'CLASS'
   AND o3.org_information_context = 'Operating Unit Information'
   AND o2.org_information1 = 'OPERATING_UNIT'
   AND o2.org_information2 = 'Y'
   and o.organization_id = otl.organization_id
   and o.organization_id = &p_org_id –OU id
   AND otl.LANGUAGE = USERENV('LANG');
END;
3)  將步驟2得到的值作為限制條件:
SELECT gl_code_combinations gcc WHERE gcc.segment1 = l_segment1;
4.  Interface多OU總結

1)  給並發程序設置業務實體模式:單個,多個和空(默認)。業務實體模式對應表fnd_concurrent_programs中的multi_org_category字段
2)  如果接口的導入程序中OU作為一個參數,則應該將所有的OU作一次循環。
5.  多OU實現擴展知識

1)  給客戶化應用注冊和取消MOAC的控制
fnd_mo_product_init_pkg.register_application(注冊應用)
fnd_mo_product_init_pkg.remove_application(取消應用)
查看支持MOAC的應用SQL:
SELECT * FROM fnd_mo_product_init;
2)  給數據庫對象注冊和取消策略-policy
dbms_rls.add_policy(注冊策略)
dbms_rls.drop_policy(取消策略)
3)  多OU 涉及到的表
a)   查看數據庫對象是否增加了策略-policy
SELECT * FROM dba_policies;
b)   查看當前session所能訪問的OU
SELECT * FROM mo_glob_org_access_tmp;
c)   查看當前session應用上下文(context)的值(說明:OU的值保存在context中)
SELECT * FROM dba_context dc WHERE dc.namespace LIKE 'MULTI%';
MOAC使用的應用程序上下文:MULTI_ORG,MULTI_ORG2
(二)  多帳套總結

1.   客戶化開發中的多帳套屏蔽

1)  得到當前OU的值。
使用:mo_global.get_current_org_id或者fnd_global.org_id
2)  根據組織id得到帳套id和公司名稱。SQL語句為:
DECLARE 
   l_org_information3 VARCHAR2(150);--帳套id
        l_company_desc     VARCHAR2(150);--公司中文描述
  BEGIN
   SELECT o3.org_information3,o3.attribute3
     INTO l_org_information3,l_company_desc
     FROM hr_all_organization_units    o,
          hr_all_organization_units_tl otl,
          hr_organization_information  o2,
          hr_organization_information  o3
    WHERE o.organization_id   = o2.organization_id
      AND o.organization_id   = o3.organization_id
      AND o2.org_information_context || '' = 'CLASS'
      AND o3.org_information_context = 'Operating Unit Information'
      AND o2.org_information1 = 'OPERATING_UNIT'
      AND o2.org_information2 = 'Y'
      AND o.organization_id   = otl.organization_id
      AND otl.language        = USERENV('LANG')
      AND o.organization_id   = &p_org_id;--OU id
   END;
3)  得到本位幣,SQL語句為:
DECLARE
l_local_currency_code VARCHAR2(15);--本位幣
BEGIN
SELECT gsob.currency_code
    INTO l_local_currency_code
   FROM gl_sets_of_books gsob, hr_operating_units hou
  WHERE gsob.set_of_books_id = hou.set_of_books_id
  AND   hou.organization_id  = &p_org_id;--OU ID
END; 
4)  在程序中加上帳套和本位幣的限制
2.   多帳套實現擴展

1)  得到帳套的SQL語句為:
SELECT * FROM gl_ledgers;
2)  得到法人的SQL語句為:
SELECT * FROM xle_entity_profiles;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM