Aller au contenu
Tutos SAP

« Objet verrouillé par un utilisateur » : comprendre et lever un verrou SAP (SM12)

Tu tombes sur un objet verrouillé par un utilisateur SAP ? Ce n'est pas une panne : trouve qui tient le verrou et sache pourquoi le lever n'est pas ton rôle.

« Objet verrouillé par un utilisateur » : comprendre et lever un verrou SAP (SM12)

Un objet verrouillé par un utilisateur SAP et un objet auquel tu n’as pas les droits produisent exactement la même sensation : ça s’arrête, et tu ne peux plus rien saisir. Ce sont pourtant deux mécanismes sans aucun rapport. Le second est un droit qui te manque. Le premier est une protection qui fait précisément son travail, et qui tient parce qu’un autre est en train de travailler sur la même donnée que toi. Les confondre, c’est chercher la sortie du mauvais côté. Et parfois casser quelque chose en la cherchant.

À retenir en 30 secondes
  • Le renversement : le verrou n’est pas une panne. C’est le mécanisme qui empêche deux personnes d’écraser mutuellement leur saisie sur la même donnée.
  • Ce n’est pas ton module qui parle : le verrouillage vit dans la couche technique Basis. D’où un message identique en MM, PP, SD, PM ou EWM.
  • L’information la plus utile est déjà à l’écran : le message nomme l’utilisateur qui détient le verrou. Un message à cette personne règle la majorité des cas.
  • Quatre modes existent (S partagé, E exclusif, X exclusif non cumulatif, O optimiste), pas deux. Celui que tu rencontres quand tu es bloqué est le E.
  • SM12 est un outil de lecture avant d’être un bouton : qui détient le verrou, sur quoi, depuis quand. Lire est gratuit, supprimer est irréversible.
  • La bonne question n’est jamais « depuis quand » : c’est « la session derrière est-elle vivante ». Et elle appartient à Basis, pas à toi.

« Objet verrouillé par un utilisateur » : ce que SAP est réellement en train de te dire

Le message ne t’annonce pas une panne. Il t’annonce qu’une autre session détient déjà cette donnée en modification, et que SAP refuse de te laisser écrire par-dessus. Rien n’est cassé, la donnée est intacte. Quelqu’un est arrivé avant toi.

Ce mécanisme n’appartient à aucun module fonctionnel. Il vit dans la couche technique Basis, sous la forme du concept de verrou (le lock concept, géré par le serveur d’enqueue). D’où un message rigoureusement identique que tu sois en MM, en PP, en SD, en PM ou en EWM : ce n’est pas ton module qui parle, c’est le socle commun à tous.

Le message, tel qu’il arrive sur ton écran

SAP t’indique que l’objet est verrouillé par un utilisateur, et il te donne son identifiant. C’est l’information la plus utile de l’écran. Pas un code d’erreur à recopier dans un ticket : le nom d’une personne à qui parler.

Le verrou protège, il ne bloque pas Deux utilisateurs demandent le même objet SAP : le premier obtient le verrou et travaille, le second reçoit un message qui nomme le premier. Sans ce mécanisme, les deux saisies s’écraseraient en silence. Le verrou protège, il ne bloque pas Deux personnes, un seul objet : SAP fait passer la première et prévient la seconde Utilisateur A Il est arrivé le premier Il saisit, il modifie SAP lui donne le verrou Verrou exclusif (E) L’objet SAP Une seule donnée en modification Utilisateur B Il reçoit le message Le message nomme A Rien n’est cassé Sa saisie est intacte Ce qui se passerait sans verrou A et B écrivent en même temps Chacun croit avoir enregistré Un seul des deux a gagné Donnée incohérente En silence, sans message Découverte bien plus tardLe verrou est la seule chose qui garantit que ce que tu enregistres est bien ce que tu as saisi.
Le verrou ne t’empêche pas de travailler : il empêche deux saisies simultanées de s’écraser mutuellement sur la même donnée.

Les 2 premières minutes : le réflexe avant toute action

