Vad är BADI i SAP ABAP?

⚡ Smart sammanfattning

BADI i SAP ABAP står för Business Add-In, en objektorienterad förbättring som kopplar anpassad logik till standard SAP funktionalitet. Den här sidan förklarar vad en BADI är, dess funktioner, de klassiska och nya typerna, arbetsflödena SE18 och SE19 och hur den jämförs med utgångar.

  • 🧩 Kärndefinition: Ett företagstillägg är en förbättringshook, som en kundutgång, som kopplar anpassad funktionalitet till standard SAP utan att modifiera den.
  • 🧱 Objektorienterad: En BADI definierar ett gränssnitt, och förbättringen finns i en klass som implementerar det, snarare än i en reserverad include.
  • 🔁 Flera implementeringar: Till skillnad från en kundutgång kan en BADI implementeras flera gånger, vilket passar branschlösningar och landsversioner.
  • 🔓 Upgrade Säker: En BADI behöver ingen SAP Registrering av programändring och påverkas inte av en versionsuppgradering.
  • 🛠️ Definition och implementering: Definitionen och gränssnittet skapas i SE18, och implementationen med dess klass skapas i SE19.
  • 🆕 Klassiskt och nytt: Den klassiska BADI är förbättringsbaserad, och den nya kärn-BADI som introducerades i NetWeaver lägger till filter, reservklasser och bättre prestanda.

Vad är BADI i SAP ABAP

Vad är BADI?

BADI står för Banvändbarhet Add Ins. Precis som kundutgångar hjälper BADI till att koppla anpassade förbättringar till SAP funktionalitet. Exempel på en BADI: I transaktionen CAT2 – Time Sheet Entry vill HR inkludera en interaktiv bekräftelse på att att medvetet skicka in felaktiga uppgifter är skäl för uppsägning. Detta kan uppnås med BADI

Exempel på en BADI

Skillnaden från en klassisk exit är teknisk. En BADI är byggd på ABAP-objekt, så standardprogrammet anropar en gränssnittsmetod, och den anpassade koden finns i en klass som implementerar den metoden. Det är därför en BADI ofta beskrivs som den objektorienterade efterföljaren till den kundutgång.

Funktioner

  • BADI:s är objektorienterade
  • De kan implementeras flera gånger
  • Det kräver inte SAP Mjukvara Ändra registrering
  • Ingen effekt på uppgraderad version på BADI:s funktion

Dessa fyra egenskaper förklarar varför SAP rekommenderar en BADI framför en klassisk exit. Eftersom förbättringen sitter i en separat klass, överlever den en uppgradering orörd, och eftersom en BADI kan definieras som multipel användning kan flera team förbättra samma punkt utan att skriva över varandra.

Typer av BADI

SAP erbjuder två generationer av Business Add-ins. Den klassiska BADI är den förbättringsbaserade versionen som beskrivs ovan, och den nya BADI, som introduceras med SAP NetWeaver är en del av Enhancement Framework och är snabbare och mer flexibelt.

Kriterier Klassisk BADI Ny (kärna) BADI
Underhålls i SE18 och SE19 Förbättringsverktyget inuti en förbättringspunkt
Filter Enkla filtervärden Filterkombinationer med logiska uttryck
Retirera Ej tillgänglig En standardmässig reservklass körs när ingen implementering är aktiv
Instantiering CL_EXITHANDLER=>HÄMTA_INSTANS GET BADI- och CALL BADI-satserna
Prestanda Långsammare, objekt skapas vid varje anrop Snabbare, hanteras av kärnan

Båda generationerna hittas och implementeras på ett liknande sätt, vilket beskrivs nedan.

Hur man definierar och implementerar en BADI

Detta innebar tre steg

Steg 1) Skapa BADI-definition och dess gränssnitt: Transaktion SE18.

Definiera och implementera en BADI

Steg 2) Skapa BADI-implementeringen: Transaktion SE19

Definiera och implementera en BADI

Steg 3) Definiera en klass som implementerar gränssnittet: Under skapandet av implementeringen skapas även en klass för att implementera förbättringens gränssnitt.

I kod når standardprogrammet implementeringen via exit handler. Det klassiska mönstret instansierar BADI-referensen och anropar sedan interface-metoden.

* 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, kärnbaserad BADI anropas enklare med GET BADI och CALL BADI, vilka också hanterar filtervärdena automatiskt. Använd SE18 för att kontrollera om förbättringspunkten är en klassisk eller en ny BADI innan anropet skrivs.

⚠️ Varning: Transaktion SE18 innehåller definitionen och gränssnittet, medan SE19 innehåller implementeringen. Att skapa implementeringen i SE18, eller definitionen i SE19, är ett vanligt misstag som lämnar BADI inaktiv.

BADI vs Kundutgång vs Användarutgång

Alla tre teknikerna förbättrar standarden SAP, men de skiljer sig åt i teknik och flexibilitet. Tabellen nedan placerar BADI bredvid de två äldre exittekniker.

Kriterier Användarutgång Kundutgång BADI
Teknologi Subrutin (FORM) Funktionsmodul, skärm eller meny Objektorienterat gränssnitt och klass
Omfattning Endast SD-modul Alla moduler Alla moduler
Antal implementeringar One One Flera, när de definieras som flerfaldig användning
Underhålls med Direkt redigering av inkluderingen SMOD och CMOD SE18 och SE19
Upgrade säker Kontrollerad med SPAU Ja Ja

Den praktiska regeln är att använda en BADI närhelst en sådan finns, eftersom den är objektorienterad, uppgraderingssäker och kan implementeras mer än en gång.

Vanliga frågor

SE18 är BADI-byggaren där definitionen och dess gränssnitt skapas. SE19 är implementeringsbyggaren där en implementationsklass kopplas till definitionen. En definierar kroken, den andra fyller den.

En BADI med flera användningsområden tillåter mer än en aktiv implementering samtidigt, och alla körs när metoden anropas. En BADI med en enda användning tillåter endast en aktiv implementering.

Sätt en brytpunkt på CL_EXITHANDLER=>GET_INSTANCE, kör transaktionen och läs BADI-namnet från parametern EXIT_NAME. För nya BADI:er, sök efter programmets förbättringsplatser i Repository Information System.

Ja. AI-assistenter i ABAP-utvecklingsverktyg utarbetar implementeringsklassen, metodkroppen och filterlogiken från en beskrivning av kravet. En utvecklare aktiverar fortfarande implementeringen i SE19 och testar den.

AI-rådgivare granskar standardprogrammet och rapporterar vilka förbättringsalternativ som finns, och rekommenderar sedan den nya BADI:n inom en förbättringsplats för nytt arbete.ping den klassiska BADI där endast det alternativet erbjuds.

Sammanfatta detta inlägg med: