Qu'est-ce que BADI ? SAP ABAP?
⚡ Résumé intelligent
BADI dans SAP ABAP signifie Business Add-In, une extension orientée objet qui intègre une logique personnalisée au système standard. SAP Fonctionnalités. Cette page explique ce qu'est une BADI, ses caractéristiques, les types classiques et nouveaux, le flux de travail SE18 et SE19, et comment elle se compare aux exits.

Qu’est-ce que BADI ?
BADI signifie Business Add ITout comme les points d'extension client, les BADI permettent de connecter des améliorations personnalisées à SAP Fonctionnalité. Exemple de BADI : Dans la transaction CAT2 – Saisie de la feuille de temps, les RH souhaitent inclure une reconnaissance interactive selon laquelle la soumission sciemment de données incorrectes constitue un motif de licenciement. Ceci peut être réalisé en utilisant BADI
La différence avec une sortie classique est technique. Une BADI est construite sur ABAP Objects ; le programme standard appelle donc une méthode d’interface, et le code personnalisé réside dans une classe qui implémente cette méthode. C’est pourquoi une BADI est souvent décrite comme le successeur orienté objet de… Sortie du client.
Fonctionnalité
- Les BADI sont orientés objet
- Ils peuvent être mis en œuvre plusieurs fois
- Il ne nécessite pas SAP Logiciels Modifier l'inscription
- Aucun effet de la version mise à jour sur le fonctionnement des BADI
Ces quatre caractéristiques expliquent pourquoi SAP Il est recommandé d'utiliser une BADI plutôt qu'une sortie classique. L'amélioration étant placée dans une classe distincte, elle reste intacte lors d'une mise à jour. De plus, une BADI étant réutilisable, plusieurs équipes peuvent améliorer le même point sans écraser les autres.
Types de BADI
SAP propose deux générations de Business Add-Ins. La BADI classique est la version basée sur les améliorations décrite ci-dessus, et la nouvelle BADI, introduite avec SAP NetWeaver fait partie du framework d'amélioration et est plus rapide et plus flexible.
| Critères | BADI classique | Nouvelle BADI (noyau) |
|---|---|---|
| Maintenu dans | SE18 et SE19 | Le constructeur d'améliorations dans un emplacement d'amélioration |
| Filtres | valeurs de filtre simples | Combinaisons de filtres avec expressions logiques |
| Se retirer | Indisponible | Une classe de repli par défaut s'exécute lorsqu'aucune implémentation n'est active. |
| Instanciation | CL_EXITHANDLER=>GET_INSTANCE | Les instructions GET BADI et CALL BADI |
| Performances | Plus lent, objet créé à chaque appel | Plus rapide, géré par le noyau |
Les deux générations sont trouvées et mises en œuvre de manière similaire, comme décrit ci-après.
Comment définir et implémenter une BADI
Cela impliquait trois étapes
Étape 1) Création de la définition BADI et de son interface : Transaction SE18.
Étape 2) Créer l'implémentation BADI : Transaction SE19
Étape 3) Définissez une classe qui implémente l'interface : lors de la création de l'implémentation, une classe implémentant l'interface de l'amélioration est également créée.
En termes de code, le programme standard accède à l'implémentation via le gestionnaire de sortie. Le modèle classique instancie la référence BADI puis appelle la méthode d'interface.
* Reference typed with the BADI interface DATA: lo_badi TYPE REF TO zif_ex_badi_demo. * Get the active implementation(s) CALL METHOD cl_exithandler=>get_instance CHANGING instance = lo_badi. * Call the interface method that carries the custom logic CALL METHOD lo_badi->check_data EXPORTING is_input = ls_input.
Astuce : Une nouvelle BADI noyau est appelée plus simplement avec GET BADI et CALL BADI, qui gèrent également automatiquement les valeurs de filtre. Utilisez SE18 pour vérifier si le point d'extension est une BADI classique ou nouvelle avant d'écrire l'appel.
⚠️ Attention : La transaction SE18 contient la définition et l'interface, tandis que SE19 contient l'implémentation. Créer l'implémentation dans SE18 ou la définition dans SE19 est une erreur fréquente qui rend la BADI inactive.
BADI vs Sortie client vs Sortie utilisateur
Les trois techniques améliorent toutes les normes SAPElles diffèrent cependant par leur technologie et leur flexibilité. Le tableau ci-dessous compare la BADI aux deux plus anciennes. techniques de sortie.
| Critères | Sortie utilisateur | Sortie client | BADI |
|---|---|---|---|
| Technologie | Sous-programme (FORM) | Module fonctionnel, écran ou menu | interface et classe orientées objet |
| Domaine | Module SD uniquement | Tous les modules | Tous les modules |
| Nombre d'implémentations | Un | Un | Multiple, lorsqu'il est défini comme utilisation multiple |
| Maintenu avec | Édition directe de l'inclusion | SMOD et CMOD | SE18 et SE19 |
| Upgrade sécuritaire | Vérifié auprès de SPAU | Oui | Oui |
La règle pratique consiste à utiliser une BADI chaque fois qu'elle existe, car elle est orientée objet, sécurisée lors des mises à jour et peut être implémentée plusieurs fois.



