FORM R12 MOAC

注意:设置好安全性配置文件后,一定要跑一个请求:维护安全性清单

 

在R12版本中,OU的控制采取了MOAC的方式,使用户的操作得到了改善。

而如果客户化的Form能够支持MOAC的功能,需要在界面上提供当前用户可以选择的OU字段供用户选择。

   

这样在Form的开发过程中需要如下的开发步骤:

1,PRE-FORM 触发器初始化MOAC配置环境

添加如下代码:

MO_GLOBAL.init('ONT');

— global.mo_ou_count

— global.mo_default_org_id

— global.mo_default_ou_name

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; — default org id not null

这段代码的作用是根据预制文件的设置,初始化OU的信息,将用户可以访问的OU信息插入到mo_glob_org_access_tmp表中,

同时将默认的OU ID、OU Name和OU Count分别写到global.mo_default_org_id, global.mo_default_org_id, global.mo_default_ou_name

具体细节可以查看数据库包:mo_global

   

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

   

其它没有特殊的步骤。

 

当前职责可访问的OU(MO:安全性配置文件)

--初始化环境

BEGIN

fnd_global.apps_initialize(user_id => 0,

resp_id => 50658,

resp_appl_id => 20003);

mo_global.set_policy_context(p_access_mode => 'S', p_org_id => 82);

mo_global.init('SQLAP');

END;

mo_global.init(<MO>);MO取值 为 FND_MO_PRODUCT_INIT表中

   

--以下SQL查询当前配置的MO:安全性配置文件

SELECT *

FROM per_security_profiles psp

WHERE psp.security_profile_id =

to_number(fnd_profile.value('XLA_MO_SECURITY_PROFILE_LEVEL'));

   

--以下SQL用来获取当前安全性配置文件和当前用户可访问的OU

SELECT per.organization_id, hou.name

FROM per_organization_list per, hr_operating_units hou

WHERE per.security_profile_id =

to_number(fnd_profile.value('XLA_MO_SECURITY_PROFILE_LEVEL'))

AND per.organization_id = hou.organization_id

AND hou.usable_flag IS NULL;

   

-- 查看应用是否注册为多组织的应用

Select *

From Fnd_Mo_Product_Init t

Where Application_Short_Name = 'ONT'

And Status = 'Y';

-- 解决办法[注册为多组织]

Begin

Fnd_Mo_Product_Init_Pkg.Register_Application('应用短缩名', 'SYSADMIN', 'Y');

Commit;

End;

   

   

   

   

   

   

----- 如果是模板的话

1、新增package MO_SETUP_UTL

2、添加参数:MO_DEFAULT_ORG_ID、MO_DEFAULT_OU_NAME、MO_OU_COUNT、MULTI_ORG_FLAG、CHART_OF_ACCOUNTS_ID、SET_OF_BOOKS_ID、CURRENT_RECORD、CHILD_RECORD_EXISTS、OLD_OPERATING_UNIT、OLD_ORG_ID

3、在FORM触发器中添加初始化

MO_SETUP_UTL.multi_org_event('PRE-FORM');

4、在OU数据项触发器WHEN-VALIDATE-ITEM添加

MO_SETUP_UTL.multi_org_event('WHEN-VALIDATE-ITEM');

5、其他触发器查看包:MO_SETUP_UTL查看是否需要添加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值