V čem je BADI SAP ABAP?
⚡ Chytré shrnutí
BADI v SAP ABAP je zkratka pro Business Add-In, objektově orientované vylepšení, které propojuje vlastní logiku se standardními SAP funkčnost. Tato stránka vysvětluje, co je BADI, jeho funkce, klasické a nové typy, pracovní postup SE18 a SE19 a jak se srovnává s uživatelskými výstupy.

Co je BADI?
BADI znamená Bbezstarostnost Add Ins. Stejně jako zákaznické výstupy, i BADI pomáhá propojit vlastní vylepšení s SAP funkčnost. Příklad BADI: V transakci CAT2 – Time Sheet Entry chce HR zahrnout interaktivní potvrzení, že vědomé odeslání nesprávných údajů je důvodem k propuštění. Toho lze dosáhnout pomocí BADI
Rozdíl oproti klasickému ukončení je technický. BADI je postaven na objektech ABAP, takže standardní program volá metodu rozhraní a vlastní kód se nachází ve třídě, která tuto metodu implementuje. Proto se BADI často popisuje jako objektově orientovaný nástupce odchod zákazníka.
Funkce
- BADI jsou objektově orientované
- Mohou být implementovány vícekrát
- To nevyžaduje SAP Software a licence Změna registrace
- Žádný vliv na upgradované vydání na fungování BADI
Tyto čtyři vlastnosti vysvětlují, proč SAP doporučuje BADI před klasickým ukončením. Protože vylepšení sídlí v samostatné třídě, přežije upgrade beze změny, a protože BADI lze definovat jako vícenásobné použití, několik týmů může vylepšit stejný bod, aniž by se navzájem přepisovaly.
Typy BADI
SAP nabízí dvě generace doplňků pro firmy. Klasický BADI je verze založená na vylepšeních popsaná výše a nový BADI, představený s SAP NetWeaver je součástí Enhancement Framework a je rychlejší a flexibilnější.
| Kritéria | Klasický BADI | Nový (jádrový) BADI |
|---|---|---|
| Udržováno v | SE18 a SE19 | Tvůrce vylepšení uvnitř vylepšeného místa |
| Filtry | Jednoduché hodnoty filtru | Kombinace filtrů s logickými výrazy |
| Ustoupit | Není k dispozici | Výchozí záložní třída se spustí, když není aktivní žádná implementace. |
| Instanciace | CL_EXITHANDLER=>GET_INSTANCE | Příkazy GET BADI a CALL BADI |
| Výkon | Pomalejší, objekt vytvářen při každém volání | Rychlejší, spravované jádrem |
Obě generace jsou nalezeny a implementovány podobným způsobem, jak je popsáno dále.
Jak definovat a implementovat BADI
To zahrnovalo tři kroky
Krok 1) Vytvoření definice BADI a jejího rozhraní: Transakce SE18.
Krok 2) Vytvoření implementace BADI: Transakce SE19
Krok 3) Definujte třídu, která implementuje rozhraní: Během vytváření implementace se také vytvoří třída pro implementaci rozhraní vylepšení.
V kódu se standardní program dostane k implementaci prostřednictvím obslužné rutiny ukončení. Klasický vzor vytvoří instanci reference BADI a poté zavolá metodu rozhraní.
* 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.
💡 Tip: Nový, kernelový BADI se volá jednodušeji pomocí GET BADI a CALL BADI, které také automaticky zpracovávají hodnoty filtru. Před zapsáním volání použijte SE18 k ověření, zda je bod vylepšení klasický nebo nový BADI.
Warning️ Varování: Transakce SE18 obsahuje definici a rozhraní, zatímco SE19 implementaci. Vytvoření implementace v SE18 nebo definice v SE19 je častou chybou, která způsobuje, že BADI je neaktivní.
BADI vs. odchod zákazníka vs. odchod uživatele
Všechny tři techniky zvyšují standard SAP, ale liší se technologií a flexibilitou. Tabulka níže řadí BADI vedle dvou starších techniky ukončení.
| Kritéria | Uživatelský odchod | Východ zákazníka | BADI |
|---|---|---|---|
| Technika | Podprogram (FORMULÁŘ) | Funkční modul, obrazovka nebo menu | Objektově orientované rozhraní a třída |
| Rozsah | Pouze SD modul | Všechny moduly | Všechny moduly |
| Počet implementací | Jedna | Jedna | Vícenásobné, pokud je definováno jako vícenásobné použití |
| Udržováno s | Přímá úprava zahrnutí | SMOD a CMOD | SE18 a SE19 |
| Upgrade trezor | Ověřeno u SPAU | Ano | Ano |
Praktickým pravidlem je používat BADI, kdykoli existuje, protože je objektově orientovaný, bezpečný pro upgrade a lze jej implementovat vícekrát.



