DECLARE
  v_current_org_id NUMBER;
  v_access_mode    VARCHAR2(2);
  v_ou_count       NUMBER;
  v_org_id         NUMBER;
  v_mo_init_done   VARCHAR2(2);
  v_check_access   VARCHAR2(2);
  v_ou_name        VARCHAR2(240);
BEGIN
 
  --设置Org访问模式,S为单OU访问,M为多OU访问,A为所有OU访问
  --Single OU Mode
  mo_global.set_policy_context(p_access_mode => 'S', p_org_id => 93);
  --重置以上设置
  arp_standard.sysparm.org_id := 93;
  --或者使用如下API
  ar_mo_cache_utils.set_org_context_in_api
 
  --Multiple OU Mode(simulate login to a specific responsibility)
  --初始化Multi Org,临时表 mo_glob_org_access_tmp 有数
  --This will read the MO profile option values for your responsibility/user, and will initialize the Multi Org Access.
  fnd_global.apps_initialize(userid,resp_id,resp_appl_id);--匿名块测试时,需要模拟登陆
  mo_global.init('AR');

  --检查Org_id是否存在临时表 mo_glob_org_access_tmp;
  --check_valid_org 与 check_access 类似,check_valid_org可以跑出错误信息
  SELECT mo_global.check_access(101)
    INTO v_check_access
    FROM dual;
  --获取当前Org_id;若没有init,访问模式为S或A,则返回当前Org_id,若有init,且访问模式为S,则返回init的org_id
  SELECT mo_global.get_current_org_id
    INTO v_current_org_id
    FROM dual;
  --获取当前Org访问模式
  SELECT mo_global.get_access_mode
    INTO v_access_mode
    FROM dual;
  --获取当前多组织访问可访问的OU数;若没有init,则为空
  SELECT mo_global.get_ou_count
    INTO v_ou_count
    FROM dual;
  --验证并返回Org_id;若没有init,且访问模式为S;或者有init,则返回Org_id
  SELECT mo_global.get_valid_org(101)
    INTO v_org_id
    FROM dual;
  --验证MO是否已初始化,Y/N;若有init或者没有init但访问模式为S,则返回Y
  SELECT mo_global.is_mo_init_done
    INTO v_mo_init_done
    FROM dual;
  --获取临时表 mo_glob_org_access_tmp中Org名称
  SELECT mo_global.get_ou_name(101)
    INTO v_ou_name
    FROM dual;
END;

R11初始化职责:
BEGIN
  fnd_client_info.set_org_context(236);
END
 
posted on 2019-06-19 17:19  聪聪zcj  阅读(650)  评论(0编辑  收藏  举报