Ce este BADI în SAP ABAP?
⚡ Rezumat inteligent
BADI în SAP ABAP este prescurtarea de la Business Add-In, o îmbunătățire orientată pe obiecte care conectează logica personalizată la componentele standard SAP funcționalitate. Această pagină explică ce este un BADI, caracteristicile sale, tipurile clasice și noi, fluxul de lucru SE18 și SE19 și cum se compară cu ieșirile.

Ce este BADI?
BADI înseamnă BuSINESS Add Ins. La fel ca în cazul ieșirilor clienților, BADI ajută la conectarea îmbunătățirilor personalizate la SAP funcționalitate. Exemplu de BADI: În tranzacția CAT2 – Time Sheet Entry, HR dorește să includă o confirmare interactivă că trimiterea cu bună știință a datelor incorecte este un motiv de concediere. Acest lucru poate fi realizat folosind BADI
Diferența față de o ieșire clasică este tehnică. Un BADI este construit pe obiecte ABAP, astfel încât programul standard apelează o metodă de interfață, iar codul personalizat se află într-o clasă care implementează acea metodă. Acesta este motivul pentru care un BADI este adesea descris ca succesorul orientat pe obiecte al ieșire client.
Categorii
- BADI-urile sunt orientate pe obiecte
- Ele pot fi implementate de mai multe ori
- Nu necesită SAP Software Schimbați înregistrarea
- Niciun efect asupra eliberării actualizate asupra funcționării BADI-urilor
Aceste patru caracteristici explică de ce SAP recomandă o BADI în locul unei ieșiri clasice. Deoarece îmbunătățirea se află într-o clasă separată, aceasta supraviețuiește unei actualizări fără a fi afectată, iar pentru că o BADI poate fi definită ca utilizare multiplă, mai multe echipe pot îmbunătăți același punct fără a se suprascrie reciproc.
Tipuri de BADI
SAP oferă două generații de Add-In-uri Business. BADI clasic este versiunea bazată pe îmbunătățiri descrisă mai sus, iar noul BADI, introdus odată cu SAP NetWeaver face parte din Enhancement Framework și este mai rapid și mai flexibil.
| Criterii | BADI clasic | BADI (Kernel) nou |
|---|---|---|
| Menținut în | SE18 și SE19 | Constructorul de îmbunătățiri în interiorul unui loc de îmbunătățire |
| Filtre | Valori simple de filtrare | Combinații de filtre cu expresii logice |
| Da înapoi | Nu este disponibil | O clasă de rezervă implicită rulează atunci când nicio implementare nu este activă |
| Instanciarea | CL_EXITHANDLER=>GET_INSTANCE | Instrucțiunile GET BADI și CALL BADI |
| Performanţă | Mai lent, obiectul este creat la fiecare apel | Mai rapid, gestionat de kernel |
Ambele generații sunt găsite și implementate într-un mod similar, descris în continuare.
Cum să definiți și să implementați un BADI
Aceasta a implicat trei pași
Pas 1) Crearea definiției BADI și a interfeței acesteia: Tranzacția SE18.
Pas 2) Creați implementarea BADI: Tranzacția SE19
Pas 3) Definiți o clasă care implementează interfața: În timpul creării implementării, este creată și o clasă pentru implementarea interfeței îmbunătățirii.
În cod, programul standard ajunge la implementare prin intermediul rutinei de tratare a ieșirii. Șablonul clasic instanțiază referința BADI și apoi apelează metoda interfeței.
* 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.
💡 Sfat: Un nou BADI, kernel, este apelat mai simplu cu GET BADI și CALL BADI, care gestionează automat valorile filtrului. Folosește SE18 pentru a verifica dacă punctul de îmbunătățire este un BADI clasic sau unul nou înainte de a scrie apelul.
⚠️ Atenție: Tranzacția SE18 conține definiția și interfața, în timp ce SE19 conține implementarea. Crearea implementării în SE18 sau a definiției în SE19 este o greșeală frecventă care lasă BADI-ul inactiv.
BADI vs. Ieșire client vs. Ieșire utilizator
Toate cele trei tehnici îmbunătățesc standardul SAP, dar diferă prin tehnologie și flexibilitate. Tabelul de mai jos plasează BADI alături de cele două mai vechi tehnici de ieșire.
| Criterii | Ieșire utilizator | Ieșire client | BADI |
|---|---|---|---|
| Tehnologia | Subrutină (FORM) | Modul funcțional, ecran sau meniu | Interfață și clasă orientate pe obiecte |
| domeniu | Numai modul SD | Toate modulele | Toate modulele |
| Numărul de implementări | O | O | Multiplă, atunci când este definită ca utilizare multiplă |
| Întreținut cu | Editare directă a includerii | SMOD și CMOD | SE18 și SE19 |
| Upgrade sigur | Verificat cu SPAU | Da | Da |
Regula practică este de a utiliza un BADI ori de câte ori există unul, deoarece este orientat pe obiecte, sigur pentru actualizare și poate fi implementat de mai multe ori.



