Wat is BADI in SAP ABAP?
โก Slimme samenvatting
BADI in SAP ABAP staat voor Business Add-In, een objectgeoriรซnteerde uitbreiding die aangepaste logica koppelt aan standaardfunctionaliteit. SAP Functionaliteit. Deze pagina legt uit wat een BADI is, de functies ervan, de klassieke en nieuwe typen, de SE18- en SE19-workflow en hoe deze zich verhoudt tot exits.

Wat is BADI?
BADI staat voor B Add INet als klantuitgangen helpen BADI's bij het koppelen van aangepaste verbeteringen aan SAP functionaliteit. Voorbeeld van een BADI: In transactie CAT2 โ Time Sheet Entry wil HR een interactieve erkenning opnemen dat het willens en wetens indienen van onjuiste gegevens reden is voor ontslag. Dit kan worden bereikt met behulp van BADI
Het verschil met een klassieke exit is technisch. Een BADI is gebouwd op ABAP-objecten, waardoor het standaardprogramma een interfacemethode aanroept en de aangepaste code zich bevindt in een klasse die die methode implementeert. Daarom wordt een BADI vaak beschreven als de objectgeoriรซnteerde opvolger van de klassieke exit. klantuitgang.
Kenmerken
- BADI's zijn objectgeoriรซnteerd
- Ze kunnen meerdere keren worden geรฏmplementeerd
- Het vereist niet SAP Software Registratie wijzigen
- Geen effect op de werking van BADI's na de release-upgrade
Deze vier kenmerken verklaren waarom SAP Het wordt aanbevolen om een โโBADI te gebruiken in plaats van een klassieke exit. Omdat de verbetering zich in een aparte klasse bevindt, blijft deze ongewijzigd na een upgrade. Bovendien kan een BADI voor meervoudig gebruik worden gedefinieerd, waardoor meerdere teams hetzelfde punt kunnen verbeteren zonder elkaar te overschrijven.
Soorten BADI
SAP biedt twee generaties Business Add-Ins. De klassieke BADI is de op uitbreidingen gebaseerde versie die hierboven is beschreven, en de nieuwe BADI, geรฏntroduceerd met SAP NetWeaver maakt deel uit van het Enhancement Framework en is sneller en flexibeler.
| criteria | Klassieke BADI | Nieuwe (Kernel) BADI |
|---|---|---|
| Onderhouden in | SE18 en SE19 | De verbeteringsbouwer binnen een verbeteringsgebied |
| Filters | Eenvoudige filterwaarden | Filter combinaties met logische expressies |
| fallback | Niet beschikbaar | Een standaard fallback-klasse wordt uitgevoerd wanneer er geen implementatie actief is. |
| Instantie | CL_EXITHANDLER=>GET_INSTANCE | De GET BADI- en CALL BADI-verklaringen |
| Prestaties | Trager, object wordt bij elke aanroep aangemaakt | Sneller, beheerd door de kernel |
Beide generaties worden op een vergelijkbare manier gevonden en geรฏmplementeerd, zoals hierna wordt beschreven.
Hoe definieer en implementeer je een BADI?
Dit omvatte drie stappen
Stap 1) Het definiรซren van een BADI en de bijbehorende interface: Transactie SE18.
Stap 2) Maak de BADI-implementatie aan: transactie SE19
Stap 3) Definieer een klasse die de interface implementeert: Tijdens het aanmaken van de implementatie wordt ook een klasse aangemaakt die de interface van de uitbreiding implementeert.
In de code bereikt het standaardprogramma de implementatie via de exit-handler. Het klassieke patroon instantieert de BADI-referentie en roept vervolgens de interfacemethode aan.
* 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.
๐กTip: Een nieuwe, kernel-BADI wordt eenvoudiger aangeroepen met GET BADI en CALL BADI, die ook de filterwaarden automatisch verwerken. Gebruik SE18 om te controleren of het uitbreidingspunt een klassieke of een nieuwe BADI is voordat u de aanroep schrijft.
โ ๏ธ Waarschuwing: Transactie SE18 bevat de definitie en de interface, terwijl SE19 de implementatie bevat. Het aanmaken van de implementatie in SE18 of de definitie in SE19 is een veelgemaakte fout die ertoe leidt dat de BADI inactief blijft.
BADI versus klantuitgang versus gebruikersuitgang
Alle drie de technieken verbeteren de standaard. SAPMaar ze verschillen in technologie en flexibiliteit. In de onderstaande tabel wordt de BADI naast de twee oudere modellen geplaatst. exit-technieken.
| criteria | Gebruikersuitgang | Klanten verlaten | BADI |
|---|---|---|---|
| Technologie | Subroutine (FORMULIER) | Functiemodule, scherm of menu | Objectgeoriรซnteerde interface en klasse |
| strekking | Alleen SD-module | Alle modules | Alle modules |
| Aantal implementaties | One | One | Meerdere, wanneer gedefinieerd als meervoudig gebruik |
| Onderhouden met | Directe bewerking van de include | SMOD en CMOD | SE18 en SE19 |
| Upgrade veilig | Gecontroleerd met SPAU | Ja | Ja |
De praktische regel is om een โโBADI te gebruiken wanneer deze beschikbaar is, omdat deze objectgeoriรซnteerd is, upgradebestendig en meermaals geรฏmplementeerd kan worden.



