Hvad er BADI i SAP ABAP?

⚡ Smart opsummering

BADI i SAP ABAP står for Business Add-In, en objektorienteret forbedring, der kobler brugerdefineret logik til standard SAP funktionalitet. Denne side forklarer, hvad en BADI er, dens funktioner, de klassiske og nye typer, SE18- og SE19-arbejdsgangen, og hvordan den kan sammenlignes med exits.

  • 🧩 Kernedefinition: Et Business Add-in er en forbedringshook, ligesom en kundeudgang, der knytter brugerdefineret funktionalitet til standard SAP uden at ændre det.
  • 🧱 Objektorienteret: En BADI definerer en grænseflade, og forbedringen findes i en klasse, der implementerer den, i stedet for i en reserveret include.
  • 🔁 Flere implementeringer: I modsætning til en kundeexit kan en BADI implementeres flere gange, hvilket passer til brancheløsninger og landeversioner.
  • 🔓 Upgrade Sikker: En BADI behøver ikke SAP Registrering af softwareændringer og påvirkes ikke af en versionsopgradering.
  • 🛠️ Definition og implementering: Definitionen og grænsefladen oprettes i SE18, og implementeringen med dens klasse oprettes i SE19.
  • 🆕 Klassisk og nyt: Den klassiske BADI er baseret på forbedringer, og den nye kerne-BADI, der blev introduceret i NetWeaver, tilføjer filtre, fallback-klasser og bedre ydeevne.

Hvad er BADI i SAP ABAP

Hvad er BADI?

BADI står for Business Add Ins. Ligesom kundeudgange hjælper BADI med at koble brugerdefinerede forbedringer til SAP funktionalitet. Eksempel på en BADI: I transaktion CAT2 – Time Sheet Entry ønsker HR at inkludere en interaktiv anerkendelse af, at bevidst indsendelse af ukorrekte data er grund til afskedigelse. Dette kan opnås ved hjælp af BADI

Eksempel på en BADI

Forskellen fra en klassisk exit er teknisk. En BADI er bygget på ABAP-objekter, så standardprogrammet kalder en interface-metode, og den brugerdefinerede kode findes i en klasse, der implementerer den metode. Derfor beskrives en BADI ofte som den objektorienterede efterfølger til kundeudgang.

Funktionalitet

  • BADI'er er objektorienterede
  • De kan implementeres flere gange
  • Det kræver ikke SAP Software Skift registrering
  • Ingen effekt på udgivelse opgraderet på funktionen af ​​BADI'er

Disse fire funktioner forklarer hvorfor SAP anbefaler en BADI frem for en klassisk exit. Fordi forbedringen sidder i en separat klasse, overlever den en opgradering uberørt, og fordi en BADI kan defineres som flergangsbrug, kan flere teams forbedre det samme punkt uden at overskrive hinanden.

Typer af BADI

SAP tilbyder to generationer af Business Add-Ins. Den klassiske BADI er den forbedringsbaserede version beskrevet ovenfor, og den nye BADI, introduceret med SAP NetWeaver er en del af Enhancement Framework og er hurtigere og mere fleksibel.

Kriterier Klassisk BADI Ny (kerne) BADI
Vedligeholdt i SE18 og SE19 Forbedringsværktøjet i et forbedringspunkt
Filtre Enkle filterværdier Filterkombinationer med logiske udtryk
Falde tilbage Ikke tilgængelig En standard fallback-klasse kører, når der ikke er nogen aktiv implementering
Instantiation CL_EXITHANDLER=>GET_INSTANCE GET BADI- og CALL BADI-sætningerne
Ydeevne Langsommere, objekt oprettet ved hvert kald Hurtigere, administreret af kernen

Begge generationer findes og implementeres på en lignende måde, som beskrevet nedenfor.

Sådan definerer og implementerer du en BADI

Dette involverede tre trin

Trin 1) Oprettelse af BADI-definition og dens grænseflade: Transaktion SE18.

Definer og implementer en BADI

Trin 2) Opret BADI-implementeringen: Transaktion SE19

Definer og implementer en BADI

Trin 3) Definer en klasse, der implementerer grænsefladen: Under oprettelsen af ​​implementeringen oprettes der også en klasse til implementering af forbedringens grænseflade.

I kode når standardprogrammet implementeringen gennem exit-handleren. Det klassiske mønster instantierer BADI-referencen og kalder derefter 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.

💡 Tip: En ny, kernel BADI kaldes enklere med GET BADI og CALL BADI, som også håndterer filterværdierne automatisk. Brug SE18 til at kontrollere, om forbedringspunktet er en klassisk eller en ny BADI, før du skriver kaldet.

⚠️ Advarsel: Transaktion SE18 indeholder definitionen og grænsefladen, mens SE19 indeholder implementeringen. Oprettelse af implementeringen i SE18, eller definitionen i SE19, er en almindelig fejl, der efterlader BADI inaktiv.

BADI vs. kundeexit vs. brugerexit

Alle tre teknikker forbedrer standarden SAP, men de adskiller sig i teknologi og fleksibilitet. Tabellen nedenfor placerer BADI ved siden af ​​de to ældre exit-teknikker.

Kriterier Brugerafslutning Kundeudgang BADI
Teknologier Subrutine (FORM) Funktionsmodul, skærm eller menu Objektorienteret grænseflade og klasse
Anvendelsesområde Kun SD-modul Alle moduler Alle moduler
Antal implementeringer Én Én Multiple, når defineret som multipel brug
Vedligeholdt med Direkte redigering af inkluderingen SMOD og CMOD SE18 og SE19
Upgrade sikker Tjekket med SPAU Ja Ja

Den praktiske regel er at bruge en BADI, når en sådan findes, fordi den er objektorienteret, opgraderingssikker og kan implementeres mere end én gang.

Ofte Stillede Spørgsmål

SE18 er BADI Builder, hvor definitionen og dens grænseflade oprettes. SE19 er Implementation Builder, hvor en implementeringsklasse er knyttet til definitionen. Den ene definerer hook'en, den anden udfylder den.

En BADI til flere anvendelser tillader mere end én aktiv implementering på samme tid, og de kører alle, når metoden kaldes. En BADI til én anvendelse tillader kun én aktiv implementering.

Sæt et breakpoint på CL_EXITHANDLER=>GET_INSTANCE, kør transaktionen, og læs BADI-navnet fra EXIT_NAME-parameteren. For nye BADI'er skal du søge efter programmets forbedringspunkter i Repository Information System.

Ja. AI-assistenter i ABAP-udviklingsværktøjer udarbejder implementeringsklassen, metodekroppen og filterlogikken ud fra en beskrivelse af kravet. En udvikler aktiverer stadig implementeringen i SE19 og tester den.

AI-rådgivere undersøger standardprogrammet og rapporterer, hvilke forbedringsmuligheder der findes, og anbefaler derefter den nye BADI inden for et forbedringssted til nyt arbejde.ping den klassiske BADI, hvor kun den mulighed tilbydes.

Opsummer dette indlæg med: