Imagine que tu utilises un programme SAP standard, par exemple pour créer une commande client (VA01). Le programme fait exactement ce que SAP a prévu. Mais que faire si tu souhaites ajouter à un endroit précis du processus une petite vérification personnalisée ou un remplissage automatique d’un champ, que SAP n’a pas prévu ?
C’est précisément pour cela qu’existent (entre autres) les User Exits.
Qu’est-ce qu’un User Exit ?
Un User Exit est essentiellement une “porte” ou un “crochet” que SAP a intégré à un endroit défini dans un programme ABAP standard. À cet endroit, le programme SAP appelle un sous-programme (une routine FORM) spécial, qui se trouve dans un programme Include prévu pour les clients.
- SAP fournit le programme avec le “crochet” : Dans le code standard, on trouve par exemple
PERFORM user_exit_sonderpruefung IN PROGRAM sapmv45a. - SAP fournit le programme Include “vide” : Le programme
sapmv45acontient un Include (souvent avecZZouUSEREXITdans le nom, par ex.MV45AFZZ), et celui-ci contient uneFORM user_exit_sonderpruefung. ... ENDFORM.vide. - Tu remplis la lacune : En tant que développeur, tu peux maintenant accéder à ce programme Include spécial (par ex.
MV45AFZZ) et écrire ton propre code ABAP dans la routineFORMvide.
Chaque fois que le programme SAP standard arrive à l’endroit avec l’appel PERFORM, ton code dans la routine FORM est exécuté.
Pour quoi les User Exits sont-ils généralement utilisés ? (Exemples faciles à comprendre)
1. Vérifications supplémentaires
Exemple (Commande client SD) : Tu souhaites t’assurer que pour les commandes d’un certain groupe de clients, un champ spécifique (par ex. un champ personnalisé ZZ_Sonderinfo) au niveau de la position est toujours rempli avant que la commande puisse être sauvegardée. Tu pourrais utiliser un User Exit qui est appelé avant la sauvegarde (USEREXIT_SAVE_DOCUMENT_PREPARE dans MV45AFZZ), effectue cette vérification et affiche éventuellement un message d’erreur (MESSAGE E...) qui empêche la sauvegarde.
2. Préremplir ou modifier des valeurs
- Exemple (Commande client SD) : Chaque fois qu’un certain article est commandé, une note de livraison spécifique doit être automatiquement inscrite dans un champ texte de la position de commande. Un User Exit qui s’exécute après la saisie du numéro d’article (par ex.
USEREXIT_MOVE_FIELD_TO_VBAP) pourrait s’en charger. - Exemple (Commande d’achat MM) : Lorsqu’une commande d’achat est créée pour un certain fournisseur, le groupe d’acheteurs doit être automatiquement défini sur une valeur par défaut si il est vide. Un User Exit dans le programme de commande pourrait le faire.
3. Collecter des données pour des tables personnalisées
Exemple : Chaque fois qu’une fiche article (MM01/MM02) est modifiée, tu souhaites enregistrer l’utilisateur, la date, l’heure et le numéro d’article modifié dans une table de protocole personnalisée (Z_MAT_LOG). Un User Exit appelé lors de la sauvegarde de la fiche article pourrait collecter et enregistrer ces données.
Caractéristiques importantes des User Exits
- Procédural : Ils sont basés sur des routines
FORM(sous-programmes). - “Quasi-modification” : Tu ne modifies pas directement le rapport standard SAP, mais tu écris du code dans un programme Include fourni par SAP. Cela nécessite généralement une clé de développeur (SSCR Key) et est enregistré dans le système comme une modification (prévue). C’est une différence par rapport aux BAdIs ou aux Enhancements.
- Dépendance aux données globales : Les User Exits accèdent souvent directement aux variables globales du programme principal. Cela peut devenir problématique lors des mises à jour si SAP modifie ces variables.
- Ancienne technique : Les User Exits sont l’une des plus anciennes techniques d’extension. Les techniques plus récentes comme les Customer Exits (Exits de modules de fonction via SMOD/CMOD), les BAdIs (orienté objet) et le Enhancement Framework (Enhancement Points/Sections) sont plus flexibles et souvent mieux séparées du standard.
- Utilisation : Malgré leur âge, les User Exits sont encore très répandus dans de nombreux modules de base comme SD (Ventes), MM (Gestion des articles) et parfois FI (Finance), et sont souvent la seule possibilité pour certaines adaptations à des endroits plus anciens.
Conclusion
Les User Exits sont des emplacements prédéfinis dans les programmes standard SAP où tu peux insérer ton propre code ABAP sous forme de routines FORM pour étendre ou adapter les processus standard. C’est une technique procédurale plus ancienne qui reste cependant pertinente dans de nombreux modules. Pour les développements plus récents, les BAdIs ou le Enhancement Framework sont généralement le choix privilégié.