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_CHEC
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;
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com