SAP Tutorial BAPI – Cum se creează BAPI în ABAP
⚡ Rezumat inteligent
BAPI în SAP ABAP este o metodă standardizată, activată prin RFC, a unui obiect business, care permite aplicațiilor externe să acceseze procesele și datele R/3. Această pagină explică BAPI-urile standardizate, cum se creează unul în SWO1, testarea, lansarea și cum se apelează un BAPI din ABAP.

Ce este BAPI?
Business Application Programming Interface (BAPI) sunt interfețe (metode) de programare standardizate care permit aplicațiilor externe să acceseze procesele și datele de afaceri din sistemul R/3.
Ei oferi metode stabile și standardizate pentru a realiza o integrare perfectă între sistemul R/3 și aplicațiile externe, sistemele vechi și suplimentele.
BAPI-urile sunt definite în BOR (depozitarul obiectelor de afaceri) ca metode de SAP tipuri de obiecte business care îndeplinesc funcții business specifice. Acestea sunt implementate ca Funcție activată pentru RFC module și sunt create în Function Builder al ABAP Workbench.
Unele BAPI-uri și metode oferă funcții de bază și pot fi utilizate pentru majoritatea SAP Obiecte de afaceri. Acestea sunt numite BAPI-uri STANDARDIZATE.
Lista BAPI-urilor standardizate:
- BAPI-uri pentru citirea datelor – GetList() , GetDetail() , GetStatus() , ExistenceCheck()
- BAPI-uri pentru crearea sau modificarea datelor - Create() ,Change(),Delete() și Undelete() ,
- BAPI-uri pentru procesare în masă -ChangeMultiple(), CreateMultiple(), DeleteMultiple().
Avantajele BAPI
O interfață BAPI este preferată tehnicilor bazate pe ecran, deoarece este o interfață documentată și lansată care SAP menține stabilitatea de-a lungul versiunilor. Acest lucru aduce mai multe beneficii practice.
- Interfață stabilă: Semnătura unei API lansate nu se modifică la o actualizare, așadar programul apelant continuă să funcționeze.
- Reutilizarea logicii de business: Un BAPI execută aceleași validări ca și tranzacția, astfel încât datele adăugate prin intermediul său rămân consecvente.
- Activat de la distanță: Deoarece un BAPI este un modul de funcții activat RFC, acesta poate fi apelat din altă parte. SAP sistem, a Java sau un program .NET sau un serviciu web.
- Fără dependență de ecran: Spre deosebire de o înregistrare de intrare în lot, un BAPI nu se întrerupe atunci când se modifică aspectul ecranului.
Având conceptul și beneficiile sale clare, următoarea secțiune construiește un BAPI pas cu pas.
Cum se creează un BAPI
Pas 1) Accesați tranzacția swo1 (Tools->Business Framework -> BAPI Development ->Business Object builder ) .Selectați obiectul de afaceri, conform cerinței funcționale pentru care este creat BAPI.
Pas 2) Deschideți obiectul de afaceri în modul de modificare. Apoi selectați Utilities ->API Methods ->Add method. Apoi introduceți numele modulului funcțional și selectați Continue.
Pas 3) În următoarea casetă de dialog, trebuie specificate următoarele informații:
- Metodă: sugerați un nume adecvat pentru metodă,
- Texte: Introduceți descrierea pentru BAPI,
- Butoane radio : Dialog, Synchronous, independent de instanță. BAPI-urile sunt de obicei implementate sincron.
Pas 4) Pentru a crea metoda, selectați Da în următoarea casetă de dialog.
Pas 5) După ce programul a fost generat și executat, verificați programul în metoda tocmai creată. Astfel, este creat un BAPI.
Testarea BAPI
Puteți testa BAPI prin Testarea metoda individuală a Business Object din Business Object Builder. (sau se poate folosi tranzacția „SWUD” pentru a testa metoda).
Eliberarea și înghețarea BAPI
- Pentru a elibera BAPI , mai întâi eliberați modulul de funcție ( folosind tranzacția se37 ) .
- Setați starea metodei la „eliberată” în Business Object Builder (folosind tranzacția SWo1 – Editare-> modificare stare-> eliberat. )
Puteți utiliza, de asemenea, BAPI Explorer (Cod tranzacție BAPI) pentru vizualizarea 360′ pe BAPI
Cum se apelează un BAPI în ABAP
Un BAPI este apelat ca orice modul de funcție activat RFC. Regula importantă este că un BAPI nu emite niciodată propriul COMMIT WORK, așadar apelantul trebuie să confirme modificarea cu BAPI_TRANSACTION_COMMIT sau să o anuleze cu BAPI_TRANSACTION_ROLLBACK. Exemplul de mai jos creează o comandă de vânzare cu un BAPI standard.
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.
⚠️ Atenție: Verificați întotdeauna tabela RETURN pentru un mesaj de tip E sau A înainte de validare. Apelarea funcției BAPI_TRANSACTION_COMMIT după o eroare salvează un document incomplet, aceasta fiind una dintre cele mai frecvente greșeli BAPI.
BAPI vs. BDC vs. RFC
Un BAPI, un BDCși un RFC simplu mută toate datele în SAP, dar diferă în ceea ce privește stabilitatea și reutilizarea. Tabelul de mai jos le compară.
| Criterii | BAPI | BDC | RFC (personalizat) |
|---|---|---|---|
| interfaţă | Metoda lansată a unui obiect business | Secvența de ecran a unei tranzacții | Orice modul de funcții personalizate |
| Stabilitate la actualizare | Garantat pentru BAPI-urile eliberate | Întreruperi dacă se schimbă un ecran | Depinde de dezvoltator |
| Telecomanda activată | Da | Nu | Da |
| Validarea afacerii | Complet, la fel ca tranzacția | Complet, rulează ecranele reale | Doar ceea ce codează dezvoltatorul |
| Cel mai bun pentru | Integrare și interfețe stabile | Încărcări unde nu există BAPI | Servicii personalizate punct la punct |
Regula generală este să se utilizeze un BAPI lansat ori de câte ori există unul, să se recurgă la un BDC atunci când acesta nu există și să se rezerve RFC-uri personalizate pentru servicii personalizate.





