Czym jest BADI SAP ABAP?
โก Inteligentne podsumowanie
BADI w SAP ABAP to skrรณt od Business Add-In, czyli obiektowego rozszerzenia, ktรณre ลฤ czy niestandardowฤ logikฤ ze standardowฤ SAP Funkcjonalnoลฤ. Ta strona wyjaลnia, czym jest BADI, jakie ma funkcje, jakie sฤ klasyczne i nowe typy, przepลywy pracy SE18 i SE19 oraz jak wypada w porรณwnaniu z wyjลciami.

Co to jest BADI?
BADI oznacza Business Add Ins. Podobnie jak wyjลcia klientรณw, BADI pomaga w podลฤ czaniu niestandardowych ulepszeล SAP funkcjonalnoลฤ. Przykลad BADI: W transakcji CAT2 โ Time Sheet Entry, HR chce uwzglฤdniฤ interaktywne potwierdzenie, ลผe ลwiadome przesลanie nieprawidลowych danych jest podstawฤ do zwolnienia. Moลผna to osiฤ gnฤ ฤ za pomocฤ BADI
Rรณลผnica w stosunku do klasycznego wyjลcia ma charakter techniczny. BADI jest zbudowane na obiektach ABAP, wiฤc standardowy program wywoลuje metodฤ interfejsu, a kod niestandardowy znajduje siฤ w klasie, ktรณra implementuje tฤ metodฤ. Dlatego BADI jest czฤsto okreลlane jako obiektowy nastฤpca wyjลcie klienta.
Udogodnienia
- BADI sฤ zorientowane obiektowo
- Moลผna je realizowaฤ wielokrotnie
- Nie wymaga SAP Oprogramowanie Zmieล rejestracjฤ
- Brak wpลywu uaktualnionej wersji na funkcjonowanie BADI
Te cztery cechy wyjaลniajฤ dlaczego SAP Zaleca BADI zamiast klasycznego wyjลcia. Poniewaลผ ulepszenie znajduje siฤ w osobnej klasie, przetrwa ono ulepszenie bez zmian, a poniewaลผ BADI moลผna zdefiniowaฤ jako wielokrotnego uลผytku, kilka zespoลรณw moลผe ulepszyฤ ten sam punkt bez nadpisywania siฤ nawzajem.
Rodzaje BADI
SAP oferuje dwie generacje dodatkรณw biznesowych. Klasyczny BADI to wersja oparta na ulepszeniach opisana powyลผej, a nowy BADI, wprowadzony wraz z SAP NetWeaver jest czฤลciฤ Enhancement Framework i jest szybszy i bardziej elastyczny.
| kryteria | Klasyczny BADI | Nowy (jฤ dro) BADI |
|---|---|---|
| Utrzymywane w | SE18 i SE19 | Konstruktor ulepszeล w miejscu ulepszeล |
| Filtry | Proste wartoลci filtrรณw | Kombinacje filtrรณw z wyraลผeniami logicznymi |
| awaryjna | Niedostฤpne | Domyลlna klasa zapasowa jest uruchamiana, gdy ลผadna implementacja nie jest aktywna |
| Instancja | CL_EXITHANDLER=>GET_INSTANCE | Polecenia GET BADI i CALL BADI |
| Wydajnoลฤ | Wolniej, obiekt tworzony przy kaลผdym wywoลaniu | Szybciej, zarzฤ dzane przez jฤ dro |
Oba pokolenia sฤ odnajdywane i wdraลผane w podobny sposรณb, co opisano poniลผej.
Jak zdefiniowaฤ i wdroลผyฤ BADI
Wymagaลo to trzech krokรณw
Krok 1) Tworzenie definicji BADI i jej interfejsu: Transakcja SE18.
Krok 2) Utwรณrz implementacjฤ BADI: Transakcja SE19
Krok 3) Zdefiniuj klasฤ implementujฤ cฤ interfejs: Podczas tworzenia implementacji tworzona jest rรณwnieลผ klasa implementujฤ ca interfejs rozszerzenia.
W kodzie standardowy program dociera do implementacji poprzez procedurฤ obsลugi wyjลcia. Klasyczny wzorzec tworzy instancjฤ referencji BADI, a nastฤpnie wywoลuje metodฤ interfejsu.
* 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.
๐ก Wskazรณwka: Nowy, kernelowy BADI jest wywoลywany proลciej za pomocฤ GET BADI i CALL BADI, ktรณre rรณwnieลผ automatycznie obsลugujฤ wartoลci filtrรณw. Uลผyj SE18, aby sprawdziฤ, czy punkt rozszerzenia jest klasycznym, czy nowym BADI przed napisaniem wywoลania.
โ ๏ธ Ostrzeลผenie: Transakcja SE18 zawiera definicjฤ i interfejs, natomiast SE19 zawiera implementacjฤ. Tworzenie implementacji w SE18 lub definicji w SE19 to czฤsty bลฤ d, ktรณry powoduje, ลผe BADI pozostaje nieaktywne.
BADI vs. wyjลcie klienta vs. wyjลcie uลผytkownika
Wszystkie trzy techniki podnoszฤ standard SAP, ale rรณลผniฤ siฤ technologiฤ i elastycznoลciฤ . Poniลผsza tabela umieszcza BADI obok dwรณch starszych techniki wyjลcia.
| kryteria | Wyjลcie uลผytkownika | Wyjลcie klienta | BADI |
|---|---|---|---|
| Technologia | Podprogram (FORMULARZ) | Moduล funkcyjny, ekran lub menu | Obiektowo zorientowany interfejs i klasa |
| Zakres | Tylko moduล SD | Wszystkie moduลy | Wszystkie moduลy |
| Liczba wdroลผeล | jeden | jeden | Wielokrotny, gdy jest zdefiniowany jako wielokrotne uลผycie |
| Utrzymywane z | Bezpoลrednia edycja doลฤ czonego elementu | SMOD i CMOD | SE18 i SE19 |
| Upgrade "bezpiecznym" | Sprawdzono w SPAU | Tak | Tak |
Praktycznฤ zasadฤ jest uลผywanie BADI, jeลli takie istnieje, poniewaลผ jest zorientowane obiektowo, moลผna je uaktualniaฤ i moลผna je zaimplementowaฤ wiฤcej niลผ jeden raz.