Tu es bloqué, tu veux une sortie maintenant. Voici la séquence qui fait avancer les choses sans rien détruire. Aucune de ces étapes ne modifie quoi que ce soit dans le système.

  1. 1
    Note ce que tu faisais

    La transaction utilisée, et surtout la clé exacte de l’objet concerné (numéro de commande, article, ordre). Sans cette clé, personne ne pourra t’aider.

  2. 2
    Relis le message

    Il nomme l’utilisateur qui détient le verrou. C’est la donnée que tout le monde survole et qui règle pourtant la plupart des cas.

  3. 3
    Identifie la personne

    Un collègue de ton service, quelqu’un d’une autre équipe, ou un identifiant inconnu. Ce dernier cas change tout, et on y revient plus bas.

  4. 4
    Contacte-la

    Un message suffit. Dans la plupart des situations, la personne a laissé un écran ouvert et n’en a plus besoin. Elle sort de la transaction, le verrou tombe, tu passes.

  5. 5
    Attends, puis réessaie

    Un verrou n’est pas une file d’attente : SAP ne te préviendra pas quand il se libère.

  6. 6
    Si personne ne répond, escalade

    Ne cherche pas à forcer. Le protocole d’escalade est décrit plus bas, et il est court.

Cette séquence paraît lente comparée à « supprime la ligne et on n’en parle plus ». Elle est la plus rapide : c’est la seule qui ne crée pas un deuxième problème en réglant le premier.

Pourquoi SAP verrouille : le verrou n’est pas une panne

Le rôle du verrou est d’empêcher deux transactions parallèles de modifier la même donnée en base en même temps. Sans lui, deux personnes qui saisissent simultanément sur le même objet écraseraient mutuellement leur travail, en silence, et la base finirait dans un état incohérent. Le verrou est donc la seule chose qui garantit que ce que tu enregistres est bien ce que tu as saisi.

Un point mérite d’être tordu tout de suite, parce qu’on lit souvent le contraire : il n’existe pas « deux types de verrous ». Le concept de verrou SAP en définit quatre, plus des modes qui ne servent qu’au contrôle de collision.

ModeCe que ça signifie concrètement
S (partagé)Plusieurs utilisateurs peuvent accéder à la donnée en affichage en même temps. Les demandes de verrou S supplémentaires sont acceptées, car elles se cumulent.
E (exclusif)Un utilisateur accède à la donnée en affichage et en modification. Le même utilisateur peut redemander ce verrou, il se cumule. Dès qu’un autre utilisateur le demande, il y a collision de verrou. C’est celui que tu rencontres quand tu es bloqué.
X (exclusif non cumulatif)Accès en lecture et en écriture, mais ce verrou ne peut être demandé qu’une seule fois par la même transaction. Toute demande supplémentaire provoque une collision.
O (optimiste)Se comporte d’abord comme un verrou partagé, et peut être converti en verrou exclusif.

À cela s’ajoutent d’autres modes qui, contrairement aux précédents, effectuent uniquement un contrôle de collision sans réellement poser de verrou. Ils n’apparaissent donc pas dans la table des verrous.

La logique tient en une phrase : consulter à plusieurs est permis, modifier à plusieurs ne l’est pas.

SM12 : un outil de diagnostic avant d’être un bouton

SAP conserve les verrous dans une table centrale, tenue en mémoire par le serveur d’enqueue. Il n’en existe qu’une seule pour tout le système : c’est précisément ce qui permet à un verrou posé depuis n’importe quel serveur d’application d’être vu par tous les autres. Et c’est la transaction SM12, côté Basis, qui l’administre. Ce n’est pas une table de base de données : tu ne la consulteras pas avec les outils habituels.

SM12 sert d’abord à lire. Elle répond à trois questions, et ces trois réponses suffisent presque toujours :

  1. 1
    Qui ?

    L’utilisateur qui détient le verrou.

  2. 2
    Quoi ?

    L’objet de verrouillage et l’argument, c’est-à-dire la donnée précise qui est tenue.

  3. 3
    Depuis quand ?

    L’heure de pose. Un verrou de trois minutes et un verrou de six heures ne racontent pas la même histoire.

