SAP权限对象的校验

简介: 什么是权限对象?还是直接打开SAP用事务码SU21看看权限对象长什么样子使用事务码SU21可以查看SAP系统中所有的(系统自带的or自定义的)权限对象,【权限对象】中配置了【权限字段】现在我们看到了权限对象是什么东东,那么,我们如何在代码中对权限对象进行检验,从而做到对不同的权限,进行不同的编码呢.

什么是权限对象?
还是直接打开SAP用事务码SU21看看权限对象长什么样子
image
image
使用事务码SU21可以查看SAP系统中所有的(系统自带的or自定义的)权限对象,【权限对象】中配置了【权限字段】
现在我们看到了权限对象是什么东东,那么,我们如何在代码中对权限对象进行检验,从而做到对不同的权限,进行不同的编码呢?
第一、我们SAP系统中有2个用户,用户名分别是TEST0325和TEST0326,我们作为SAP管理员,使用事务码SU01针对这两个用户,分别配置了不同的角色,比如让TEST0325拥有名为M_BEST_EKG这个权限对象的权限,而让TEST0326这个用户不具备M_BEST_EKG的权限对象的权限。用户配好了。
第二、我们写一个程序(ZRP001),并为这个程序分配一个事务码(ZRP001)。我们把这个事务码的使用权限配置给用户TEST0325同时配置给用户TEST0326。
第三、我们为程序ZRP001添加权限验证的代码如下所示:

AUTHORITY-CHECK OBJECT 'M_BEST_EKG'
  ID 'ACTVT' FIELD '03'
  ID 'EKGRP' FIELD '101'.
IF SY-SUBRC = 0."等于零表示,拥有权限
  WRITE 'belong to M_BEST_EKG'.
ELSE.
  WRITE 'NOT BELONG'.
ENDIF.

通过上述三个步骤,我们做了三件事:

  1. 创建1个程序ZRP001,程序的代码进行了针对M_BEST_EKG这个权限对象的校验;
  2. 为程序ZRP001分配事务码ZRP001;
  3. 创建2个用户,两个用户的共同点是都具有事务码ZRP001的访问权限,区别是,TEST0325拥有M_BEST_EKG这个权限对象的权限,而TEST0326不具备M_BEST_EKG这个权限对象的权限;

然后我们分别使用TEST0325和TEST0326这两个用户登录SAP,分别去运行ZRP001这个事务码,换句话说,也就是去调用了程序ZRP001中的权限对象的校验代码,那么依据,两个用户权限的不同,会得到不同的程序运行结果。
下面我们演示一下之前这部分代码,在两个不同用户的执行中,的运行结果:
登录TEST0325
image
运行结果
image
登录TEST0326
image
运行结果
image
看到上述测试结果,满足了我们作为abap开发在写代码的时候,对于不同的SAP用户,让他们在运行同一个程序时,进入不同代码,的目的。
下面详细叙述一下,这个测试的完整过程。

  1. 写abap程序:SE80
    image

写代码的过程不详述,只是解释下AUTHORITY-CHECK语句执行结果变量SY-SUBRC的含义,如果SY-SUBRC=0说明,当前SAP用户拥有这个权限对象的权限;如果SY-SUBRC不等于0,则说明这个用户不具备这个权限。

  1. 为程序分配事务码:SE93
    image
  2. 创建角色:PFCG
    image

我们需要两个角色,ZL_TEST_001和ZL_TEST_002
为角色ZL_TEST_001配置事务码ZRP001的权限和权限对象M_BEST_EKG的权限;
为角色ZL_TEST_002仅仅配置事务码ZRP001的权限;
下面是PFCG的操作过程
image
image
image
image
image
如上图所示,我们使用事务码PFCG创建了一个空的,全新的角色ZL_TEST_001,所有的新建的角色都会默认提供权限对象S_TCODE
我们手动为角色ZL_TEST_001提供权限对象
image
添加M_BEST_EKG后会提示缺少组织级别的维护,如下图
image
M_BEST_EKG这个权限对象本身就是SAP官方提供的标准权限对象,它包含权限字段EKGRP,就是用来检验EKGRP这个字段的。
我们仅仅提供1个值:101,如下图
image
image
然后点击生成按钮生成一下
image
image
经过上述过程我们创建了角色ZL_TEST_001
下面我们如法炮制,创建角色ZL_TEST_002
image
我们创建好了角色,下面我们创建两个用户:TEST0325 和TEST0326
image
并且为这两个用户,分别分配两个不同的角色。
然后,我们分别用两个不同的SAP账户登录,然后运行事务码ZRP001,看看效果
image
image

目录
相关文章
SAP MM 如下图,做发票校验的时候,对于非计划交货成本分摊到各个ITEM中,为什么分摊比例是1:2,而非1:6?
SAP MM 如下图,做发票校验的时候,对于非计划交货成本分摊到各个ITEM中,为什么分摊比例是1:2,而非1:6?
SAP MM 如下图,做发票校验的时候,对于非计划交货成本分摊到各个ITEM中,为什么分摊比例是1:2,而非1:6?
SAP MM/FI_运费处理方式
常见的采购运费处理方式
SAP MM 途损处理方式
通常客户采购业务需求提到货物运输有损耗,需要针对此业务给出合理方案输出,下面笔者针对此类业务分析下各种实现方案的可行性!
SAP MM初阶之事务代码MIGO界面批次拆分最多输入15行?
SAP MM初阶之事务代码MIGO界面批次拆分最多输入15行?
SAP MM初阶之事务代码MIGO界面批次拆分最多输入15行?
SAP MM不常用移动类型之325
SAP MM不常用移动类型之325
SAP MM不常用移动类型之325
SAP MM初阶之采购信息记录里的Prior Supplier栏位
SAP MM初阶之采购信息记录里的Prior Supplier栏位
SAP MM初阶之采购信息记录里的Prior Supplier栏位
SAP MM初阶之ME12里为啥只能维护少量条件类型的价格?
SAP MM初阶之ME12里为啥只能维护少量条件类型的价格?
SAP MM初阶之ME12里为啥只能维护少量条件类型的价格?
SAP MM 采购信息记录里的Automatic Sourcing 之二
SAP MM 采购信息记录里的Automatic Sourcing 之二
SAP MM 采购信息记录里的Automatic Sourcing 之二
SAP MM初阶之没有定义Access Sequence的条件类型不能使用MEK1维护条件记录
SAP MM初阶之没有定义Access Sequence的条件类型不能使用MEK1维护条件记录
SAP MM初阶之没有定义Access Sequence的条件类型不能使用MEK1维护条件记录