SAP Tutorial BAPI – Come creare una BAPI in ABAP
⚡ Riepilogo intelligente
BAPI in SAP ABAP è un metodo standardizzato, abilitato per RFC, di un oggetto aziendale che consente alle applicazioni esterne di accedere ai processi e ai dati di R/3. Questa pagina illustra le BAPI standardizzate, come crearne una in SWO1, come testarla, rilasciarla e come richiamarla da ABAP.
Cos'è BAPI?
Le Business Application Programming Interface (BAPI) sono interfacce di programmazione standardizzate (metodi) che consentono alle applicazioni esterne di accedere ai processi e ai dati aziendali nel sistema R/3.
Essi fornire metodi stabili e standardizzati per ottenere un'integrazione perfetta tra il sistema R/3 e le applicazioni esterne, i sistemi legacy e i componenti aggiuntivi.
Le BAPI sono definite nel file BOR (repository di oggetti business) come metodi di SAP tipi di oggetti aziendali che svolgono funzioni aziendali specifiche. Sono implementati come Funzione abilitata RFC moduli e vengono creati nel Function Builder di ABAP Workbench.
Alcuni BAPI e metodi forniscono funzioni di base e possono essere utilizzati per la maggior parte SAP Business Objects.Questi sono chiamati BAPI STANDARDIZZATI.
Elenco delle BAPI standardizzate:
- BAPI per la lettura dei dati – GetList(), GetDetail(), GetStatus(), ExistenceCheck()
- BAPI per la creazione o la modifica dei dati: Create(), Change(),Delete() e Undelete(),
- BAPI per l'elaborazione di massa: ChangeMultiple(), CreateMultiple(), DeleteMultiple().
Vantaggi di BAPI
Una BAPI è preferibile alle tecniche basate su schermo perché è un'interfaccia documentata e rilasciata che SAP rimane stabile tra le diverse versioni. Ciò comporta numerosi vantaggi pratici.
- Interfaccia stabile: La firma di una BAPI rilasciata non cambia in seguito a un aggiornamento, pertanto il programma chiamante continua a funzionare.
- Riutilizzo della logica di business: Una BAPI esegue le stesse validazioni della transazione, quindi i dati aggiunti tramite essa rimangono coerenti.
- Abilitazione remota: Poiché una BAPI è un modulo funzione abilitato RFC, può essere chiamata da un altro SAP sistema, a Java o un programma .NET, o un servizio web.
- Nessuna dipendenza dallo schermo: A differenza di una registrazione di input batch, una BAPI non si interrompe quando cambia il layout della schermata.
Una volta chiariti il concetto e i suoi vantaggi, la sezione successiva illustra la creazione di una BAPI passo dopo passo.
Come creare una BAPI
Passo 1) Andare alla transazione swo1 (Strumenti->Business Framework -> Sviluppo BAPI ->Builder oggetto business). Selezionare l'oggetto business, in base al requisito funzionale per il quale si sta creando la BAPI.
Passo 2) Aprire l'oggetto business in modalità modifica. Quindi selezionare Utilità -> Metodi API -> Aggiungi metodo. Quindi inserire il nome del modulo funzione e selezionare Continua.
Passo 3) Nella finestra di dialogo successiva è necessario specificare le seguenti informazioni:
- Metodo: suggerire un nome appropriato per il metodo,
- Testi: inserire la descrizione per BAPI,
- Pulsanti di opzione: finestra di dialogo, Synchronous, indipendente dall'istanza. Le BAPI sono solitamente implementate in modo sincrono.
Passo 4) Per creare il metodo selezionare Sì nella finestra di dialogo successiva.
Passo 5) Dopo che il programma è stato generato ed eseguito, controllare il programma nel metodo appena creato. In questo modo viene creata una BAPI.
Testare la BAPI
Puoi testare la BAPI tramite Collaudo il metodo individuale dell'oggetto business nel Business Object Builder. (oppure è possibile utilizzare la transazione "SWUD" per testare il metodo).
Rilascio e congelamento della BAPI
- Per rilasciare la BAPI, rilasciare prima il modulo funzione (utilizzando la transazione se37).
- Impostare lo stato del metodo su 'rilasciato' nel Business Object Builder (utilizzando la transazione SWo1 – Modifica-> modifica stato-> rilasciato.)
Puoi anche utilizzare BAPI Explorer (codice transazione BAPI) per la visualizzazione a 360′ su BAPI
Come chiamare una BAPI in ABAP
Una BAPI viene chiamata come qualsiasi modulo funzione abilitato per RFC. La regola fondamentale è che una BAPI non emette mai il proprio COMMIT WORK, quindi il chiamante deve confermare la modifica con BAPI_TRANSACTION_COMMIT o annullarla con BAPI_TRANSACTION_ROLLBACK. L'esempio seguente crea un ordine di vendita con una 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.
⚠️ Attenzione: Prima di confermare, verificare sempre la tabella RETURN per un messaggio di tipo E o A. Chiamare BAPI_TRANSACTION_COMMIT dopo un errore salva un documento incompleto, che è uno degli errori più comuni nelle BAPI.
BAPI contro BDC contro RFC
Un BAPI, un BDCe un semplice RFC spostano tutti i dati in SAPTuttavia, differiscono per stabilità e per i materiali che riutilizzano. La tabella seguente le confronta.
| Criteri | BAPI | BDC | RFC (personalizzato) |
|---|---|---|---|
| Interfaccia | Metodo rilasciato di un oggetto aziendale | Sequenza di schermate di una transazione | Qualsiasi modulo funzione personalizzato |
| Stabilità durante l'aggiornamento | Garantito per BAPI rilasciate | Si interrompe se cambia lo schermo | Dipende dallo sviluppatore |
| Accesso remoto | Si | Non | Si |
| Validazione aziendale | Completo, uguale alla transazione | Completo, esegue gli schermi effettivi | Solo ciò che codifica lo sviluppatore |
| migliori per | Integrazione e interfacce stabili | Caricamenti in cui non esiste BAPI | Servizi personalizzati punto a punto |
La regola generale è di utilizzare una BAPI rilasciata quando ne esiste una, di ricorrere a una BDC in caso contrario e di riservare le RFC personalizzate ai servizi su misura.