Lire n’est pas supprimer. Ce sont deux gestes que l’écran met à quelques centimètres l’un de l’autre et que tout oppose. Le premier est gratuit, le second est irréversible. Le cas de figure le plus fréquent côté métier est d’ailleurs le plus bénin : une table restée ouverte en maintenance par quelqu’un qui a quitté son poste sans fermer l’écran.

Qui a le droit de lever un verrou, et pourquoi ce n’est probablement pas toi

Il faut distinguer deux choses que le vocabulaire courant mélange en permanence. Un blocage d’autorisation, c’est SAP qui te dit que tu n’as pas le droit de faire cette action, quel que soit l’état du système. Un verrou, c’est SAP qui te dit que tu as le droit, mais que quelqu’un est déjà dessus. Le premier se règle avec les rôles et les autorisations. Le second se règle avec une conversation.

Supprimer une entrée dans la table des verrous est une opération d’administration réservée à Basis. Si tu es key user et que tu n’as pas accès à SM12, ce n’est pas un oubli dans ton profil : c’est une décision de conception. Le geste est destructeur et sans garde-fou, ce qui est une bonne raison de ne pas le distribuer largement.

Qui décide de lever un verrou, et sur quelle question Arbre de décision face à un verrou : si le message nomme un collègue joignable, on lui écrit ; si le verrou appartient à un traitement de fond, on ne lève rien ; sinon la question de la session vivante appartient à Basis, et on escalade. Qui décide, et sur quelle question Jamais « depuis quand ce verrou existe », toujours « la session derrière est-elle vivante » Tu es bloqué par un verrou Le message nomme un collègue joignable ? Oui Écris-lui. Il ferme son écran. Le verrou tombe. Tu passes. Non Le verrou appartient à un traitement de fond ? Oui Ne lève rien. Personne à appeler, et lever casse le traitement. Non La session derrière est-elle vivante ? Toi, tu ne peux pas le savoir. Cette question est pour Basis. Escalade avec la clé de l’objet, l’utilisateur nommé et ton urgence Demande « cette session est-elle vivante », pas « supprimez le verrou »
Lever un verrou n’est jamais une décision de key user : c’est une décision Basis, prise sur une information que seul Basis peut lire.

La session fantôme : le seul cas où lever se défend

Un verrou reste posé jusqu’à ce que la fonction de libération correspondante soit appelée, ou que la transaction se termine et libère tout. Autrement dit, il n’expire pas au bout d’un délai. Il n’y a pas de minuterie. Tant que la session qui l’a posé ne se termine pas proprement, le verrou tient.

C’est de là que vient ce qu’on appelle communément une session fantôme. Ce n’est pas un terme officiel SAP, c’est une description : une session dont le propriétaire ne travaille plus réellement, mais qui n’a jamais été fermée correctement. Le poste a planté, la personne est partie en congé avec un écran ouvert. Le verrou, lui, ne le sait pas. Il fait ce pour quoi il est conçu : il tient.

Le cas le plus trompeur est celui d’une session arrêtée en debug. Vue de la table des verrous, elle ressemble à une session vivante, parce que du point de vue du système elle l’est : sa transaction n’est ni terminée, ni libérée. C’est pour ce genre de nuance que le diagnostic appartient à quelqu’un qui voit le paysage système, pas à celui qui est bloqué devant son écran.

Le discriminant n’est jamais « depuis combien de temps ce verrou existe », mais « la session derrière est-elle vivante ».

Un verrou de six heures posé par un traitement qui tourne encore est parfaitement sain. Un verrou de dix minutes posé par un poste qui a planté ne le sera jamais.

