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.

  • 🧩 Definiția de bază: Un Add-In pentru Business este un element de îmbunătățire, precum o ieșire pentru clienți, care atașează funcționalități personalizate la funcțiile standard. SAP fără a o modifica.
  • 🧱 Orientat pe obiecte: Un BADI definește o interfață, iar îmbunătățirea se află într-o clasă care o implementează, mai degrabă decât într-o includere rezervată.
  • 🔁 Implementări multiple: Spre deosebire de o ieșire de la client, un BADI poate fi implementat de mai multe ori, ceea ce se potrivește soluțiilor industriale și versiunilor de țară.
  • 🔓 Upgrade Sigur: Un BADI nu are nevoie de SAP Înregistrarea modificărilor software și nu este afectată de o actualizare a versiunii.
  • 🛠️ Definiție și implementare: Definiția și interfața sunt create în SE18, iar implementarea cu clasa sa este creată în SE19.
  • 🆕 Clasic și nou: BADI-ul clasic se bazează pe îmbunătățiri, iar noul BADI din kernel introdus în NetWeaver adaugă filtre, clase de rezervă și performanțe mai bune.

Ce este BADI în SAP ABAP

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

Exemplu de 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.

Definiți și implementați un BADI

Pas 2) Creați implementarea BADI: Tranzacția SE19

Definiți și implementați un BADI

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.

Întrebări frecvente

SE18 este constructorul BADI unde sunt create definiția și interfața sa. SE19 este constructorul de implementare unde o clasă de implementare este atașată acelei definiții. Una definește hook-ul, cealaltă îl umple.

O implementare BADI cu utilizare multiplă permite mai multe implementări active în același timp, iar toate rulează atunci când metoda este apelată. O implementare BADI cu utilizare unică permite o singură implementare activă.

Setați un punct de întrerupere pe CL_EXITHANDLER=>GET_INSTANCE, rulați tranzacția și citiți numele BADI din parametrul EXIT_NAME. Pentru BADI-uri noi, căutați punctele de îmbunătățire ale programului în Sistemul de informații al depozitului.

Da. Asistenții AI din instrumentele de dezvoltare ABAP elaborează clasa de implementare, corpul metodei și logica de filtrare dintr-o descriere a cerinței. Un dezvoltator activează în continuare implementarea în SE19 și o testează.

Consultanții în inteligență artificială examinează programul standard și raportează opțiunile de îmbunătățire existente, apoi recomandă noul BADI într-un punct de îmbunătățire pentru lucrări noi, keeping BADI-ul clasic unde este oferită doar acea opțiune.

Rezumați această postare cu: