Resetear contraseñas en todos los mandantes para un usuario
Hola a tod@s
Para a quien le pueda ayudar o resultar interesante, les dejo un sencillo programa para cambiar la contraseña de un usuario en todos los mandantes, incluido SAP*.
Supongo que os será de utilidad en el caso que no recordéis la password en algún Mdte.
REPORT ZBCPASSWORD.
TABLES: USR02, T000.
DATA: PASSWD LIKE USR02-BCODE.
PARAMETERS: USER LIKE USR02-BNAME.
*SELECT SINGLE * FROM USR02 WHERE BNAME = USER.
*IF SY-UNAME <> 'SAP*'.
*WRITE: / 'Solo SAP* puede ejecutar el programa'. EXIT.
*ENDIF.
**** Se comprueba que el usuario tiene permisos de administrador***
AUTHORITY-CHECK OBJECT 'S_ADMI_FCD'
ID 'S_ADMI_FCD' FIELD 'PADM'.
IF SY-SUBRC <> 0.
message i077(s#) with '' raising not_authorized.
exit.
endif.
AUTHORITY-CHECK OBJECT 'S_USER_GRP'
ID 'CLASS' FIELD 'SUPER'
ID 'ACTVT' FIELD '01'.
IF SY-SUBRC <> 0.
message i077(s#) with '' raising not_authorized.
exit.
endif.
**** Fin de la comprobación de autorizaciones ***
IF SY-SUBRC <> 0.
WRITE: / USER, 'El usuario no existe!'. EXIT.
ENDIF.
PASSWD = USR02-BCODE.
CLEAR USR02.
WRITE: / 'La contraseña del usuario',USER, 'actualizada en mandantes:'.
SELECT * FROM T000 WHERE MANDT <> SY-MANDT.
SELECT * FROM USR02 CLIENT SPECIFIED WHERE MANDT = T000-MANDT AND
BNAME = USER.
WRITE: / USR02-MANDT.
USR02-BCODE = PASSWD.
USR02-LTIME = SY-UZEIT.
USR02-BCDA1 = USR02-BCDA2 = USR02-BCDA3 = SY-DATUM.
USR02-BCDA4 = USR02-BCDA5 = SY-DATUM.
UPDATE USR02 CLIENT SPECIFIED.
ENDSELECT.
ENDSELECT.
saludos
|