La durée d’un verrou ne dit pas s’il est sain Deux verrous comparés : celui de six heures est posé par un traitement de fond qui tourne encore et reste parfaitement sain ; celui de dix minutes est posé par un poste qui a planté et n’a plus personne derrière. La durée mène ici au verdict inverse du bon. La durée d’un verrou ne dit pas s’il est sain Le plus vieux des deux est le plus sain : l’horloge mène au verdict inverse Verrou A Posé il y a 6 heures Un traitement de fond tourne encore derrière Parfaitement sain Il fait exactement son travail Verrou B Posé il y a 10 minutes Le poste qui l’a posé a planté. Plus personne derrière. Session morte Et rien à l’écran ne le dit L’horloge ne tranche rien. Seule la session derrière tranche.
Le verrou le plus ancien est ici le plus sain : c’est l’état de la session qui décide, jamais le temps écoulé.

Quand ne PAS lever : les situations où tu détruis le travail d’un collègue

Lever un verrou ne « débloque » rien. Ça retire une protection à quelqu’un qui est encore dedans. À l’autre bout, la personne perd sa saisie en cours, sans avertissement et sans possibilité de récupérer. Elle le découvrira en enregistrant, et personne ne fera le lien avec ton geste.

Trois cas où lever est une mauvaise idée
  • Un humain est derrière. Il est en train de saisir. Tu ne gagnes pas du temps, tu détruis le sien, et il recommencera.
  • Tu ne sais pas qui est derrière. L’incertitude n’est pas une autorisation. Si tu ne peux pas répondre à la question « cette session est-elle vivante », tu ne peux pas décider.
  • Le verrou appartient à un traitement de fond. Il n’y a personne à appeler, et c’est justement le piège.

Quand le verrou est détenu par un traitement de fond, aucun identifiant humain ne t’attend au bout. La tentation est forte d’en conclure que le verrou est orphelin. C’est l’inverse : le traitement tourne, il travaille, et lever son verrou en pleine exécution le laisse écrire dans un système qui ne le protège plus. Tu ne débloques pas un écran, tu casses un traitement, et le dégât se mesure rarement le jour même.

À cela s’ajoute une subtilité : quand une transaction se termine, ses verrous sont transmis au système de mise à jour et conservés le temps que celle-ci aille au bout. Un verrou qui subsiste quelques instants après que l’utilisateur a quitté son écran n’est donc pas nécessairement anormal. Il protège peut-être la fin du travail.

Escalader proprement : quoi transmettre à Basis pour être pris au sérieux

Un key user qui escalade bien obtient une réponse rapidement. Un key user qui écrit « SAP est bloqué » déclenche des allers-retours. La différence tient au contenu du premier message.

  1. 1
    La transaction et l’action exacte

    Ce que tu faisais au moment du blocage, pas une reformulation.

  2. 2
    La clé de l’objet

    Le numéro précis. C’est ce qui permet de retrouver le verrou sans t’appeler.

  3. 3
    L’utilisateur nommé dans le message

    Recopie l’identifiant tel quel.

  4. 4
    Ce que tu as déjà tenté

    « J’ai contacté la personne, sans réponse depuis 40 minutes » vaut mieux que n’importe quelle description technique.

  5. 5
    L’urgence réelle, et pourquoi

    Une livraison qui part ce soir n’est pas une commande à saisir dans la semaine. Dis lequel des deux.

  6. 6
    Ta question, pas ta solution

    Demande « la session derrière ce verrou est-elle encore vivante », pas « supprimez le verrou ». C’est la question à laquelle Basis peut répondre et toi non.

Ce dernier point est le plus utile : il te place du côté de quelqu’un qui a compris le mécanisme, et laisse la décision à celui qui a les éléments pour la prendre.

Questions fréquentes

Que veut dire « objet verrouillé par un utilisateur » dans SAP ?

Que quelqu’un d’autre détient déjà cette donnée en modification, et que SAP t’empêche d’écrire par-dessus. Ce n’est pas une panne et rien n’est perdu. Le message nomme l’utilisateur concerné : dans la majorité des cas, un message à cette personne règle la situation en deux minutes.

Comment savoir qui a verrouillé un objet dans SAP ?

