SAP Výukový program BAPI – Jak vytvořit BAPI v ABAP
⚡ Chytré shrnutí
BAPI v SAP ABAP je standardizovaná metoda obchodního objektu s podporou RFC, která umožňuje externím aplikacím přístup k procesům a datům R/3. Tato stránka vysvětluje standardizovaná rozhraní BAPI, jak je vytvořit v SWO1, jak je testovat, jak je vydávat a jak volat BAPI z ABAP.

Co je BAPI?
Business Application Programming Interface (BAPI) jsou standardizovaná programovací rozhraní (metody) umožňující externím aplikacím přístup k obchodním procesům a datům v systému R/3.
Oni poskytují stabilní a standardizované metody k dosažení bezproblémové integrace mezi systémem R/3 a externími aplikacemi, staršími systémy a doplňky.
BAPI jsou definovány v BOR (úložiště obchodních objektů) jako metody SAP typy obchodních objektů, které provádějí specifické obchodní funkce. Jsou implementovány jako Funkce s podporou RFC moduly a jsou vytvořeny v Tvůrci funkcí ABAP Workbench.
Některé BAPI a metody poskytují základní funkce a lze je použít pro většinu SAP Business Objects.Tyto se nazývají STANDARDIZOVANÉ BAPI.
Seznam standardizovaných BAPI:
- BAPI pro čtení dat – GetList() , GetDetail() , GetStatus() , ExistenceCheck()
- BAPI pro vytváření nebo změnu dat – Create() ,Change(),Delete() a Undelete() ,
- BAPI pro hromadné zpracování -ChangeMultiple(), CreateMultiple(), DeleteMultiple().
Výhody BAPI
BAPI je upřednostňováno před technikami založenými na obrazovce, protože se jedná o zdokumentované a vydané rozhraní, které SAP zůstává stabilní napříč verzemi. To přináší několik praktických výhod.
- Stabilní rozhraní: Podpis vydaného BAPI se při upgradu nemění, takže volající program pokračuje v práci.
- Opětovné použití obchodní logiky: BAPI provádí stejná ověření jako transakce, takže data přidaná skrze něj zůstávají konzistentní.
- Dálkové ovládání povoleno: Protože BAPI je funkční modul s podporou RFC, lze jej volat z jiného SAP systém, Java nebo program .NET, případně webová služba.
- Bez závislosti na obrazovce: Na rozdíl od dávkového vstupního záznamu se BAPI nepřeruší při změně rozvržení obrazovky.
S jasným konceptem a jeho výhodami se v další části krok za krokem vytvoří BAPI.
Jak vytvořit BAPI
Krok 1) Přejděte na transakci swo1 (Nástroje->Business Framework -> Vývoj BAPI ->Business Object builder) . Vyberte obchodní objekt podle funkčního požadavku, pro který se vytváří BAPI.
Krok 2) Otevřete obchodní objekt v režimu změn. Poté vyberte Utilities ->API Methods ->Add method.Pak zadejte název funkčního modulu a zvolte Pokračovat.
Krok 3) V dalším dialogovém okně je třeba zadat následující informace:
- Metoda : Navrhněte vhodný název pro metodu,
- Texty: Zadejte popis pro BAPI,
- Přepínací tlačítka: dialog, Synchronosný, na instanci nezávislý . BAPI jsou obvykle implementovány synchronně.
Krok 4) Chcete-li vytvořit metodu, vyberte v dalším dialogovém okně Ano.
Krok 5) Po vygenerování a spuštění programu zkontrolujte program v právě vytvořené metodě. Tím se vytvoří BAPI.
Testování BAPI
BAPI můžete otestovat pomocí Testování individuální metoda Business Object v Business Object Builderu. (nebo lze k otestování metody použít transakci 'SWUD') .
Uvolnění a zmrazení BAPI
- Chcete-li uvolnit BAPI, nejprve uvolněte funkční modul (pomocí transakce se37).
- Nastavte stav metody na „uvolněno“ v nástroji Business Object Builder (pomocí transakce SWo1 – Upravit-> změnit stav-> uvolněno. )
Můžete také použít BAPI Explorer (transakční kód BAPI) pro 360′ zobrazení na BAPI
Jak volat BAPI v ABAP
Rozhraní BAPI se volá stejně jako jakýkoli funkční modul s podporou RFC. Důležitým pravidlem je, že BAPI nikdy nevydává vlastní příkaz COMMIT WORK, takže volající musí změnu potvrdit pomocí BAPI_TRANSACTION_COMMIT nebo ji zahodit pomocí BAPI_TRANSACTION_ROLLBACK. Následující příklad vytvoří prodejní objednávku se standardním rozhraním BAPI.
DATA: ls_header TYPE bapisdhd1, lt_items TYPE STANDARD TABLE OF bapisditm, lt_return TYPE STANDARD TABLE OF bapiret2, lv_order TYPE vbeln. * Fill the header and item structures, then call the BAPI CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = ls_header IMPORTING salesdocument = lv_order TABLES order_items_in = lt_items return = lt_return. * A BAPI does not commit on its own - decide based on the return table READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ENDIF.
Warning️ Varování: Před potvrzením (commitem) vždy zkontrolujte tabulku RETURN, zda neobsahuje zprávu typu E nebo A. Volání BAPI_TRANSACTION_COMMIT po chybě uloží neúplný dokument, což je jedna z nejčastějších chyb BAPI.
BAPI vs. BDC vs. RFC
BAPI, a BDCa prostý RFC přesouvají všechna data do SAP, ale liší se stabilitou a tím, co znovu používají. Níže uvedená tabulka je porovnává.
| Kritéria | BAPI | BDC | RFC (vlastní) |
|---|---|---|---|
| Rozhraní | Uvolněná metoda obchodního objektu | Sekvence obrazovky transakce | Jakýkoli vlastní funkční modul |
| Stabilita při upgradu | Zaručeno pro vydané BAPI | Přeruší se, pokud se změní obrazovka | Záleží na vývojáři |
| Dálkové ovládání povoleno | Ano | Ne | Ano |
| Ověření obchodní činnosti | Plná, stejná jako transakce | Plná, spouští skutečné obrazovky | Pouze to, co vývojář kóduje |
| Nejlepší pro | Stabilní integrace a rozhraní | Zatížení, kde neexistuje BAPI | Zakázkové služby point-to-point |
Pravidlem je používat vydané BAPI, kdykoli existuje, v případě neexistence se uchýlit k BDC a rezervovat vlastní RFC pro zakázkové služby.





