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

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

!记得保存

时间: 2024-08-06 21:01:46

ABAP权限检查,TCode与权限对象进行关联的相关文章

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

事务码 STAUTHTRACE 1. 点击"Activate Trace" button激活跟踪: 可以看到跟踪状态已经处于打开状态. 在同一个application server instance上使用事务码CRM_UI 登陆webclient ui,进行操作.操作完毕后关闭跟踪,点Evaluate button得到所有权限检查的跟踪列表. 点F9可以看到执行权限检查的ABAP代码: 可以查看涉及到的权限对象的文档: Value1到Value4为ABAP运行时执行权限检查的输入参数:

登录权限检查(SpringMVC)

如何实现登录权限检查? 使用session约定值的判断 实现方法: 1.采用Filter(过滤器) 2.采用拦截器 拦截器组件是SpringMVC特有组件.拦截器组件可以在Controller之前拦截:也可以在Controller之后拦截:还可以在JSP解析完毕给浏览器输出之前拦截. 实例: A.创建相应拦截器类并实现HandlerInterceptor接口: package com.day04test.interceptor; import javax.servlet.http.HttpSer

利用自定义注解在SpringMVC中实现自定义权限检查

先描述一下应用场景,基于Spring MVC的WEB程序,需要对每个Action进行权限判断,当前用户有权限则允许执行Action,无权限要出错提示.权限有很多种,比如用户管理权限.日志审计权限.系统配置权限等等,每种权限还会带参数,比如各个权限还要区分读权限还是写权限. 想实现统一的权限检查,就要对Action进行拦截,一般是通过拦截器来做,可以实现HandlerInterceptor或者HandlerInterceptorAdapter,但是每个Action都有不同的权限检查,比如getUs

MVC用户登陆验证及权限检查(Form认证)

1.配置Web.conf,使用Form认证方式 <system.web> <authentication mode="None" /> <compilation debug="true" targetFramework="4.6.1" /> <httpRuntime targetFramework="4.6.1" /> <authentication mode="

iOS7 权限检查

iOS7之后要求的权限检查, 使用AVAuthorizationStatus进行判断 相机权限代码如下: AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; if (authStatus == AVAuthorizationStatusDenied || authStatus == AVAuthorizationStatusRestricted

跳过权限检查,强制修改mysql密码

windows: 1,停止MYSQL服务,CMD打开DOS窗口,输入 net stop mysql 2,在CMD命令行窗口,进入MYSQL安装目录 比如E:\Program Files\MySQL\MySQL Server 5.0\bin 示范命令: 输入 e:回车, 输入cd "E:\Program Files\MySQL\MySQL Server 5.0\bin" 注意双引号也要输入,这样就可以进入Mysql安装目录了. 3,进入mysql安全模式,即当mysql起来后,不用输入密

android 6 权限检查 zxing

/*// 新增 private static final int MY_PERMISSIONS_REQUEST_CALL_CAMERA = 1;//请求码,自己定义 // 新增Android6.0 权限检查 @Override protected void onStart() { super.onStart(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(

[转载]x86 控制转移权限检查精要

一.       直接转移(far call及  far jmp) 直接转移通过执行一条 call 或 jmp指令,在段内转移不需selector近跳转,段间转移通过selector(不带gate或  tss)远跳转,CPL不改变. 权限检查的4个要素: ★ CPL:当前运行级别(也就是CS.CPL) ★ RPL:门符选择子(RPL for code descriptor) ★ DPL:门符DPL(DPL of code descriptor) ★ nonconforming/conformin

[转载]x86控制转移及相关的权限检查

■ 数据访问时的权限check 一. 访问data segment时(ds.es.fs 及gs) 1. 程序指令要访问数据时,data segment selector 被加载进 data segment register(ds.es.fs 和 gs)前,处理器会进行一系列的权限检查,通过了才能被加载进入segment register.处理器分为两步进行检查: ★ CPL(当前程序运行的权限级别)与RPL(位于selector中的 RPL)作比较,并设置有效权限级别为低权限的一个. ★ 得出的