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.



