SAP BAPI-vejledning – Sådan opretter du BAPI i ABAP

⚡ Smart opsummering

BAPI i SAP ABAP er en standardiseret, RFC-aktiveret metode til et forretningsobjekt, der giver eksterne applikationer adgang til R/3-processer og -data. Denne side forklarer standardiserede BAPI'er, hvordan man opretter en i SWO1, test, frigivelse og hvordan man kalder en BAPI fra ABAP.

  • 🔌 Kernedefinition: En Business Application Programming Interface er en stabil metode, der giver eksterne systemer standardiseret adgang til SAP forretningsprocesser og data.
  • 🗃️ Forretningsobjektlager: BAPI'er er defineret i BOR som metoder for forretningsobjekttyper og implementeret som RFC-aktiverede funktionsmoduler.
  • 📚 Standardiserede BAPI'er: GetList, GetDetail, Create, Change, Delete og Multiple-varianterne tilbyder genanvendelige læse-, skrive- og massebehandlingsmetoder.
  • 🛠️ Skabelse: En BAPI bygges i transaktion SWO1 ved at tilføje en API-metode, der peger på et RFC-aktiveret funktionsmodul.
  • Test og udgivelse: Metoden testes i Business Object Builder eller SWUD og frigives derefter ved at frigive funktionsmodulet og indstille metodens status.
  • 📞 Kald af en BAPI: Et ABAP-program kalder funktionsmodulet og committer derefter med BAPI_TRANSACTION_COMMIT, fordi en BAPI ikke committer alene.

Sådan opretter du BAPI i SAP ABAP

Hvad er BAPI?

Business Application Programming Interface (BAPI) er standardiserede programmeringsgrænseflader (metoder), der gør det muligt for eksterne applikationer at få adgang til forretningsprocesser og data i R/3-systemet.

De give stabile og standardiserede metoder at opnå problemfri integration mellem R/3-systemet og eksterne applikationer, ældre systemer og tilføjelser.

BAPI'er er defineret i BOR(Business Object Repository) som metoder til SAP forretningsobjekttyper, der udfører specifikke forretningsfunktioner. De implementeres som RFC-aktiveret funktion moduler og oprettes i funktionsbyggeren i ABAP Workbench.

Nogle BAPI'er og metoder giver grundlæggende funktioner og kan bruges til de fleste SAP Business Objects. Disse kaldes STANDARDISEREDE BAPI'er.

Liste over standardiserede BAPI'er:

  • BAPI'er til læsning af data – GetList() , GetDetail() , GetStatus() , ExistenceCheck()
  • BAPI'er til oprettelse eller ændring af data- Create() ,Change(),Delete() og Undelete() ,
  • BAPI'er til massebehandling -ChangeMultiple(), CreateMultiple(), DeleteMultiple().

Fordele ved BAPI

En BAPI foretrækkes frem for skærmbaserede teknikker, fordi det er en dokumenteret, frigivet grænseflade, der SAP forbliver stabil på tværs af udgivelser. Dette medfører adskillige praktiske fordele.

  • Stabil grænseflade: Signaturen af ​​en frigivet BAPI ændres ikke ved en opgradering, så det kaldende program fortsætter med at virke.
  • Genbrug af forretningslogik: En BAPI kører de samme valideringer som transaktionen, så de data, der tilføjes via den, forbliver ensartede.
  • Fjernbetjening aktiveret: Da en BAPI er et RFC-aktiveret funktionsmodul, kan det kaldes fra et andet SAP system, en Java eller .NET-program eller en webtjeneste.
  • Ingen skærmafhængighed: I modsætning til en batch-inputoptagelse bryder en BAPI ikke, når et skærmlayout ændres.

Med konceptet og dets fordele klare, opbygger næste afsnit en BAPI trin for trin.

Sådan opretter du en BAPI

Trin 1) Gå til transaktion swo1 (Værktøjer->Business Framework -> BAPI Development ->Business Object builder). Vælg forretningsobjektet i henhold til det funktionelle krav, som BAPI'en oprettes for.

Opret en BAPI i ABAP

Trin 2) Åbn forretningsobjektet i ændringstilstand. Vælg derefter Hjælpeprogrammer -> API-metoder -> Tilføj metode. Indtast derefter navnet på funktionsmodulet og vælg Fortsæt.

Opret en BAPI i ABAP

