Oracle EBS 利用安全性规则来实现COA值集的安全性查询

CREATE OR REPLACE VIEW CUX_GL_COA_SECURITY_V AS
SELECT ffv.flex_value segment1
      ,ffv.description
      ,ffv.summary_flag
  FROM fnd_flex_values_vl  ffv
      ,fnd_flex_value_sets ffs
 WHERE (ffv.flex_value_set_id = ffs.flex_value_set_id)
       AND (ffs.flex_value_set_name = '值集名称')
     --排除实现段
       AND ffv.enabled_flag = 'Y'
       AND SYSDATE BETWEEN nvl(ffv.start_date_active
                              ,SYSDATE) AND nvl(ffv.end_date_active
                                               ,SYSDATE)
  
       AND (((1 = 1) AND (gl_aff_awc_api_pkg.gl_valid_flex_values(SYSDATE
                                                                 ,ffv.flex_value) = 'Y')))
       AND NOT EXISTS
 (SELECT NULL
          FROM fnd_flex_value_rule_lines  l
              ,fnd_flex_value_rule_usages u
         WHERE u.application_id = fnd_profile.value('RESP_APPL_ID')
               AND u.responsibility_id = fnd_profile.value('RESP_ID')
               AND u.flex_value_set_id = ffs.flex_value_set_id
               AND l.flex_value_rule_id = u.flex_value_rule_id
               AND l.include_exclude_indicator = 'E'
               AND ffv.flex_value BETWEEN nvl(decode(u.flex_value_set_id
                                                    ,ffs.flex_value_set_id
                                                    ,l.flex_value_low
                                                    ,NULL)
                                             ,ffv.flex_value) AND nvl(decode(u.flex_value_set_id
                                                                            ,ffs.flex_value_set_id
                                                                            ,l.flex_value_high
                                                                            ,NULL)
                                                                     ,ffv.flex_value))
       AND NOT EXISTS (SELECT NULL
          FROM fnd_flex_value_rule_usages u
         WHERE u.application_id = fnd_profile.value('RESP_APPL_ID')
               AND u.responsibility_id = fnd_profile.value('RESP_ID')
               AND u.flex_value_set_id = ffs.flex_value_set_id
               AND NOT EXISTS (SELECT NULL
                  FROM fnd_flex_value_rule_lines l
                 WHERE l.flex_value_rule_id = u.flex_value_rule_id
                       AND l.include_exclude_indicator = 'I'
                       AND ffv.flex_value BETWEEN nvl(decode(u.flex_value_set_id
                                                            ,ffs.flex_value_set_id
                                                            ,l.flex_value_low
                                                            ,NULL)
                                                     ,ffv.flex_value) AND
                       nvl(decode(u.flex_value_set_id
                                 ,ffs.flex_value_set_id
                                 ,l.flex_value_high
                                 ,NULL)
                          ,ffv.flex_value)));

猜你喜欢

转载自blog.csdn.net/x6_9x/article/details/119800804