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.

  • 🔌 Kjernedefinisjon: Et forretningsapplikasjonsprogrammeringsgrensesnitt er en stabil metode som gir eksterne systemer standardisert tilgang til SAP forretningsprosesser og data.
  • 🗃️ Lager for forretningsobjekter: BAPI-er er definert i BOR som metoder for forretningsobjekttyper og implementert som RFC-aktiverte funksjonsmoduler.
  • 📚 Standardiserte BAPI-er: GetList, GetDetail, Create, Change, Delete og Multiple-variantene tilbyr gjenbrukbare lese-, skrive- og massebehandlingsmetoder.
  • 🛠️ Opprettelse: En BAPI bygges i transaksjon SWO1 ved å legge til en API-metode som peker til en RFC-aktivert funksjonsmodul.
  • Test og utgivelse: Metoden testes i Business Object Builder eller SWUD, og ​​frigis deretter ved å frigi funksjonsmodulen og angi metodestatusen.
  • 📞 Kalle en BAPI: Et ABAP-program kaller funksjonsmodulen og commit deretter med BAPI_TRANSACTION_COMMIT, fordi en BAPI ikke commit på egenhånd.

Slik oppretter du BAPI i SAP 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.

Lag en BAPI i ABAP

Trinn 2) Åpne forretningsobjektet i endringsmodus. Velg deretter Verktøy ->API-metoder ->Legg til metode. Skriv deretter inn navnet på funksjonsmodulen og velg Fortsett.

Lag en BAPI i ABAP

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.

Lag en BAPI i ABAP

Trinn 4) Velg Ja i den neste dialogboksen for å lage metoden.

Lag en BAPI i ABAP

Trinn 5) Etter at programmet er generert og utført, sjekk programmet i metoden som nettopp ble opprettet. Dermed opprettes en BAPI.

Lag en BAPI i ABAP

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.

Spørsmål og svar

En BAPI utfører oppdateringen, men overlater COMMIT WORK til den som ringer, slik at flere BAPI-er kan kombineres til én logisk arbeidsenhet. BAPI_TRANSACTION_COMMIT lagrer dem deretter sammen, keepping dataene er konsistente.

RETURN-tabellen av typen BAPIRET2 inneholder meldingene fra kallet. En rad av typen S er suksess, E er feil, W er advarsel og A er avbrudd. Kalleren leser den for å avgjøre om den skal fullføre.

Transaksjons-BAPI åpner BAPI Explorer, som viser alle forretningsobjekter og metodene deres med dokumentasjon og testverktøy. SE37 viser også en BAPI, fordi hver av dem er en RFC-aktivert funksjonsmodul.

Ja. AI-assistenter i ABAP-utviklingsverktøy foreslår standard BAPI for et forretningsobjekt, og utarbeider parameterkartetping, og legg til commit og feilhåndtering. Utvikleren bekrefter feltene og tester kallet.

Ja. Mange OData-tjenester og AI-integrasjoner kaller en BAPI under, fordi den allerede inneholder forretningslogikken. De nyere lagene legger til REST-tilgang og naturlig språk i tillegg til det stabile BAPI-grensesnittet.

Oppsummer dette innlegget med: