Oralce EBS R12中引入了MOAC的控制,所有多OU的表对象都添加了数据库VPD的控制策略,需要访问这些对象中的数据,首先需要进行多组织环境的初始化,但是如果客户化的应用中也需要具备多OU的能力,那也需要按照EBS的规范来创建数据库对象,同时访问客户化数据库对象数据时也需要对客户化应用进行多组织环境的初始化.
如下所示初始化我的客户化应用XHU:
BEGIN MO_GLOBAL.init('XHU'); END; ORA-20001: SQL_PLSQL_ERROR: N, ROUTINE, MO_GLOBAL.INIT, N, ERRNO, -20001, N, REASON, ORA-20001: SQL_PLSQL_ERROR: N, ROUTINE, MO_GLOBAL.SET_ORG_ACCESS, N, ERRNO, -20001, N, REASON, ORA-20001: APP-FND-02938: 多组织例程初始化产品: &PRODUCT 的会话失败。请通知您的支持代表。 ORA-06512: 在 "APPS.FND_MESSAGE", line 509 ORA-06512: 在 "APPS.MO_GLOBAL", line 36 ORA-06512: 在 "APPS.MO_GLOBAL", line 757 ORA-06512: 在 "APPS.MO_GLOBAL", line 700 ORA-06512: 在 line 3运行下面的SQL来检查一下客户化应用的情况:
SELECT COUNT(*) FROM fnd_mo_product_init t WHERE application_short_name = 'XHU' AND status = 'Y'; COUNT(*) ---------- 0
BEGIN fnd_mo_product_init_pkg.register_application('XHU', 'SYSADMIN', 'Y'); COMMIT; END;
上面语句执行后,客户化应用就具备了多组织访问的能力了,再次进行多组织的初始化就没有问题了。
当然如果你想去掉客户化应用的多组织能力,可以运行下面的代码来移除它
BEGIN fnd_mo_product_init_pkg.remove_application('XHU'); COMMIT; END;