VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格(二)

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'EXPORTINGobject1           = 'Z_KONH_KLS'user              = sy-unametcode             = sy-tcode
*         optimize          =TABLESvalues            = gt_us335EXCEPTIONSuser_doesnt_exist = 1OTHERS            = 2.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF.
"--------------------@斌将军--------------------

2.3.2、参考代码

因为这些增强点是会反复调用,所以定义全局内表gt_us335,如果已经获取过权限值,就不再重复获取,提高代码效率

 程序MV45AFZZ→USEREXIT_FIELD_MODIFICATION

"--------------------@斌将军--------------------
FORM userexit_field_modification.
ENHANCEMENT 1  ZSD007_VA01_PRICE.    "active version
IF sy-tcode = 'VA01' OR sy-tcode = 'VA02' OR sy-tcode = 'VA03'.
IF screen-name = 'KOMV-KBETR'OR screen-name = 'VBAK-NETWR'"抬头 净值OR screen-name = 'VBAK-WAERK'"抬头 货币OR screen-name = 'VBAP-NETPR'"项目 净价OR screen-name = 'VBAP-NETWR'."项目 净值IF gt_us335 IS INITIAL."获取用户权限对象的值CALL FUNCTION 'GET_AUTH_VALUES'EXPORTINGobject1           = 'Z_KONH_KLS'user              = sy-unametcode             = sy-tcode
*         optimize          =TABLESvalues            = gt_us335EXCEPTIONSuser_doesnt_exist = 1OTHERS            = 2.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF.SORT gt_us335 BY object field lowval highval.DELETE ADJACENT DUPLICATES FROM gt_us335 COMPARING object field lowval highval."抛内存到LV69AF01FREE zcl_sd_memory_id=>sd005.CLEAR:gv_sd007_hide_price.READ TABLE gt_us335 WITH KEY field = 'ZSTUNR' lowval = '*' TRANSPORTING NO FIELDS.IF sy-subrc NE 0.gv_sd007_hide_price = 'X'."不显示EXPORT gv_sd007_hide_price TO MEMORY ID zcl_sd_memory_id=>sd005.ENDIF.ENDIF.IF gv_sd007_hide_price = 'X'.screen-active = 0.MODIFY SCREEN.ENDIF.ENDIF.
ENDIF.
ENDENHANCEMENT.
"--------------------@斌将军--------------------

 程序LV69AF01→TCTRL_KONDITIONEN_INIT

