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.

  • ???? Definizione di base: Un'interfaccia di programmazione delle applicazioni aziendali è un metodo stabile che fornisce ai sistemi esterni un accesso standardizzato a SAP processi aziendali e dati.
  • 🗃️ Repository degli oggetti aziendali: Le BAPI sono definite nel BOR come metodi di tipi di oggetti aziendali e implementate come moduli funzione abilitati RFC.
  • 📚 BAPI standardizzate: Le funzioni GetList, GetDetail, Create, Change, Delete e le varianti Multiple forniscono metodi riutilizzabili per la lettura, la scrittura e l'elaborazione in massa.
  • Creazione: Una BAPI viene creata nella transazione SWO1 aggiungendo un metodo API che punta a un modulo funzione abilitato per RFC.
  • Test e rilascio: Il metodo viene testato in Business Object Builder o SWUD, quindi rilasciato rilasciando il modulo funzione e impostando lo stato del metodo.
  • 📞 Chiamata a un BAPI: Un programma ABAP chiama il modulo funzione e quindi esegue il commit con BAPI_TRANSACTION_COMMIT, poiché una BAPI non esegue il commit autonomamente.

Come creare una BAPI in SAP 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.

Crea una BAPI in ABAP

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.

Crea una BAPI in ABAP

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.

Crea una BAPI in ABAP

Passo 4) Per creare il metodo selezionare Sì nella finestra di dialogo successiva.

Crea una BAPI in ABAP

Passo 5) Dopo che il programma è stato generato ed eseguito, controllare il programma nel metodo appena creato. In questo modo viene creata una BAPI.

Crea una BAPI in ABAP

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.

DOMANDE FREQUENTI

Una BAPI esegue l'aggiornamento ma lascia il COMMIT WORK al chiamante, quindi diverse BAPI possono essere combinate in un'unica unità di lavoro logica. BAPI_TRANSACTION_COMMIT le salva quindi insieme, mantenendoleping i dati sono coerenti.

La tabella RETURN di tipo BAPIRET2 contiene i messaggi della chiamata. Una riga di tipo S indica successo, E indica errore, W indica avviso e A indica interruzione. Il chiamante la legge per decidere se confermare o meno l'operazione.

La transazione BAPI apre BAPI Explorer, che elenca ogni oggetto aziendale e i relativi metodi con documentazione e strumenti di test. Anche SE37 mostra una BAPI, poiché ognuna di esse è un modulo funzione abilitato per RFC.

Sì. Gli assistenti IA negli strumenti di sviluppo ABAP suggeriscono la BAPI standard per un oggetto aziendale e redigono la mappa dei parametri.pinge aggiunge la gestione del commit e degli errori. Lo sviluppatore conferma i campi e testa la chiamata.

Sì. Molti servizi OData e integrazioni di intelligenza artificiale utilizzano un'API BAPI sottostante, perché questa contiene già la logica di business. I livelli più recenti aggiungono l'accesso REST e il linguaggio naturale al di sopra della stabile interfaccia BAPI.

Riassumi questo post con: