-
请求组:系统请求组一般是会分配给多个职责,即多个职责具有请求权限
如果自定义请求组并分配给单个职责也可以,只是自定义请求组不包含系统请求。
-
功能表:职责如果不共用功能表(自定义功能表),可将请求权限赋予一个职责。
-
用户:仅指定用户有请求权限
-
请求参数: 屏蔽请求参数值
1. 请求组
职责分配一个请求组,将请求挂载到该请求组,职责就有了运行请求的权限。
请求挂载到请求组
职责中“检视->请求”或“报表->请求”运行报表
2. 功能表
将请求挂载到函数function(菜单项)。
Step1, 自定义一个函数
Step2, 属性型态选择“表单”
Step3, 表单TAB页中,表单选择“执行报表”
参数:请求简称和请求所在应用模组简称
CONCURRENT_PROGRAM_NAME=“CUX_CST_TRANSACTION_PKG_NC” PROGRAM_APPL_SHORT_NAME=“INV”
Step4, 将自定义的函数加入需要用的功能表(菜单)中。
自定义功能表,将该功能表仅分配给单个职责,就可以将请求权限控制到单个职责。
3. 用户
需求:包含成本、价格信息等,安全级别比较高的报表, 权限能否控制到用户?
例:实现仅用户“CONST2” 能运行请求
个性化,自定义请求名称的LOV:PROGLOVDEF
步骤1:将请求挂载到请求组,请求组分配给CONST2所在的职责,即CONST2能在某职责下运行请求
步骤2:个性化设置,非用户“CONST2”,将请求从LOV中排除
建立记录群组,群组名称自定义
select distinct p.user_concurrent_program_name, a.application_id, a.application_name, a.application_short_name, p.concurrent_program_name,
p.concurrent_program_id, p.application_id program_application_id, '$SRS$.'||p.concurrent_program_name descriptive_flexfield_name,
p.srs_flag, p.printer_name, p.output_print_style, p.required_style, p.save_output_flag, p.nls_compliant, p.execution_method_code,
p.mls_executable_id, p.mls_executable_app_id
from fnd_concurrent_programs_vl p, fnd_application_vl a, fnd_request_group_units u
where p.srs_flag in ('Y', 'Q') and
p.enabled_flag = 'Y' and
request_set_flag = 'N'
and ((a.application_id = u.unit_application_id
and u.application_id = :world.group_application_id
and u.request_group_id = :world.request_group_id
and u.request_unit_type = 'A')
or (p.application_id = u.unit_application_id
and p.concurrent_program_id = u.request_unit_id
and u.application_id = :world.group_application_id
and u.request_group_id = :world.request_group_id
and u.request_unit_type = 'P'))
and (((p.security_group_id is null or p.security_group_id = :world.security_group_id)
and (:world.enable_security_groups = 'Y'))
or (:world.enable_security_groups != 'Y'))
and p.application_id = a.application_id
and user_concurrent_program_name not in('请求名称')
4. 请求参数
需求:请求参数是值集,能够根据判断条件(如职责)屏蔽值集中某些值
例: 请求仓库参数的值集为:CUX_INV_SUBINVENTORY ,限定某些职责只能选择:60仓
方法1:动态值集
步骤1. 自定义一个Profile:值集CUX_INV_SUBINVENTORY只能选择60仓
SQL="SELECT MEANING \"Log Enabled\", LOOKUP_CODE
into :visible_option_value,
:profile_option_value
from fnd_lookups
where lookup_type = 'YES_NO'"
COLUMN="\"Log Enabled\"(30)"
步骤2. 定义表验证值集
where organization_id = 107
and secondary_inventory_name=
(decode(NVL(FND_PROFILE.VALUE('TEST'),'N'),'Y','60',secondary_inventory_name))
order by secondary_inventory_name
步骤3. 在职责层级设置设定档
步骤4. 测试成功, 在职责TC_CM_SUPERUSER下,请求参数(值集)只能选择60仓。
Q: 如何实现值集CUX_INV_SUBINVENTORY能选择10仓,60仓?
A:
where organization_id = 107
and (secondary_inventory_name=
(decode(NVL(FND_PROFILE.VALUE('TEST'),'N'),'Y','10',secondary_inventory_name))
or secondary_inventory_name=
(decode(NVL(FND_PROFILE.VALUE('TEST'),'N'),'Y','60',secondary_inventory_name)) )
order by secondary_inventory_name
方法2: 段值安全性
安全性规则是一种限制弹性域段值访问的安全性屏蔽功能,可以使用安全性规则为弹性域和报表参数值的范围定义值进行限定,从而限制访问。
完整操作是先定义安全性规则,再将安全性规则分配给应用产品责任。在定义过程中,我们先通过为段指定包括下限值和上限值在内的值范围来定义安全性规则要素。安全性规则要素适用于包括在所指定的值范围内的所有段值。每个安全性规则要素标识为 Include 或 Exclude,其中 Include 指包括指定范围内的所有值;Exclude 指排除指定范围内的所有值。由于规则会自动排除所有值(除非特别指定包括这些值),因此每个规则必须至少有一个Include 规则要素。Exclude 规则要素优先于 Include 规则要素。
步骤1. 定义值集CUX_INV_SUBINVENTORY
步骤2. 定义安全性规则
指定给相应的组织
Step3. 请求参数使用值集:CUX_INV_SUBINVENTORY, 并启用安全性检查。
Step4. 在指定了安全性规则的职责下:TC_IV_SUPERUSER运行请求,请求参数只能选择60仓。