Le message affiché contient déjà l’identifiant de l’utilisateur qui détient le verrou : c’est l’information à lire en premier. Côté Basis, la transaction SM12 permet de consulter la table des verrous et d’obtenir qui détient quoi, et depuis quand, sans rien supprimer.

Puis-je supprimer moi-même un verrou SAP ?

Probablement non, et c’est une bonne nouvelle. Supprimer un verrou est une opération d’administration réservée à Basis, parce qu’elle est destructrice et sans garde-fou. Si tu n’as pas accès à SM12, ce n’est pas un oubli dans ton profil, c’est une décision de conception.

Que se passe-t-il si je lève un verrou pendant qu’un collègue travaille ?

Il perd sa saisie en cours, sans avertissement et sans possibilité de la récupérer. Il ne verra le problème qu’au moment d’enregistrer, et il ne fera jamais le lien avec ton geste. C’est la raison pour laquelle « qui est derrière ce verrou » se tranche avant d’agir, jamais après.

Un verrou SAP se libère-t-il tout seul ?

Pas au bout d’un délai : il n’y a pas de minuterie. Un verrou reste posé jusqu’à ce que la fonction de libération soit appelée, ou que la transaction se termine et libère l’ensemble de ses verrous. C’est exactement pour cette raison qu’une session jamais fermée proprement laisse un verrou en place indéfiniment.

Quelle différence entre un verrou et un problème d’autorisation ?

Un problème d’autorisation signifie que tu n’as pas le droit de faire cette action, quel que soit l’état du système. Un verrou signifie que tu as le droit, mais que quelqu’un est déjà sur la donnée. Le premier se règle avec les rôles et autorisations, le second en attendant ou en parlant à la bonne personne.

Qu’est-ce qu’une session fantôme dans SAP ?

C’est une expression courante, pas un terme officiel SAP. Elle décrit une session dont le propriétaire ne travaille plus réellement, mais qui n’a jamais été fermée proprement : poste planté, machine éteinte brutalement, écran laissé ouvert. Le verrou tient parce que la transaction n’a jamais été terminée. Seul quelqu’un qui voit le paysage système peut confirmer qu’une session est réellement morte.

Le verrou travaille pour toi

Un objet verrouillé n’est pas un incident, c’est le système qui protège le travail de quelqu’un. Un jour, ce sera le tien. La seule question qui vaille n’est pas « comment je le supprime » mais « la session derrière est-elle encore vivante », et elle appartient à Basis.

La prochaine fois que le message tombe, fais un seul geste : relis-le, trouve l’identifiant, et écris à la personne avant d’écrire un ticket. Si tu veux voir ce qu’il y a derrière cette frontière entre ton périmètre et celui de l’administration technique, l’univers Basis commence exactement là.

Partager

À lire ensuite

Tutos SAP

Contrôle de disponibilité SAP (ATP) : pourquoi ta commande n’est pas confirmée

Le stock est là mais SAP ne confirme pas ta commande ? Comprends la règle de contrôle ATP, la portée de vérification et CO09 pour débloquer la situation.

Michael Antoine Michael A. 18 min de lecture
Tutos SAP

Commande SAP bloquée pour crédit : la débloquer (VKM1, VKM3) et comprendre OVA8

Blocage credit SAP : debloquez votre commande avec VKM1/VKM3, comprenez OVA8 et la bascule FD32 vers UKM_BP en S/4HANA. Guide key-user.

Michael Antoine Michael A. 23 min de lecture
Tutos SAP

Wave management SAP EWM : maîtriser les vagues de préparation

Wave management SAP EWM : comprendre les vagues de preparation, creer un wave template, liberer une vague et relier vague, warehouse task et order.

Michael Antoine Michael A. 17 min de lecture
Tutos SAP

Nomenclature et gamme SAP PP : comprendre et créer le couple BOM / routing

Nomenclature (BOM) et gamme (routing) SAP PP expliquees : difference, creation en CS01 et CA01, et lien avec la version de fabrication. Guide key-user.

Michael Antoine Michael A. 21 min de lecture