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.

  • 🧩 Définition principale : Un module complémentaire métier (Business Add-In) est un point d'extension, tel qu'une sortie client, qui ajoute des fonctionnalités personnalisées à un module standard. SAP sans le modifier.
  • 🧱 Orienté objet : Une BADI définit une interface, et l'amélioration réside dans une classe qui l'implémente, plutôt que dans une inclusion réservée.
  • (I.e. Implémentations multiples : Contrairement à une sortie client, une BADI peut être implémentée plusieurs fois, ce qui convient aux solutions sectorielles et aux versions nationales.
  • (I.e. Upgrade Sécuritaire : Une BADI n'a pas besoin de SAP L'enregistrement des modifications logicielles n'est pas affecté par une mise à niveau de version.
  • ️ Définition et mise en œuvre : La définition et l'interface sont créées dans SE18, et l'implémentation avec sa classe est créée dans SE19.
  • (I.e. Classique et nouveau : Le BADI classique est basé sur l'amélioration, et le nouveau BADI noyau introduit dans NetWeaver ajoute des filtres, des classes de repli et de meilleures performances.

Qu'est-ce que BADI ? SAP ABAP

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

Exemple de 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.

Définir et mettre en œuvre un BADI

Étape 2) Créer l'implémentation BADI : Transaction SE19

Définir et mettre en œuvre un BADI

É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.

FAQ

SE18 est le générateur BADI où sont créées la définition et son interface. SE19 est le générateur d'implémentation où une classe d'implémentation est associée à cette définition. L'un définit le point d'entrée, l'autre le remplit.

Une BADI à usage multiple permet plusieurs implémentations actives simultanément, et toutes s'exécutent lors de l'appel de la méthode. Une BADI à usage unique n'autorise qu'une seule implémentation active.

Placez un point d'arrêt sur CL_EXITHANDLER=>GET_INSTANCE, exécutez la transaction et lisez le nom de la BADI à partir du paramètre EXIT_NAME. Pour les nouvelles BADI, recherchez les points d'extension du programme dans le système d'information du référentiel.

Oui. Les assistants IA des outils de développement ABAP génèrent la classe d'implémentation, le corps de la méthode et la logique de filtrage à partir d'une description du besoin. Un développeur active ensuite l'implémentation dans SE19 et la teste.

Les conseillers en IA examinent le programme standard et signalent les options d'amélioration existantes, puis recommandent la nouvelle BADI dans un emplacement d'amélioration pour les nouvelles tâches, conserventping Le BADI classique où seule cette option est proposée.

Résumez cet article avec :