1、文档说明
1.1、内容回顾
之前发表过相关文章《VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格(一)》,本篇文章对上一篇文章做补充说明。
第一篇文章是通过拥有权限,则隐藏价格的模式,即对需要隐藏价格的用户,配置权限对象,使其通过权限校验,然后隐藏价格;没有配置权限对象的用户,权限校验不通过,则不隐藏价格。
1.2、问题说明
此处存在两个问题:(如果项目忽略这两个问题,则还可以参照第一篇文章的方式实现)
1.对于自定义权限对象,如果将其添加到SAP_ALL中,会导致拥有SAP_ALL权限的用户,也校验通过,并且看不到价格。(主要问题)
2.该方法较反常规,属于拥有权限,但是不能查看价格的反向控制(当然这点不是关键问题)
因此,在实际项目中,为了防止正式机拥有ALL权限的用户无法查看价格,则实施没有权限,隐藏价格,有权限,则查看价格的方式,如此也更能符合思维习惯。
2、实现方式
2.1、权限分配
可以查看所有价格的用户,配置定价过程字段为ZK01,配置步骤编号字段为 *
只能查看部分价格的用户,配置定价过程字段为ZK01,配置步骤编号字段为401 - 800,0-400步骤编号的价格则看不到
2.2、仅修改权限判断(存在问题)
想要实现没有权限,则隐藏价格,可能直接更改权限的IF判断就可以实现,本来是IF = 0(有权限)隐藏,更改为IF <> 0(无权限)隐藏。
2.2.1、存在的问题
在原文中,关于条件页签里面的价格控制可以这么实现,但是对于抬头和条件页签上部的这几个价格字段(步骤编号属于0-400)的控制,是只校验了定价过程,
因为此增强点处没有步骤编号字段,按照原逻辑,此处校验成功了,就可以隐藏价格了。
但是改成当前逻辑,校验成功了,就可以显示价格了,那么只要配置定价过程的用户,就都可以看到,其中也包括配置了定价过程但限制查看价格的用户
因此,只修改IF判断,抬头价格控制不住。
2.3、根据用户权限值判断
针对以上两处增强点的修改,通过用户权限值进行判断,因为只会存在两种情况:
1.用户维护了定价过程ZK01,步骤编号为*
2.用户维护了定价过程ZK01,步骤编号为401-800
所以只用判断步骤编号是*,则抬头这些价格要显示。如果是范围值,则肯定不显示。
2.3.1、获取用户维护的权限对象值
通过函数GET_AUTH_VALUES获取当前用户已经配置的权限对象Z_KONH_KLS维护的值
"--------------------@斌将军-------------------- "获取用户权限对象的值 CALL FUNCTION 'GET_AUTH_VALUES' EXPORTING object1 = 'Z_KONH_KLS' user = sy-uname tcode = sy-tcode * optimize = TABLES values = gt_us335 EXCEPTIONS user_doesnt_exist = 1 OTHERS = 2. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. "--------------------@斌将军--------------------
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接