Merkmale von BAPIs 

Verwendung

Dieser Abschnitt enthält Informationen zu den allgemeinen Merkmalen von BAPIs, mit denen Sie vertraut sein sollten, bevor Sie BAPI-Aufrufe in Ihr Anwendungsprogramm integrieren.

Namenskonventionen

Die vollständige Identifizierung eines BAPIs erfolgt über den Namen des betreffenden Business-Objekttyps gefolgt von dem Namen des BAPIs. (Der Name eines BAPIs ist in englischer Sprache und beschreibt die Funktion, die das BAPI am Business-Objekt ausführt.) Die Namensteile werden durch einen Punkt voneinander getrennt.

Die vollständige Identifizierung des BAPIs CheckAvailability() am Business-Objekt Material lautet beispielsweise Material.CheckAvailability().

Standardisierte BAPIs und Parameter

Es gibt eine Reihe von BAPIs, die für die meisten Business-Objekttypen implementiert werden können. Diese BAPIs stellen bestimmte Grundfunktionen bereit, z.B. das Auflisten der existierenden Instanzen des Business-Objekttyps.

Diese BAPIs werden nach festgelegten Designvorgaben implementiert und erhalten an allen Business-Objekten den gleichen Namen. So steht beispielsweise das BAPI GetList(), mit dem die existierenden Objektinstanzen aufgelistet werden, an vielen Business-Objekten zur Verfügung, z.B. CompanyCode.GetList() und Material.GetList(). Eine kurze Beschreibung dieser BAPIs finden Sie unter Standardisierte BAPIs.

Soweit wie möglich sind BAPIs auch auf Parameterebene standardisiert. Hierfür werden an der BAPI-Schnittstelle standardisierte Parameter eingesetzt, die an den betreffenden BAPIs auf einheitliche Weise implementiert und benannt werden.

Datenbankkonsistenz

Jedes BAPI, das eine Instanz eines Objekts erstellt oder die Daten eines Objekts verändert, hinterläßt einen konsistenten Datenbankzustand. Alle Datenbankänderungen werden vollständig oder überhaupt nicht ausgeführt.

Dabei darf das "COMMIT WORK"-Kommando zum Festschreiben der Änderungen auf der Datenbank nicht vom BAPI selbst aufgerufen werden, sondern muß vom aufrufenden Programm ausgeführt werden. Weitere Informationen hierzu finden Sie unter Transaktionsmodell für die BAPI-Entwicklung.

Keine Dialogorientierung

BAPIs geben keine Bildschirmdialoge vom R/3-Server-System an die aufrufende Anwendung zurück.

Berechtigungen

Für jede Benutzerinteraktion mit dem System R/3 muß der Benutzer bestimmte Berechtigungen haben. Damit ein BAPI als Teil Ihres Anwendungsprogramms ausgeführt werden kann, müssen für die Benutzer Ihrer Anwendung die entsprechenden Berechtigungen in ihren R/3-Stammsätzen festgelegt sein. Die mit den einzelnen BAPIs bereitgestellte Dokumentation enthält Informationen zu den erforderlichen Berechtigungen.

Jeder Ausführungsversuch eines BAPIs, der aufgrund einer unzureichenden Berechtigung fehlschlägt, wird an die aufrufende Anwendung zurückgemeldet.

Datentypen und Datenanzeige

BAPIs sind betriebswirtschaftliche Programmierschnittstellen. Aus diesem Grund werden an der BAPI-Schnittstelle fast ausschließlich neutrale (interne) Datentypen und Datenformate verwendet. Hierzu gibt es jedoch einige Ausnahmen, z.B:

Informationen zu diesen Ausnahmen finden Sie unter Interne/externe Datendarstellung im BAPI-Programmierleitfaden.

Für die benötigte Konvertierung zwischen den internen und externen Datenformaten stehen Konvertierungs-BAPIs zur Verfügung. Informationen hierzu finden Sie unter Service-BAPIs für allgemeine BAPI-Funktionen.

BAPI-Parameter können die meisten unterstützten SAP-Datentypen verwenden. Die Datentypen sind in den Struktureinträgen der einzelnen Parameter im ABAP Dictionary dokumentiert.

Verarbeitungsmodi

Bei direktem Aufruf des BAPIs, beispielsweise über das BAPI ActiveX Control, den R/3 DCOM Component Connector oder den unmittelbaren Aufruf des zugrundeliegenden Funktionsbausteins mit RFC, erfolgt eine synchrone Abarbeitung des BAPIs.

Informationen darüber, wie BAPIs in einer verteilten Umgebung (ALE) aufgerufen werden, finden Sie unter Verteilte Anwendungen programmieren.

Attribute von Business-Objekten

Zugriff auf die Attribute eines Business-Objekts erfolgt über die BAPI-Schnittstelle selbst. Ein Beispiel hierfür ist das BAPI GetDetail() am Business-Objekt CompanyCode.