start:tips:sap:unlock
Unlock an user
- Z_CHANGE_USER_UFLAG.abap
REPORT Z_CHANGE_USER_UFLAG. TABLES: USR02. PARAMETERS: p_user LIKE usr02-bname OBLIGATORY, p_client LIKE usr02-mandt DEFAULT sy-mandt, p_uflag TYPE usr02-uflag DEFAULT 0, p_modify TYPE boolean DEFAULT space AS CHECKBOX. " Variables pour audit et contrôle DATA: lv_old_uflag TYPE usr02-uflag, lv_message TYPE string, lv_timestamp TYPE timestamp. AT SELECTION-SCREEN ON p_uflag. " Validation des valeurs UFLAG autorisées [[1]](https://community.sap.com/t5/technology-q-a/password-reset-based-on-uflag/qaq-p/12585274) CASE p_uflag. WHEN 0. " Utilisateur déverrouillé lv_message = 'Déverrouillage utilisateur'. WHEN 32. " Verrouillé par administrateur lv_message = 'Verrouillage administrateur'. WHEN 64. " Verrouillé par tentatives de connexion lv_message = 'Verrouillage tentatives connexion'. WHEN 128. " Verrouillé par tentatives mot de passe [[1]](https://community.sap.com/t5/technology-q-a/password-reset-based-on-uflag/qaq-p/12585274) lv_message = 'Verrouillage tentatives mot de passe'. WHEN 192. " Combinaison 64+128 lv_message = 'Verrouillage combiné'. WHEN OTHERS. MESSAGE 'Valeur UFLAG non autorisée. Utilisez: 0,32,64,128,192' TYPE 'E'. ENDCASE. AT SELECTION-SCREEN. " Vérifier si l'utilisateur existe SELECT SINGLE bname FROM usr02 CLIENT SPECIFIED INTO @DATA(lv_user_check) WHERE mandt = @p_client AND bname = @p_user. IF sy-subrc NE 0. MESSAGE 'Utilisateur non trouvé dans le mandant spécifié' TYPE 'E'. ENDIF. START-OF-SELECTION. " Vérification des autorisations [[2]](https://help.sap.com/saphelp_scm70/helpdata/ru/9f/dbaccb35c111d1829f0000e829fbfe/content.htm), AUTHORITY-CHECK OBJECT 'S_USER_GRP' ID 'CLASS' FIELD '*' ID 'ACTVT' FIELD '02'. IF sy-subrc NE 0. MESSAGE 'Autorisation insuffisante pour modifier les utilisateurs' TYPE 'E'. EXIT. ENDIF. " Lecture des données actuelles pour audit SELECT SINGLE uflag FROM usr02 CLIENT SPECIFIED INTO lv_old_uflag WHERE mandt = p_client AND bname = p_user. IF sy-subrc = 0. " Affichage des informations avant modification WRITE: / 'Utilisateur:', p_user, / 'Client:', p_client, / 'Ancienne valeur UFLAG:', lv_old_uflag, / 'Nouvelle valeur UFLAG:', p_uflag, / 'Action:', lv_message. " Vérification si modification nécessaire IF lv_old_uflag = p_uflag. WRITE: / 'Aucune modification nécessaire - valeurs identiques'. EXIT. ENDIF. " Modification du champ UFLAG IF p_modify = 'X'. UPDATE usr02 CLIENT SPECIFIED SET uflag = p_uflag WHERE mandt = p_client AND bname = p_user. IF sy-subrc = 0. COMMIT WORK. WRITE: / '*** MODIFICATION RÉUSSIE ***', / 'UFLAG modifié de', lv_old_uflag, 'vers', p_uflag, / 'Modifié par:', sy-uname. ELSE. ROLLBACK WORK. MESSAGE 'Erreur lors de la modification UFLAG' TYPE 'E'. ENDIF. ELSE. WRITE: / 'Mode simulation - aucune modification effectuée'. ENDIF. ELSE. MESSAGE 'Erreur lors de la lecture des données utilisateur' TYPE 'E'. ENDIF.
start/tips/sap/unlock.txt · Last modified: by admin_wiki
