SAP BAPI-opplæring – Hvordan lage BAPI i ABAP
⚡ Smart oppsummering
BAPI i SAP ABAP er en standardisert, RFC-aktivert metode for et forretningsobjekt som lar eksterne applikasjoner nå R/3-prosesser og -data. Denne siden forklarer standardiserte BAPI-er, hvordan du oppretter en i SWO1, testing, utgivelse og hvordan du kaller en BAPI fra ABAP.

Hva er BAPI?
Business Application Programming Interface (BAPI) er standardiserte programmeringsgrensesnitt (metoder) som gjør det mulig for eksterne applikasjoner å få tilgang til forretningsprosesser og data i R/3-systemet.
De gi stabile og standardiserte metoder for å oppnå sømløs integrasjon mellom R/3-systemet og eksterne applikasjoner, eldre systemer og tillegg.
BAPI-er er definert i BOR(Business Object Repository) som metoder for SAP forretningsobjekttyper som utfører spesifikke forretningsfunksjoner. De implementeres som RFC-aktivert funksjon moduler og opprettes i funksjonsbyggeren til ABAP Workbench.
Noen BAPIer og metoder gir grunnleggende funksjoner og kan brukes til de fleste SAP Business Objects. Disse kalles STANDARDISERTE BAPI-er.
Liste over standardiserte BAPIer:
- BAPIer for lesing av data – GetList() , GetDetail() , GetStatus() , ExistenceCheck()
- BAPI-er for å opprette eller endre data- Create() ,Change(),Delete() og Undelete() ,
- BAPIer for massebehandling -ChangeMultiple(), CreateMultiple(), DeleteMultiple().
Fordeler med BAPI
En BAPI er å foretrekke fremfor skjermbaserte teknikker fordi det er et dokumentert, utgitt grensesnitt som SAP holder seg stabil på tvers av utgivelser. Dette gir flere praktiske fordeler.
- Stabilt grensesnitt: Signaturen til en utgitt BAPI endres ikke ved en oppgradering, så det kallende programmet fortsetter å fungere.
- Gjenbruk av forretningslogikk: En BAPI kjører de samme valideringene som transaksjonen, slik at dataene som legges til gjennom den forblir konsistente.
- Fjernstyrt aktivert: Fordi en BAPI er en RFC-aktivert funksjonsmodul, kan den kalles fra en annen SAP system, a Java eller .NET-program, eller en webtjeneste.
- Ingen skjermavhengighet: I motsetning til et batch-inndataopptak, brytes ikke en BAPI når et skjermoppsett endres.
Med konseptet og fordelene klare, bygger neste avsnitt en BAPI trinn for trinn.
Hvordan lage en BAPI
Trinn 1) Gå til transaksjon swo1 (Verktøy->Business Framework -> BAPI Development ->Business Object builder) .Velg forretningsobjektet, i henhold til funksjonskravet som BAPIen opprettes for.
Trinn 2) Åpne forretningsobjektet i endringsmodus. Velg deretter Verktøy ->API-metoder ->Legg til metode. Skriv deretter inn navnet på funksjonsmodulen og velg Fortsett.
Trinn 3) I den neste dialogboksen må følgende informasjon spesifiseres:
- Metode : Foreslå et passende navn for metoden,
- Tekster : Skriv inn beskrivelse for BAPI,
- Radioknapper: Dialog, Syncærlig, instansuavhengig . BAPI-er implementeres vanligvis synkront.
Trinn 4) Velg Ja i den neste dialogboksen for å lage metoden.
Trinn 5) Etter at programmet er generert og utført, sjekk programmet i metoden som nettopp ble opprettet. Dermed opprettes en BAPI.
Tester BAPI
Du kan teste BAPI ved å Testing den individuelle metoden til Business Object i Business Object Builder. (eller man kan bruke transaksjonen 'SWUD' for å teste metoden).
Frigjøring og frysing av BAPI
- For å frigjøre BAPI, slipp først funksjonsmodulen (ved bruk av transaksjon se37).
- Sett statusen til metoden til 'frigitt' i Business Object Builder (ved hjelp av transaksjon SWo1 – Rediger-> endre status-> frigitt.)
Du kan også bruke BAPI Explorer (transaksjonskode BAPI) for 360′-visning på BAPI
Slik kaller du en BAPI i ABAP
En BAPI kalles som enhver RFC-aktivert funksjonsmodul. Den viktige regelen er at en BAPI aldri utsteder sin egen COMMIT WORK, så den som kaller den må bekrefte endringen med BAPI_TRANSACTION_COMMIT, eller forkaste den med BAPI_TRANSACTION_ROLLBACK. Eksemplet nedenfor oppretter en salgsordre med en standard 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.
⚠️ Advarsel: Sjekk alltid RETURN-tabellen for en melding av typen E eller A før du fullfører. Å kalle BAPI_TRANSACTION_COMMIT etter en feil lagrer et ufullstendig dokument, som er en av de vanligste BAPI-feilene.
BAPI vs. BDC vs. RFC
En BAPI, en BDC, og en vanlig RFC flytter alle data inn i SAP, men de varierer i stabilitet og hva de gjenbruker. Tabellen nedenfor sammenligner dem.
| Kriterier | BAPI | BDC | RFC (tilpasset) |
|---|---|---|---|
| Interface | Utgitt metode for et forretningsobjekt | Skjermsekvens for en transaksjon | Enhver tilpasset funksjonsmodul |
| Stabilitet ved oppgradering | Garantert for utgitte BAPI-er | Bryter hvis en skjerm endres | Avhenger av utvikleren |
| Fjernkontroll aktivert | Ja | Nei | Ja |
| Bedriftsvalidering | Fullstendig, samme som transaksjonen | Full, kjører de faktiske skjermene | Bare det utvikleren koder |
| Best for | Stabil integrasjon og grensesnitt | Laster der det ikke finnes noen BAPI | Tilpassede punkt-til-punkt-tjenester |
Tommelfingerregelen er å bruke en utgitt BAPI når en slik finnes, falle tilbake til en BDC når den ikke finnes, og reservere tilpassede RFC-er for skreddersydde tjenester.





