SAP:Authority-check

在报表开发过程中,如果是几家公司代码使用同一个报表的时候一般都要做权限的检查了,这样可以防止没有其它公司代码的权限不能访问到相关的信息。 
authority-check介绍 
在abap中,我们经常会使用到authority-check,其中想必遇到最多的就是activity的authority check,如01代表create、02代表change、03代表display。 
authority-check object auth_obj [for user user ] 
id id1 {field val1}|dummy 
                       [id id2 {field val2}|dummy] 
... 
[id id10 {field val10}|dummy].


这种权限检查是在程序里面通过代码实现检查,下面进行分析各个参数: 
1)auth_obj 对应的是权限对象名。 
2)for user user 通过指定特定的用户进行权限检查,如果没有这个选项,就默认是当前登录的用户。 
3)id1 ..... 
id10 对应的是你至少有一个至多有10个权限字段检查。 
4)val1 ..... 
val10 对应的是权限字段检查的值。


从这里可以看出,它的意思就是说:对于权限对象object下面的不同的id(我们一般称为authority fields)进行不同的权限(这里的权限就是通过f1所指定的,如这里可以为01,02,03等等)检查. 
在abap中,如果这个object包含多个id,需要在这里全部指定出来。这里,如果不想进行某一个id的检查,那么可以使用field dummy进行ommit掉。 
另外这个authority-check后的sy-subrc返回值的不同也代表着不同的意思,这里稍微归总一下: 

权限check成功 

权限检查没有通过。权限对象在用户主数据已经维护了,但没有指定对应的值,或者非法的权限字段,或者指定太多权限字段。 

在写abap authority-check时,指定太多的id(最多只能有10个) 
12 
用户信息中不存在这样的authority object,即权限对象没有在用户主数据维护。 
16 
用户信息中不存在这样的profile 
24 
指定的fild名字与authority-object中id需要的field不匹配 
28 
用户信息不正确 
32 
用户信息不正确 
36 
用户信息不正确 
40 
非法的用户id作为参数for user进行权限检查。


使用注意: 
1)确定对应的权限对象名字,比如设置销售组织就对应有多个权限对象。 
dummy 字面意思是虚拟的意思。就是说权限对象中有这个权限检查字段,但是不对该字段做权限检查。


举例: 
"对销售办事处进行检查 
authority-check object 'Z_SD_VKGRP' 
id 'VKGRP' field gwa_vbap-vkgrp.


"对销售组织进行检查 
authority-check object 'V_VBAK_VKO' 
id 'VKORG' field gwa_vbap-vkorg 
id 'VTWEG' dummy 
id 'SPART' dummy 
id 'ACTVT' field '03'.

### SAP ALV 字段显示权限控制实现方法 在 SAP ALV 中,字段显示的权限控制可以通过多种方式实现。以下是几种常见的实现方法及其具体细节: #### 方法一:通过 AUTHORITY-CHECK 对象进行权限验证 可以利用 `AUTHORITY-CHECK` 语句来检查当前用户的权限。如果用户不满足特定条件,则隐藏相应的字段。此方法通常用于基于角色的安全性控制。 ```abap DATA: lv_return TYPE abap_bool. PERFORM frm_auth_check USING 'ZWL_VV' CHANGING lv_return. IF NOT lv_return IS INITIAL. " 用户无权访问该字段,因此将其隐藏 ENDIF. ``` 上述代码片段展示了如何调用子程序 `frm_auth_check` 进行权限校验[^3]。如果返回值表明用户不具备相应权限,则可以在 ALV 的字段列表中移除或隐藏这些字段。 --- #### 方法二:通过自定义函数模块隐藏字段 另一种常见的方式是在创建 ALV 输出之前,动态调整字段目录 (`FIELD_CATALOG`)。这一步骤允许开发者根据逻辑判断决定哪些字段应该被包含到最终输出中。 ```abap LOOP AT it_fieldcat INTO wa_fieldcat WHERE fieldname EQ 'SPECIFIC_FIELD'. PERFORM check_user_permission. IF no_permission_flag = abap_true. DELETE FROM it_fieldcat INDEX sy-tabix. " 删除未授权字段 ENDIF. ENDLOOP. ``` 在此示例中,`it_fieldcat` 是 ALV 字段目录表,而 `wa_fieldcat` 则代表单个字段条目。当检测到某字段不应向用户提供时,可通过删除操作将其排除在外[^2]。 --- #### 方法三:结合 GUI_STATUS 控制整体布局 除了单独处理每个字段外,还可以借助 GUI_STATUS 定义全局行为模式。例如,在状态栏上禁用按钮的同时也可以间接影响关联数据区域的表现形式。 虽然这种方法主要用于交互式控件 (如按钮),但它同样适用于更广泛的场景——即依据不同身份定制化视图结构[^1]。 --- ### 总结 综上所述,SAP ALV 报表中的字段显示权限控制主要依赖于以下几个方面: - 使用权威检查机制评估个体资格; - 动态修改字段配置集合以适应实时需求; - 调整界面组件属性从而达到一致性的用户体验效果。 以上策略能够有效保障敏感信息仅限合法人员查阅,并且可以根据实际项目情况灵活组合运用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值