Trin 3) I den næste dialogboks skal følgende oplysninger angives:

  • Metode: Foreslå et passende navn til metoden,
  • Tekster : Indtast beskrivelse for BAPI,
  • Radioknapper: Dialog, Syncærlig, instans-uafhængig. BAPI'er implementeres normalt synkront.

Opret en BAPI i ABAP

Trin 4) For at oprette metoden skal du vælge Ja i den næste dialogboks.

Opret en BAPI i ABAP

Trin 5) Efter at programmet er blevet genereret og udført, skal du kontrollere programmet i den metode, der lige er oprettet. Således oprettes en BAPI.

Opret en BAPI i ABAP

Test af BAPI

Du kan teste BAPI ved Test den individuelle metode for Business Object i Business Object Builder. (eller man kan bruge transaktionen 'SWUD' til at teste metoden).

Frigivelse og frysning af BAPI

  • For at frigive BAPI'en skal du først frigive funktionsmodulet (ved hjælp af transaktion se37).
  • Indstil status for metoden til 'frigivet' i Business Object Builder (ved hjælp af transaktion SWo1 – Rediger-> skift status-> frigivet. )

Du kan også bruge BAPI Explorer (Transaktionskode BAPI) til 360′-visning på BAPI

Sådan kalder du en BAPI i ABAP

En BAPI kaldes ligesom ethvert RFC-aktiveret funktionsmodul. Den vigtige regel er, at en BAPI aldrig udsteder sit eget COMMIT WORK, så kalderen skal bekræfte ændringen med BAPI_TRANSACTION_COMMIT eller kassere den med BAPI_TRANSACTION_ROLLBACK. Eksemplet nedenfor opretter 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: Kontrollér altid RETURN-tabellen for en besked af typen E eller A, før du foretager en commit. Kald af BAPI_TRANSACTION_COMMIT efter en fejl gemmer et ufuldstændigt dokument, hvilket er en af ​​de mest almindelige BAPI-fejl.

BAPI vs. BDC vs. RFC

En BAPI, en BDC, og en almindelig RFC flytter alle data ind i SAP, men de adskiller sig i stabilitet og i hvad de genbruger. Tabellen nedenfor sammenligner dem.

Kriterier BAPI BDC RFC (brugerdefineret)
grænseflade Frigivet metode for et forretningsobjekt Skærmsekvens for en transaktion Ethvert brugerdefineret funktionsmodul
Stabilitet ved opgradering Garanteret for frigivne BAPI'er Afbrydes, hvis en skærm ændres Afhænger af udvikleren
Fjernbetjening aktiveret Ja Ingen Ja
Forretningsvalidering Fuld, samme som transaktionen Fuld, kører de faktiske skærme Kun hvad udvikleren koder
Bedste for Stabil integration og grænseflader Indlæsninger hvor der ikke findes en BAPI Tilpassede punkt-til-punkt-tjenester

Tommelfingerreglen er at bruge en frigivet BAPI, når en sådan findes, falde tilbage på en BDC, når den ikke findes, og reservere brugerdefinerede RFC'er til skræddersyede tjenester.

Ofte Stillede Spørgsmål

En BAPI udfører opdateringen, men overlader COMMIT WORK til den, der kalder, så flere BAPI'er kan kombineres til én logisk arbejdsenhed. BAPI_TRANSACTION_COMMIT gemmer dem derefter sammen.ping dataene er konsistente.

RETURN-tabellen af ​​typen BAPIRET2 indeholder meddelelserne fra kaldet. En række af typen S er succes, E er fejl, W er advarsel, og A er afbrudt. Kalderen læser den for at afgøre, om der skal foretages en commit.

Transaktion BAPI åbner BAPI Explorer, som viser alle forretningsobjekter og deres metoder med dokumentation og testværktøjer. SE37 viser også en BAPI, fordi hver enkelt er et RFC-aktiveret funktionsmodul.

Ja. AI-assistenter i ABAP-udviklingsværktøjer foreslår standard BAPI for et forretningsobjekt og udarbejder parameterkortet.ping, og tilføj commit og fejlhåndtering. Udvikleren bekræfter felterne og tester kaldet.

Ja. Mange OData-tjenester og AI-integrationer bruger en BAPI nedenunder, fordi den allerede indeholder forretningslogikken. De nyere lag tilføjer REST-adgang og naturligt sprog oven på den stabile BAPI-grænseflade.

Opsummer dette indlæg med: