SAP BAPI oktatóanyag – Hogyan hozzunk létre BAPI-t ABAP-ban
⚡ Okos összefoglaló
BAPI-ban SAP Az ABAP egy szabványosított, RFC-kompatibilis üzleti objektum metódus, amely lehetővé teszi a külső alkalmazások számára az R/3 folyamatok és adatok elérését. Ez az oldal ismerteti a szabványosított BAPI-kat, azok létrehozását az SWO1-ben, tesztelését, kiadását és a BAPI meghívását az ABAP-ból.
Mi az a BAPI?
Az Business Application Programming Interface (BAPI) szabványos programozási interfészek (módszerek), amelyek lehetővé teszik a külső alkalmazások számára, hogy hozzáférjenek az R/3 rendszerben lévő üzleti folyamatokhoz és adatokhoz.
Azok stabil és szabványosított módszereket biztosítanak az R/3 rendszer és a külső alkalmazások, örökölt rendszerek és kiegészítők zökkenőmentes integrációja érdekében.
A BAPI-k meghatározása a BOR (üzleti objektumok tárolója) mint módszerei SAP üzleti objektumtípusok, amelyek meghatározott üzleti funkciókat látnak el. Ezeket a következőképpen valósítják meg: RFC-képes funkció modulok, és az ABAP Workbench Function Builderben jönnek létre.
Egyes BAPI-k és módszerek alapvető funkciókat biztosítanak, és a legtöbbhez használhatók SAP Üzleti objektumok.Ezeket az úgynevezett SZABVÁNYOS BAPI-k.
A szabványosított BAPI-k listája:
- BAPI-k adatok olvasásához – GetList() , GetDetail() , GetStatus() , ExistenceCheck()
- BAPI-k adatok létrehozásához vagy módosításához – Create() ,Change(),Delete() és Undelete() ,
- BAPI-k tömeges feldolgozáshoz -ChangeMultiple(), CreateMultiple(), DeleteMultiple().
A BAPI előnyei
A BAPI-t előnyben részesítik a képernyőalapú technikákkal szemben, mivel ez egy dokumentált, kiadott interfész, amely SAP kiadások között stabil marad. Ez számos gyakorlati előnnyel jár.
- Stabil felület: Egy kiadott BAPI aláírása nem változik frissítéskor, így a hívó program továbbra is működik.
- Üzleti logika újrafelhasználása: Egy BAPI ugyanazokat az ellenőrzéseket futtatja le, mint a tranzakció, így a rajta keresztül hozzáadott adatok konzisztensek maradnak.
- Távoli engedélyezés: Mivel a BAPI egy RFC-képes függvénymodul, meghívható egy másikból is. SAP rendszer, a Java vagy .NET program, vagy webszolgáltatás.
- Nincs képernyőfüggőség: A kötegelt beviteli rögzítéssel ellentétben a BAPI nem szakad meg, ha a képernyő elrendezése megváltozik.
Miután a koncepció és annak előnyei tisztázódtak, a következő szakasz lépésről lépésre felépít egy BAPI-t.
Hogyan készítsünk BAPI-t
Step 1) Lépjen a swo1 tranzakcióhoz (Tools->Business Framework -> BAPI Development ->Business Object builder ). Válassza ki az üzleti objektumot annak a funkcionális követelménynek megfelelően, amelyhez a BAPI készül.
Step 2) Nyissa meg az üzleti objektumot változás módban. Ezután válassza a Utilities ->API Methods -> Add Methods (Segédprogramok ->API-módszerek ->Módszer hozzáadása) lehetőséget. Ezután adja meg a funkciómodul nevét, és válassza a Folytatás lehetőséget.
Step 3) A következő párbeszédpanelen a következő információkat kell megadni:
- Módszer: Javasoljon megfelelő nevet a módszernek,
- Szövegek: Írja be a BAPI leírását,
- Rádiógombok: Párbeszéd, Synchronous, Példányfüggetlen . A BAPI-kat általában szinkronban hajtják végre.
Step 4) A módszer létrehozásához válassza az Igen lehetőséget a következő párbeszédpanelen.
Step 5) A program létrehozása és végrehajtása után ellenőrizze a programot az imént létrehozott metódusban. Így létrejön a BAPI.
A BAPI tesztelése
A BAPI-t az alábbi módon tesztelheti Tesztelés az üzleti objektum egyedi metódusa az Business Object Builderben. (vagy használhatja az „SWUD” tranzakciót a módszer tesztelésére) .
A BAPI felszabadítása és lefagyasztása
- A BAPI feloldásához először engedje fel a funkciómodult (a se37 tranzakcióval).
- Állítsa a metódus állapotát „kibocsátva” értékre a Business Object Builderben (SWo1 tranzakcióval – Szerkesztés-> Állapot módosítása-> Felszabadítva.)
Használhatja a BAPI Explorert (BAPI tranzakciókód) is a BAPI 360′-os nézetéhez
Hogyan hívhatunk meg egy BAPI-t ABAP-ban
Egy BAPI meghívása megegyezik bármely RFC-képes függvénymodul meghívásával. A fontos szabály, hogy egy BAPI soha nem ad ki saját COMMIT WORK utasítást, így a hívónak a BAPI_TRANSACTION_COMMIT utasítással kell megerősítenie a módosítást, vagy a BAPI_TRANSACTION_ROLLBACK utasítással el kell vetnie. Az alábbi példa egy standard BAPI-val rendelkező értékesítési megrendelést hoz létre.
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.
⚠️ Figyelmeztetés: Mindig ellenőrizd a RETURN táblát E vagy A típusú üzenetek után, mielőtt véglegesíted a folyamatot. A BAPI_TRANSACTION_COMMIT függvény meghívása hiba után hiányos dokumentumot ment, ami az egyik leggyakoribb BAPI hiba.
BAPI vs. BDC vs. RFC
Egy BAPI, egy BDC, és egy sima RFC mind adatokat mozgat a következőbe: SAP, de stabilitásukban és abban különböznek, hogy mire használják újra. Az alábbi táblázat összehasonlítja őket.
| Kritériumai | BAPI | BDC | RFC (egyéni) |
|---|---|---|---|
| Felület | Egy üzleti objektum kiadott metódusa | Egy tranzakció képernyőképének sorrendje | Bármely egyéni függvénymodul |
| Stabilitás frissítéskor | Garantált a kiadott BAPI-k esetében | Megszakad, ha egy képernyő megváltozik | A fejlesztőtől függ |
| Távoli engedélyezés | Igen | Nem | Igen |
| Üzleti validáció | Teljes, megegyezik a tranzakcióval | Teljes, a tényleges képernyőket futtatja | Csak azt, amit a fejlesztő kódol |
| A legjobb | Stabil integráció és interfészek | Betölti azokat a helyeket, ahol nincs BAPI | Egyedi pont-pont szolgáltatások |
Az alapszabály az, hogy ha létezik egy, kiadott BAPI-t használunk, ha nincs, akkor BDC-t használunk, és az egyéni RFC-ket az egyedi szolgáltatásokhoz tartjuk fenn.






