SAP 之SD模块常用权限检查

举报
百里丶落云 发表于 2023/08/29 11:05:47 2023/08/29
【摘要】 序HELLO,这里是百里,一个学习中的ABAPER,在SAP中分成了很多个模块,其中SD模块主要是业务相关的模块,包括销售订单,发货单,收货单,发票等等数据.今天所讲述的内容是SD模块的常用权限检查.包括销售组织,工厂,部门等数据的检查. 什么是权限检查权限检查顾名思义,就是有某个权限查看某个东西,因为SAP中的工厂和销售组织等有很多很多,但是我们的代码只有一个代码.如果不同公司对应的数据...

HELLO,这里是百里,一个学习中的ABAPER,在SAP中分成了很多个模块,其中SD模块主要是业务相关的模块,包括销售订单,发货单,收货单,发票等等数据.今天所讲述的内容是SD模块的常用权限检查.包括销售组织,工厂,部门等数据的检查.

什么是权限检查

权限检查顾名思义,就是有某个权限查看某个东西,因为SAP中的工厂和销售组织等有很多很多,但是我们的代码只有一个代码.如果不同公司对应的数据都可以展示出来那么慢是一说,如果相互泄密不是更不好.这个时候就需要使用数据检查. 就是在我们输入选择屏幕时候,只能选择对应的数据内容,如果选择其他的非规定部门这提示,没有权限.

语法解析

我们主要是调用系统中自带的检查函数,来进行权限检查.

如检查销售组织和部门V_VBAK_VKO

AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'  
  ID 'VKORG' FIELD 'xxxxxxxx'  
  ID 'VTWEG' FIELD 'xxxxxxxx'  
  ID 'SPART' FIELD 'xxxxxxxx'  
  ID 'ACTVT' FIELD 'xxxxxxxx'.  
IF sy-subrc <> 0.  
* Implement a suitable exception handling here  
ENDIF.

如检查销售组织和产品组的V_KONH_VKO

AUTHORITY-CHECK OBJECT 'V_KONH_VKO'  
  ID 'VKORG' FIELD 'xxxxxxxx'  
  ID 'VTWEG' FIELD 'xxxxxxxx'  
  ID 'SPART' FIELD 'xxxxxxxx'  
  ID 'ACTVT' FIELD 'xxxxxxxx'.  
IF sy-subrc <> 0.  
* Implement a suitable exception handling here  
ENDIF.

调用方式

我们在SE38中,点击上面的模式,点击对应位置的权限检查. 输入检查函数名称.

image.png
系统就会自动带出对应检查数据. 通过修改对应的参数和字符串拼接达到检查的目的 .

实例演示

我们这里拿V_VBAK_VKO做个案例 . 包括单选时和区间使用两种方式 .

数据准备

检查函数前我们需要先准备数据集,这里通通都要调用基础表数据,如果不调用基础表数据会时的界面非常的卡顿.比如我们这里检查的是销售组织和部门两个字段. 我们这里就取基础表tvkos的字段 .

DATA:l_err TYPE string.  
  SELECT DISTINCT  
         vkorg,spart  
         INTO TABLE @DATA(lt_vkorg)  
         FROM tvkos  
         WHERE vkorg IN @s_vkorg AND spart IN @s_spart.

区间时使用方式

在区间时使用方法是将上述结果内容放在内表中,我们通过循环内容的内容将数据放在工作区中,再逐一检查.

LOOP AT lt_vkorg INTO DATA(ls_vkorg).  
    AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'  
     ID 'VKORG' FIELD ls_vkorg-vkorg  
     ID 'SPART' FIELD ls_vkorg-spart.  
  
    IF sy-subrc <> 0.  
      l_err = '销售组织' && ls_vkorg-vkorg && '部门' && ls_vkorg-spart && '无权限'.  
      MESSAGE l_err TYPE 'S' DISPLAY LIKE 'E'.  
      STOP.  
    ENDIF.  
  ENDLOOP.

单选时使用方式

单选是使用方式,比较简单,直接将获取数据内容的值放入到对应的工作区内即可.调用时我们只需要调用一次就可以.

AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'  
     ID 'VKORG' FIELD ls_vkorg-vkorg  
     ID 'SPART' FIELD ls_vkorg-spart.  
  
    IF sy-subrc <> 0.  
      l_err = '销售组织' && ls_vkorg-vkorg && '部门' && ls_vkorg-spart && '无权限'.  
      MESSAGE l_err TYPE 'S' DISPLAY LIKE 'E'.  
      STOP.  
    ENDIF.  


注意:我们在发现权限不对时一定要跟带着一条STOP使程序,停止下来,毕竟人家没有权限肯定需要权限停止 .

技术总结

今天讲述的内容是在ABAP 自开发程序中肯定会用到的内容,权限检查,当然不同模块的权限检查是不一样的,我们需要逐一的发现记录,百里也是初学者,本次只是针对对应的SD模块的常用检查进行讲解 .

百里鸡汤

朝为田舍郎,暮登天子堂。将相本无种,男儿当自强.

这里是百里,一个努力的学习者. 努力学习好好记录,点滴进步,就是成功.

wallhaven-gp8rwq.jpg

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。