分类目录归档:经验闲谈

PLSQL存储过程金额大写的转换

function lcw_get_money(money in number) return varchar2 is
    c_money  VARCHAR2(12);
    b_string VARCHAR2(80);
    m_string VARCHAR2(60) := '分角圆拾佰仟万拾佰仟亿';
    n_string VARCHAR2(40) := '壹贰叁肆伍陆柒捌玖';
    n        CHAR;
    len      NUMBER(10);
    i        NUMBER(10);
    tmp      NUMBER(12);
    is_zj    BOOLEAN;
    z_count  NUMBER(10);
    l_money  NUMBER;
    l_money1 NUMBER;
    l_sign   VARCHAR2(10);
  BEGIN
    l_money1 := to_number(money);
    l_money  := abs(money);
    IF l_money1 < 0 THEN
      l_sign := '负';
    ELSE
      l_sign := '';
    END IF;
    tmp     := round(l_money, 2) * 100;
    c_money := rtrim(ltrim(to_char(tmp, '999999999999')));
    len     := length(c_money);
    is_zj   := TRUE;
    z_count := 0;
    i       := 0;
    WHILE i < len LOOP
      i := i + 1;
      n := substr(c_money, i, 1);
      IF n = '0' THEN
        IF len – i = 6 OR len – i = 2 OR len = i THEN
          IF is_zj THEN
            b_string := substr(b_string, 1, length(b_string) – 1);
            is_zj    := FALSE;
          END IF;
          IF len – i = 6 THEN
            b_string := b_string || '万';
          END IF;
          IF len – i = 2 THEN
            b_string := b_string || '圆';
          END IF;
          IF len = i THEN
            b_string := b_string || '整';
          END IF;
          z_count := 0;
        ELSE
          IF z_count = 0 THEN
            b_string := b_string || '零';
            is_zj    := TRUE;
          END IF;
          z_count := z_count + 1;
        END IF;
      ELSE
        b_string := b_string || substr(n_string, to_number(n), 1) ||
                    substr(m_string, len – i + 1, 1);
        z_count  := 0;
        is_zj    := FALSE;
      END IF;
    END LOOP;
    b_string := l_sign || b_string;
    RETURN b_string;
  EXCEPTION
    WHEN OTHERS THEN
      RETURN(SQLERRM);
  END;

职责与配置文件的关系信息

select fpv.profile_option_value, fpv.level_value, fst.responsibility_name
  from fnd_profile_options fpo,
       fnd_profile_option_values fpv,
       fnd_profile_options_tl tl,
       fnd_responsibility_tl fst,
       (SELECT 10001 level_id, '地点' 文件安全性
          FROM dual
        UNION
        SELECT 10002 level_id, '应用产品' 文件安全性
          FROM dual
        UNION
        SELECT 10003 level_id, '责任' 文件安全性
          FROM dual
        UNION
        SELECT 10004 level_id, '用户' 文件安全性
          FROM dual
        UNION
        SELECT 10005 level_id, '服务器' 文件安全性
          FROM dual
        UNION
        SELECT 10006 level_id, '组织' 文件安全性 FROM dual) lv
 where 1 = 1
   and fpv.profile_option_id = fpo.profile_option_id
   and tl.language = 'ZHS'
   and fst.language = 'ZHS'
   and tl.profile_option_name = fpo.profile_option_name
      –and tl.user_profile_option_name like '%MO%业务实体%'
      –and fpo.profile_option_name = 'DEFAULT_ORG_ID'
   and fpo.profile_option_name = 'CUX_INV_ACCESS_SINV_CQC'
   and fpv.level_value = fst.responsibility_id
   and lv.level_id = fpv.level_id
–and fpv.level_value = fnd_global.resp_id
–and fpv.level_id = 10003 –职责层

 

–初始化环境


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;





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


SELECT *


  FROM per_security_profiles psp


 WHERE psp.security_profile_id =


 

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