"--------------------@斌将军--------------------
FORM tctrl_konditionen_init.DATA: da_tfill LIKE sy-tabix.* Refresh table control if screen number has changedSTATICS: last_dynnr TYPE dynnr.IF sy-dynnr NE last_dynnr AND gf_called_by_lord IS INITIAL.last_dynnr = sy-dynnr.REFRESH CONTROL 'tctrl_konditionen' FROM SCREEN sy-dynnr.ENDIF.DESCRIBE TABLE xkomv LINES da_tfill......."""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1)
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 6  ZSD007_SALES_PRICE.    "active version
IF sy-tcode = 'VA01' OR sy-tcode = 'VA02' OR sy-tcode = 'VA03'.DATA:gv_sd007_hide_price TYPE char1."X 不显示LOOP AT SCREEN.IF screen-name = 'KOMP-NETWR' "净值OR screen-name = 'KOMK-WAERK' "货币OR screen-name = 'KOMP-MWSBP'. "税收.IMPORT gv_sd007_hide_price FROM MEMORY ID zcl_sd_memory_id=>sd005.IF gv_sd007_hide_price = 'X'."不显示screen-active = 0.MODIFY SCREEN.ENDIF.ENDIF.ENDLOOP.
ENDIF.
ENDENHANCEMENT.
ENDFORM.                    "tctrl_konditionen_init
"--------------------@斌将军--------------------

​条件页签列表里面的价格控制,和第一篇文章的一致,只用更改权限的IF判断即可,此处不再赘述

到此,通过权限配置,正向控制隐藏部分价格的增强就完成了

定期更文,欢迎关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/577088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES6之数组新增的扩展

扩展运算符的应用 ES6通过扩展元素符…&#xff0c;比如 rest 参数的逆运算&#xff0c;将一个数组转为用逗号分隔的参数序列 console.log(...[1, 2, 3]) // 1 2 3console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5[...document.querySelectorAll(div)] // [<div>, <di…

GenerateBlocks Pro插件 构建更好的WordPress网站

GenerateBlocks Pro插件 构建更好的WordPress网站 GenerateBlocks Pro插件是一个 WordPress 插件&#xff0c;几乎可以完成任何事情&#xff0c;可让您创建轻量级和多功能的网站。由与流行且快速的 GeneratePress 主题相同的创作者构建&#xff0c;该插件不负众望。使用 Genera…

大疆L1激光点云数据处理(DJI Terra-大疆智图)

大疆L1激光点云数据处理 前言处理步骤查看成果 前言 大疆L1是一个激光雷达载荷&#xff0c;该载荷包括一个激光点云传感器和一个可见光传感器。截止2023年12月&#xff0c;已经发布了升级版L2&#xff0c;本文以L1获取的数据为例。 在使用L1的时候&#xff0c;应该开启RTK模式…

如何修复无法读取的U盘,修复U盘的方法

无法读取U盘是常见的故障&#xff0c;可能的原因有很多&#xff0c;例如U盘驱动器问题、文件系统损坏、电脑USB接口问题等。本文将详细分析这些原因&#xff0c;并提供相应的解决方法&#xff0c;帮助用户解决无法读取U盘的问题。 如何修复无法读取的U盘&#xff0c;修复U盘的方…

二叉树题目:分裂二叉树的最大乘积

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;分裂二叉树的最大乘积 出处&#xff1a;1339. 分裂二叉树的最大乘积 难度 6 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root&…

电脑触摸板用法大全

单手指&#xff1a; 单击→左键 两次单击→打开文件夹&#xff08;也就是鼠标的连续按两次左键&#xff09; 快速两次单击&#xff0b;拖动可以移动文件夹位置&#xff08;拖动图标&#xff09; 双指&#xff1a; 单击→右键 按住→可以上下/左右滑动窗口 三指&#xff1a; 同…

《PCI Express体系结构导读》随记 —— 前言

PCI与PCI Express&#xff08;PCIe&#xff09;总线在处理器系统中得到了大规模应用。PCISIG&#xff08;Peripheral Component Interconnect Special Interest Group&#xff0c;外围部件互连专业组&#xff09;也制定了一系列PCI与PCI Express总线相关的规范&#xff0c;这些…

探索C语言标准库中的qsort函数

引言 在C语言中&#xff0c;标准库提供了丰富的函数来支持各种操作&#xff0c;其中之一是qsort函数。这个函数是用于排序数组的利器&#xff0c;能够轻松地对一维数组、二维数组和结构体数组等不同类型的数据进行排序。本文将深入探讨qsort函数的使用&#xff0c;包括一维数组…

STL 优先队列priority_queue练习

目录 STL之优先队列priority_queue 绝对值排序问题&#xff08;题目描述&#xff09; &#xff08;一&#xff09;使用优先队列prioroty_queue实现绝对值降序排序 &#xff08;二&#xff09;使用vector实现绝对值降序排序&#xff08;使用库中的全局sort()函数&#xff09;…

P5740最厉害的学生

一&#xff1a;题目 二&#xff1a;思路分析 这道题就是会使用C语言的结构体&#xff0c;然后知道结构体数组 三&#xff1a;代码 #include <stdio.h> struct Stu {char name[10];int c;int m;int e; }s[1005];//结构体数组 int main() {int n 0;scanf("%d"…

商品列表无限加载

实现商品列表无限加载功能 需求&#xff1a;例如在商品列表页鼠标向下滑动自动监听去掉接口老数据新数据拼接展示&#xff0c;加载完毕结束监听 第一步 使用elementui中InfiniteScroll 无限滚动组件 第二步 如果数据加载完成了则停止监听 // 核心代码添加 v-infinite-scroll属…

GEE:基于MCD64A1的GlobFire的火灾时间

作者:CSDN @ _养乐多_ 本文将介绍如何可视化 JRC/GWIS/GlobFire/v2/FinalPerimeters 数据集中每个火灾斑块,以及火灾斑块发生火灾的时间。因为原始数据的时间是年月日格式,可视化只能是将其转换成 Day Of Year (DOY,一年中的天数,0-366),这样才能了解火灾发生的具体时…

数据从A集群,使用logstash迁移到B集群,如何保持_Id一致

有时候&#xff0c;我们在跨集群数据同步的时候&#xff0c;需要保持_id一致。这里给出一个案例。 这里直接给出一个配置文件 input {elasticsearch {hosts > "es.production.mysite.org"index > "mydata-2018.09.*"query > { "query":…

4.9【共享源】流的多生产者和消费者

当一个系统中存在多个生产者和消费者时&#xff0c;情况可能会变得复杂。 了解生产者和消费者流之间支持的基数非常重要。 本质上&#xff0c;一个生产者流可以与多个消费者流连接&#xff0c;但一个消费者流只能连接到一个生产者流。请注意&#xff0c;基数关系仅限于单个流&…

Fusion360 服务器验证警告 解决方案

提示信息 服务器验证警告 无法验证安全证书。代理服务器、安全软件或废弃的操作系统补丁常常会触发此错误消息。 如果要更改此设置&#xff0c;请访问“网络/服务器验证"首选项页面。 解决方案 方案1:关闭你的代理软件&#xff08;方便快捷&#xff09; 方案2:观察代理软…

视频号小店需要多少资金?

我是电商珠珠 视频号团队自22年发展视频号小店以来&#xff0c;为人所知。和抖音电商一样&#xff0c;都是在发展的第二年掀起了浪花。 也就是今年&#xff0c;很多想要入驻的新手&#xff0c;对于视频号小店不太了解&#xff0c;不清楚到底需要多少资金。 今天&#xff0c;…

欧洲:数百家电商网站泄露了用户支付信息

欧洲刑警组织在12月22日发布的新闻稿中&#xff0c;称由 17 个国家联合参与的执法行动已发现数百个电商平台存在恶意脚本攻击&#xff0c;其用户的信用卡或支付卡数据已遭到泄露。 这项已进行两个月的执法行动由希腊牵头&#xff0c;欧洲刑警组织参与协调&#xff0c;并得到网络…

卷积神经网络基础与补充

参考自 up主的b站链接&#xff1a;霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 https://blog.csdn.net/m0_37867091?typeblog CNN的历史发展&#xff1a; 这一点老师上课的时候也有讲到&#xff0c;BP的出现对CNN的发展至关重要 卷积的特性&#x…

深度学习中用来训练的train.py 探究学习2.1( 数据预处理)

下列为mmcls中数据预处理部分 train_pipeline是一个训练过程的配置列表&#xff0c;用于定义数据预处理的步骤。下面是train_pipeline中各个步骤的介绍&#xff1a; 1. LoadImageFromFile&#xff1a;从文件中加载图像。 2. RandomResizedCrop&#xff1a;随机缩放裁剪图像…

第十五节TypeScript 接口

1、简介 接口是一系列抽象方法的声明&#xff0c;是一些方法特征的集合&#xff0c;这些方法都应该是抽象的&#xff0c;需要有由具体的类去实现&#xff0c;然后第三方就可以通过这组抽象方法调用&#xff0c;让具体的类执行具体的方法。 2、接口的定义 interface interface_…