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 :