支持MOAC功能的Form开发步骤

在R12版本中,OU的控制采取了MOAC的方式,使用户的操作得到了改善。
而如果客户化的Form能够支持MOAC的功能,需要在界面上提供当前用户可以选择的OU字段供用户选择。

功能展示如下图:

这样在Form的开发过程中需要如下的开发步骤:
1,PRE-FORM 触发器初始化MOAC配置环境
  添加如下代码:

DECLARE
 l_default_org_id NUMBER;
 l_default_ou_name VARCHAR2(30);
 l_ou_count    NUMBER;
BEGIN
   mo_global.init ('SQLAP');
   mo_utils.get_default_ou (l_default_org_id, l_default_ou_name, l_ou_count);
   :parameter.mo_default_org_id := l_default_org_id;
   :parameter.mo_default_ou_name := l_default_ou_name;
   :parameter.mo_ou_count := l_ou_count;
 
  fnd_message.debug('OU Count '||l_ou_count);
  
   IF L_OU_COUNT = 1 THEN
    MO_GLOBAL.SET_POLICY_CONTEXT('S',l_default_org_id);
   ELSE
     MO_GLOBAL.SET_POLICY_CONTEXT('M',null);
   END IF;
END; 

 这段代码的作用是根据预制文件的设置,初始化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,创建OULOV
  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

其它没有特殊的步骤。

本文转自以下Link, 并做些小小的修改...

http://bbs.erp100.com/thread-103395-1-1.html

 

posted on 2013-05-13 16:10  Ben's Blog  阅读(220)  评论(0编辑  收藏  举报