文章目录
概要
一些自开发报表的程序及程序的功能会涉及到每个用户是否有权限来使用,SAP有很多标准的权限可以使用,但是有些标准的权限是不适用的,需要abaper们自建权限对象来进行使用分配,下面我们详细说一下:创建权限字段、对象类、权限对象、分配权限对象、权限分配....
相关事务码
SE11 创建权限对象用的数据元素、域
SU20 创建对象类、权限字段
SU21 创建权限对象
SE38 创建程序引用权限对象(给程序分配事务码)
SU24/PFCG 事务代码分配权限对象
PFCG 权限分配
扩展知识
技术细节
SE11 数据元素、域
SU20 创建权限字段
点击保存即可。
SU21 创建权限对象
创建对象类
创建权限对象
点击保存可以创建权限对象的对象文档
重点:生成SAP_ALL
注意:此步骤要用SU21生成,不可用事务SU21_OLD生成
SE38 创建程序引用权限对象
注意创建事务码:ZRTAUTH
代码如下:
*&---------------------------------------------------------------------*
*& Report YRAUTH_DEMO1
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT yrauth_demo1.
*&---------------------------------------------------------------------*
* SELECTION-SCREEN
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE t01.
PARAMETERS:
p_01 RADIOBUTTON GROUP gp1 USER-COMMAND u01 DEFAULT 'X', " 查询
p_02 RADIOBUTTON GROUP gp1. " 修改
SELECTION-SCREEN END OF BLOCK b01.
*&----------------------------------------------------------------------
*& INITIALIZATION.
*&----------------------------------------------------------------------
INITIALIZATION.
t01 = '选择条件'.
%_p_01_%_app_%-text = '查询'.
%_p_02_%_app_%-text = '修改'.
*&----------------------------------------------------------------------
*& START-OF-SELECTION
*&----------------------------------------------------------------------
START-OF-SELECTION.
DATA:
lv_actvt TYPE activ_auth,
lv_msgv1 TYPE bapi_msg.
* 权限检查
CASE abap_true.
WHEN p_01.
lv_actvt = '01'.
lv_msgv1 = '查询'.
WHEN p_02.
lv_actvt = '02'.
lv_msgv1 = '修改'.
WHEN OTHERS.
ENDCASE.
* 权限检查
AUTHORITY-CHECK OBJECT 'ZDEMO_AUTH'
ID 'ZAUTH' FIELD lv_actvt.
IF sy-subrc <> 0.
MESSAGE s000(zmess1) WITH lv_msgv1 DISPLAY LIKE 'E'."您没有&1的权限
LEAVE LIST-PROCESSING.
ELSE.
WRITE:'成功!'.
ENDIF.
PFCG 权限分配 创建权限角色
提前创建用户账号:AUTH01
分配事务码
2:生成权限文件参数
3:更改权限数据
手动添加权限对象
给此角色分配可用的权限并激活
生成权限
给用户批量分配该角色
保存即可!
测试效果
查询:(有权限)
修改:(无权限)
扩展知识
权限对象底表:TOBJT
查看权限问题:SU53
事务码:SUIM(查看系统标准权限)
代码关键字DUMMY:
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD gs_tvko-vkorg
ID 'VTWEG' DUMMY
ID 'SPART' DUMMY
ID 'ACTVT' DUMMY."如果不想对某个权限字段进行权限检查,可以使用DUMMY来代替FIELD 。
总结
希望能帮助到需要的人!