ABAP权限检查,TCode与权限对象进行关联

Posted Rainystuday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABAP权限检查,TCode与权限对象进行关联相关的知识,希望对你有一定的参考价值。


一、确认权限对象,和关联字段:

Tcode:SU21 维护权限对象
例如"M_MSEG_WMB",它关联字段为\'WERKS\'
M_MSEG_WMB 物料凭证:工厂

 

二、在ABAP代码中添加权限检查代码:

PROGRAM YTEST_13_001.

Tcode:SE38

TYPES: BEGIN OF ty_check_au,
werks TYPE mseg-werks,
END OF ty_check_au.
DATA: wa_check_au TYPE ty_check_au,
it_check_au TYPE TABLE OF ty_check_au.

AT SELECTION-SCREEN.
* 在此进行权限对象的检查
SELECT
werks
FROM mseg
INTO TABLE it_check_au
WHERE mblnr IN s_mblnr AND
werks = p_werks
AND mseg~bwart IN (\'101\',\'102\',\'105\',\'106\').

LOOP AT it_check_au INTO wa_check_au.

AUTHORITY-CHECK OBJECT \'M_MSEG_WMB\'
         ID \'ACTVT\' FIELD \'01\'
         ID \'WERKS\' FIELD wa_check_au-WERKS.
IF SY-SUBRC <> 0.
* Implement a suitable exception handling here
  MESSAGE E000 WITH \'您没有工厂\' LW_MARC-WERKS \'的权限\'.
ENDIF.

CLEAR wa_check_au.
ENDLOOP.

 

AUTHORITY-CHECK OBJECT \'M_MSEG_WMB\'
         ID \'ACTVT\' FIELD \'01\'
         ID \'WERKS\' FIELD wa_check_au-WERKS.
IF SY-SUBRC <> 0.
* Implement a suitable exception handling here
  MESSAGE E000 WITH \'您没有工厂\' LW_MARC-WERKS \'的权限\'.
ENDIF.

sy-subrc 一些重要返回值如下:
  0:  用户权限检查通过.
  4:  用户权限不足.
  8:  参数的数量不正确.
  12:  权限对象不存在. 

 

三、创建ABAP代码关联的TCode:
TCode: SE93
:YTEST_13_001

 

四、把ABAP代码关联的TCode与权限对象进行关联,
!TCode: SU22、SU24

SU22

应用程序类型:1事物
事物代码: YTEST_13_001
F8后

进入修改模式;
菜单:对象->对象->添加权限对象
M_MSEG_WMB

 

 

可以定义权限对象的活动类型:

!记得保存

 

 

以上是关于ABAP权限检查,TCode与权限对象进行关联的主要内容,如果未能解决你的问题,请参考以下文章

ABAP的权限检查跟踪(Authorization trace)工具

ABAP 权限程序

SAP跳过权限检查/前提是有debug权限

SAP ABAP:如何获取某个帐号的某个权限对象的值

权限(1创建用户,2增加标准权限对象)

教程4 - 验证和权限