U čemu je BADI SAP ABAP?
⚡ Pametni sažetak
BADI u SAP ABAP je kratica za Business Add-In, objektno orijentirano poboljšanje koje spaja prilagođenu logiku sa standardnim SAP funkcionalnost. Ova stranica objašnjava što je BADI, njegove značajke, klasične i nove vrste, tijek rada SE18 i SE19 te kako se uspoređuje s izlazima.

Što je BADI?
BADI je kratica za BUSINESS Add Ins. Baš kao i izlazi za korisnike, BADI pomaže u povezivanju prilagođenih poboljšanja s SAP funkcionalnost. Primjer BADI: U transakciji CAT2 – Unos radnog vremena, HR želi uključiti interaktivnu potvrdu da je svjesno podnošenje netočnih podataka osnova za otkaz. To se može postići pomoću BADI
Razlika u odnosu na klasični izlaz je tehničke prirode. BADI je izgrađen na ABAP objektima, tako da standardni program poziva metodu sučelja, a prilagođeni kod se nalazi u klasi koja implementira tu metodu. Zato se BADI često opisuje kao objektno orijentirani nasljednik izlaz kupca.
Značajke
- BADI-ji su objektno orijentirani
- Mogu se implementirati više puta
- Ne zahtijeva SAP Softver Promjena registracije
- Nema utjecaja na otpuštanje nadograđeno na funkcioniranje BADI-ja
Ove četiri značajke objašnjavaju zašto SAP preporučuje BADI umjesto klasičnog izlaza. Budući da se poboljšanje nalazi u zasebnoj klasi, ono preživi nadogradnju netaknuto, a budući da se BADI može definirati kao višestruka upotreba, nekoliko timova može poboljšati istu točku bez međusobnog prepisivanja.
Vrste BADI-ja
SAP nudi dvije generacije poslovnih dodataka. Klasični BADI je verzija temeljena na poboljšanjima opisana gore, a novi BADI, predstavljen s SAP NetWeaver je dio Enhancement Frameworka i brži je i fleksibilniji.
| Kriteriji | Klasični BADI | Novi (jezgra) BADI |
|---|---|---|
| Održava se u | SE18 i SE19 | Alat za izradu poboljšanja unutar mjesta poboljšanja |
| Filteri | Jednostavne vrijednosti filtera | Kombinacije filtera s logičkim izrazima |
| rezervna | Nije dostupno | Zadana rezervna klasa se izvršava kada nije aktivna nijedna implementacija |
| Instanciranje | CL_EXITHANDLER=>GET_INSTANCE | Naredbe GET BADI i CALL BADI |
| Izvođenje | Sporije, objekt se kreirao svakim pozivom | Brže, upravljano jezgrom |
Obje generacije su pronađene i implementirane na sličan način, opisan u nastavku.
Kako definirati i implementirati BADI
To je uključivalo tri koraka
Korak 1) Izrada BADI definicije i njenog sučelja: Transakcija SE18.
Korak 2) Izrada BADI implementacije: Transakcija SE19
Korak 3) Definirajte klasu koja implementira sučelje: Tijekom stvaranja implementacije, stvara se i klasa za implementaciju sučelja poboljšanja.
U kodu, standardni program dolazi do implementacije putem izlaznog rukovatelja. Klasični uzorak instancira BADI referencu, a zatim poziva metodu sučelja.
* 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.
💡 Savjet: Novi, kernel BADI se jednostavnije poziva pomoću GET BADI i CALL BADI, koji također automatski obrađuju vrijednosti filtera. Koristite SE18 za provjeru je li točka poboljšanja klasični ili novi BADI prije pisanja poziva.
⚠️ Upozorenje: Transakcija SE18 sadrži definiciju i sučelje, dok SE19 sadrži implementaciju. Stvaranje implementacije u SE18 ili definicije u SE19 česta je pogreška koja ostavlja BADI neaktivnim.
BADI vs. izlaz kupca vs. izlaz korisnika
Sve tri tehnike poboljšavaju standard SAP, ali se razlikuju u tehnologiji i fleksibilnosti. Tablica u nastavku smješta BADI pored dva starija tehnike izlaza.
| Kriteriji | Izlaz korisnika | Izlaz kupca | BADI |
|---|---|---|---|
| Tehnologija | Podprogram (FORM) | Funkcijski modul, zaslon ili izbornik | Objektno orijentirano sučelje i klasa |
| Djelokrug | Samo SD modul | Svi moduli | Svi moduli |
| Broj implementacija | jedan | jedan | Višestruko, kada se definira kao višestruka upotreba |
| Održava se s | Izravno uređivanje uključivanja | SMOD i CMOD | SE18 i SE19 |
| Upgrade sigurna | Provjereno sa SPAU-om | Da | Da |
Praktično pravilo je koristiti BADI kad god postoji, jer je objektno orijentiran, siguran za nadogradnju i može se implementirati više puta.



