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.

  • ๐Ÿงฉ Definicja podstawowa: Dodatek biznesowy to element rozszerzajฤ…cy, podobny do wyjล›cia klienta, ktรณry doล‚ฤ…cza niestandardowe funkcje do standardowych SAP bez modyfikowania.
  • ๐Ÿงฑ Obiektowo zorientowany: BADI definiuje interfejs, a rozszerzenie znajduje siฤ™ w klasie, ktรณra je implementuje, a nie w zarezerwowanym elemencie include.
  • ๐Ÿ” Wiele implementacji: W przeciwieล„stwie do wyjล›cia klienta, BADI moลผna wdraลผaฤ‡ wielokrotnie, co jest przydatne w przypadku rozwiฤ…zaล„ branลผowych i wersji krajowych.
  • ๐Ÿ”“ Upgrade Bezpieczna: BADI nie potrzebuje SAP Rejestracja zmian oprogramowania nie jest uwzglฤ™dniana przy aktualizacji wersji.
  • ๐Ÿ› ๏ธ. Definicja i wdroลผenie: Definicja i interfejs sฤ… tworzone w SE18, a implementacja wraz z klasฤ… โ€” w SE19.
  • ๐Ÿ†• Klasyczne i nowe: Klasyczny BADI opiera siฤ™ na rozszerzeniach, a nowy BADI jฤ…dra wprowadzony w NetWeaver dodaje filtry, klasy zapasowe i lepszฤ… wydajnoล›ฤ‡.

Czym jest BADI SAP ABAP

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

Przykล‚ad 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.

Zdefiniuj i zaimplementuj BADI

Krok 2) Utwรณrz implementacjฤ™ BADI: Transakcja SE19

Zdefiniuj i zaimplementuj BADI

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.

FAQ

SE18 to BADI Builder, w ktรณrym tworzona jest definicja i jej interfejs. SE19 to Implementation Builder, w ktรณrym do definicji doล‚ฤ…czana jest klasa implementujฤ…ca. Jedna definiuje hak, a druga go wypeล‚nia.

Wielokrotnego uลผytku BADI pozwala na jednoczesne uruchomienie wiฤ™cej niลผ jednej implementacji, a wszystkie z nich sฤ… uruchamiane po wywoล‚aniu metody. Jednorazowy uลผytek BADI pozwala na uruchomienie tylko jednej implementacji.

Ustaw punkt przerwania dla CL_EXITHANDLER=>GET_INSTANCE, uruchom transakcjฤ™ i odczytaj nazwฤ™ BADI z parametru EXIT_NAME. W celu znalezienia nowych BADI wyszukaj miejsca ulepszeล„ programu w systemie informacji repozytorium.

Tak. Asystenci AI w narzฤ™dziach programistycznych ABAP tworzฤ… klasฤ™ implementujฤ…cฤ…, treล›ฤ‡ metody i logikฤ™ filtru na podstawie opisu wymagania. Deweloper nadal aktywuje implementacjฤ™ w SE19 i jฤ… testuje.

Doradcy ds. sztucznej inteligencji badajฤ… standardowy program i zgล‚aszajฤ… dostฤ™pne opcje ulepszeล„, a nastฤ™pnie rekomendujฤ… nowe BADI w miejscu ulepszeล„ w celu uzyskania nowej pracy.ping klasyczny BADI, w ktรณrym dostฤ™pna jest tylko ta opcja.

Podsumuj ten post nastฤ™pujฤ…co: