Hva er BADI i SAP ABAP?
โก Smart oppsummering
BADI i SAP ABAP stรฅr for Business Add-In, en objektorientert forbedring som kobler tilpasset logikk til standard SAP funksjonalitet. Denne siden forklarer hva en BADI er, dens funksjoner, de klassiske og nye typene, arbeidsflyten SE18 og SE19, og hvordan den sammenlignes med utganger.

Hva er BADI?
BADI stรฅr for Bbrukervennlighet Add Ins. Akkurat som kundeutganger, hjelper BADI med รฅ koble tilpassede forbedringer til SAP funksjonalitet. Eksempel pรฅ en BADI: I transaksjonen CAT2 โ Time Sheet Entry รธnsker HR รฅ inkludere en interaktiv bekreftelse pรฅ at bevisst innsending av feil data er grunnlag for avskjed. Dette kan oppnรฅs ved รฅ bruke BADI
Forskjellen fra en klassisk exit er teknisk. En BADI er bygget pรฅ ABAP-objekter, sรฅ standardprogrammet kaller en grensesnittmetode, og den tilpassede koden ligger i en klasse som implementerer den metoden. Dette er grunnen til at en BADI ofte beskrives som den objektorienterte etterfรธlgeren til kundeutgang.
Funksjoner
- BADI-er er objektorienterte
- De kan implementeres flere ganger
- Det krever ikke SAP Software Endre registrering
- Ingen effekt pรฅ utgivelsesoppgradert pรฅ funksjonen til BADI-er
Disse fire funksjonene forklarer hvorfor SAP anbefaler en BADI fremfor en klassisk exit. Fordi forbedringen sitter i en egen klasse, overlever den en oppgradering urรธrt, og fordi en BADI kan defineres som flerbruk, kan flere team forbedre det samme punktet uten รฅ overskrive hverandre.
Typer av BADI
SAP tilbyr to generasjoner av Business Add-ins. Den klassiske BADI er den forbedringsbaserte versjonen beskrevet ovenfor, og den nye BADI, introdusert med SAP NetWeaver er en del av Enhancement Framework og er raskere og mer fleksibel.
| Kriterier | Klassisk BADI | Ny (kjerne) BADI |
|---|---|---|
| Vedlikeholdt i | SE18 og SE19 | Forbedringsbyggeren inne i et forbedringspunkt |
| Filter | Enkle filterverdier | Filterkombinasjoner med logiske uttrykk |
| Falle tilbake | Ikke tilgjengelig | En standard reserveklasse kjรธrer nรฅr ingen implementering er aktiv |
| Instantiering | CL_EXITHANDLER=>GET_INSTANCE | GET BADI- og CALL BADI-setningene |
| Ytelse | Tregere, objektet opprettes ved hvert anrop | Raskere, administrert av kjernen |
Begge generasjonene finnes og implementeres pรฅ en lignende mรฅte, beskrevet nedenfor.
Hvordan definere og implementere en BADI
Dette innebar tre trinn
Trinn 1) Oppretter BADI-definisjon og grensesnitt: Transaksjon SE18.
Trinn 2) Opprett BADI-implementeringen: Transaksjon SE19
Trinn 3) Definer en klasse som implementerer grensesnittet: Under implementeringsopprettelsen opprettes ogsรฅ en klasse for รฅ implementere forbedringens grensesnitt.
I kode nรฅr standardprogrammet implementeringen gjennom exit-hรฅndtereren. Det klassiske mรธnsteret instansierer BADI-referansen og kaller deretter grensesnittmetoden.
* 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.
๐ก Tips: En ny, kjernebasert BADI kalles enklere med GET BADI og CALL BADI, som ogsรฅ hรฅndterer filterverdiene automatisk. Bruk SE18 til รฅ sjekke om forbedringspunktet er en klassisk eller en ny BADI fรธr du skriver kallet.
โ ๏ธ Advarsel: Transaksjon SE18 inneholder definisjonen og grensesnittet, mens SE19 inneholder implementeringen. ร opprette implementeringen i SE18, eller definisjonen i SE19, er en vanlig feil som gjรธr at BADI-en blir inaktiv.
BADI vs. kundeutgang vs. brukerutgang
Alle tre teknikkene forbedrer standarden SAP, men de er forskjellige i teknologi og fleksibilitet. Tabellen nedenfor plasserer BADI ved siden av de to eldre exit-teknikker.
| Kriterier | Brukerutgang | Kundeutgang | BADI |
|---|---|---|---|
| Teknologi | Subrutine (FORM) | Funksjonsmodul, skjerm eller meny | Objektorientert grensesnitt og klasse |
| Omfang | Kun SD-modul | Alle moduler | Alle moduler |
| Antall implementeringer | En | En | Multippel, nรฅr definert som flerbruk |
| Vedlikeholdt med | Direkte redigering av inkluderingen | SMOD og CMOD | SE18 og SE19 |
| Upgrade trygge | Sjekket med SPAU | Ja | Ja |
Den praktiske regelen er รฅ bruke en BADI nรฅr en finnes, fordi den er objektorientert, oppgraderingssikker og kan implementeres mer enn รฉn gang.



