« 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.
- 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.
SM12est 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.
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.
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.
-
1Note 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.
-
2Relis 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.
-
3Identifie 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.
-
4Contacte-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.
-
5Attends, puis réessaie
Un verrou n’est pas une file d’attente : SAP ne te préviendra pas quand il se libère.
-
6Si 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.
| Mode | Ce 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 :
-
1Qui ?
L’utilisateur qui détient le verrou.
-
2Quoi ?
L’objet de verrouillage et l’argument, c’est-à-dire la donnée précise qui est tenue.
-
3Depuis 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.
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.
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.
- 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.
-
1La transaction et l’action exacte
Ce que tu faisais au moment du blocage, pas une reformulation.
-
2La clé de l’objet
Le numéro précis. C’est ce qui permet de retrouver le verrou sans t’appeler.
-
3L’utilisateur nommé dans le message
Recopie l’identifiant tel quel.
-
4Ce 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.
-
5L’urgence réelle, et pourquoi
Une livraison qui part ce soir n’est pas une commande à saisir dans la semaine. Dis lequel des deux.
-
6Ta 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à.