和fnd_profile.value('ORG_ID') 来配置




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


SELECT hou.organization_id, hou.name


  FROM hr_operating_units hou


 WHERE hou.usable_flag IS NULL


   AND EXISTS


 (SELECT 1


          FROM per_organization_list per


         WHERE per.organization_id = hou.organization_id


           AND per.security_profile_id =


               to_number(fnd_profile.value('XLA_MO_SECURITY_PROFILE_LEVEL'))


        UNION


        SELECT 1


          FROM dual


         WHERE to_number(fnd_profile.value('ORG_ID')) = hou.organization_id)

 

 

表名:per_organization_list per, hr_operating_units hr

条件:WHERE per.security_profile_id(+) = to_number(fnd_profile.VALUE('XLA_MO_SECURITY_PROFILE_LEVEL'))
AND hr.organization_id = per.organization_id(+)
AND hr.usable_flag is null
AND (EXISTS (SELECT 1
           FROM per_organization_list per1
          WHERE hr.organization_id = per1.organization_id
            AND per1.security_profile_id =
                to_number(fnd_profile.value('XLA_MO_SECURITY_PROFILE_LEVEL'))) OR
        fnd_profile.value('XLA_MO_SECURITY_PROFILE_LEVEL') = 0)

EBS常用的配置参数获取

 Select fnd_profile.value('GL_SET_OF_BKS_ID') from dual

select fnd_profile.value('SO_ORGANIZATION_ID') from dual;

select fnd_profile.value('ORG_ID') from dual;

fnd_global.resp_id;

select TO_NUMBER(FND_PROFILE.VALUE('USER_ID')) from dual;
select TO_NUMBER(FND_PROFILE.VALUE('login_ID')) from dual;
org_id = :$PROFILES$.ORG_ID;也可用此来取得,在定义报表参数时来定义;

fnd_profile.value('MFG_ORGANIZATION_ID');

select FND_PROFILE.VALUE('CONCURRENT_REQUEST_ID') from dual;

fnd_global.resp_id;

fnd_global.resp_id;

— 取得当前的库存组织
SELECT t.organization_code
  FROM inv.mtl_parameters t
 WHERE t.organization_id = fnd_profile.value('MFG_ORGANIZATION_ID');
— 取得当前的业务实体
SELECT hou.name
  FROM hr_operating_units hou
 WHERE hou.organization_id = fnd_profile.value('ORG_ID');
 — 取得当前的帐套
SELECT gl.name
  FROM gl_ledgers gl
 WHERE gl.ledger_id = fnd_profile.value('GL_SET_OF_BKS_ID');

新增oracle数据源

        今天在用一个工具的时候,需要连接excel数据源,结果却在新增数据源的时候,发现如下图所示的结果,可以看见没有oracle类型的驱动程序可以选择,原因不明,但是却还是可以找到解决方法,直接双击如图所示的exe可执行文件即可,然后按照正常的配置数据源的步骤即可。

sys

无oracle源

选择类型

测试成功
 

 

Oracle EBS如何开启(关闭)关于此页和个性化页

      Oracle EBS系统有时候需要对web界面做个性化开发或者追踪问题,因此需要对系统启用"关于此页"和"个性化页",系统默认不开启此功能,需要我们自己去开启,开启方式如下所示:
    用管理员权限修改的两个配置文件参数
          FND:诊断,将地点层由否改为是
          个性化自助定义,将地点层由否改为是
    参数说明:
         FND:诊断:用于设置是否在登录页面显示“关于此页”;
         个性化自助定义:用户设置在登录后,web页面是否显示“个性化页”; 
    但如果要隐藏隐藏“关于此页”,需同时关闭上面两个配置文件。 
       修改前:
           登录首页左下角有“关于此页”字样,登录后右上角有“个性化页”字样; 
       修改后:
           登录首页左下角无“关于此页”字样,登录后右上角无“个性化页”字样。