Show TOC Anfang des Inhaltsbereichs

Vorgehensweisen BAPI-ALE-Schnittstelle pflegen  Dokument im Navigationsbaum lokalisieren

Das SAP-System enthält in der Standardauslieferung eine große Anzahl von Business-Objekten und BAPIs. Dazu gehören auch BAPI-ALE-Schnittstellen, die aus BAPIs generiert wurden und den asynchronen BAPI-Aufruf in ALE-Geschäftsprozessen ermöglichen.

Sie können Ihre eigene BAPIs in Ihrem Namensraum entwickeln und entsprechende BAPI-ALE-Schnittstellen generieren.

Dabei werden zu einem BAPI folgende Objekte generiert:

·         Nachrichtentyp

·         IDoc-Typ einschließlich der Segmente

·         Funktionsbaustein, der auf der Ausgangsseite aufgerufen wird
(Er baut aus den BAPI-Daten das IDoc auf und versendet es.)

·         Funktionsbaustein, der auf der Eingangsseite mit den IDoc-Daten das BAPI aufruft

Der Unterschied zu manuell gepflegten Nachrichtentypen besteht darin, dass der Funktionsbaustein zur Auswertung der Änderungszeiger kein IDoc aufbaut, sondern die entsprechenden BAPI-Strukturen füllt, die Empfängerermittlung durchführt und den generierten ALE-Funktionsbaustein aufruft.

Die generierten Nachrichtentypen, IDoc-Typen und Funktionsbausteine können auch für die Stammdatenverteilung über das SMD-Tool verwendet werden.

Voraussetzungen

Als Grundvoraussetzung gilt das Vorhandensein eines BAPIs:

·         Sie haben ein eigenes BAPI im Kundennamensraum entwickelt.

·         Sie haben ein BAPI der Standardauslieferung modifiziert.

Die BAPI-ALE-Schnittstelle wird dann für den Subtyp und eine ihm zugeordnete Methode im Kundennamensraum erzeugt.

Einzelheiten dazu finden Sie unter Eigene BAPIs implementieren.

Hinweis 
Unabhängig davon, ob zu einem BAPI von SAP eine BAPI-ALE-Schnittstelle mit einem neuen Release ausgeliefert wurde oder nicht, funktioniert eine von Ihnen daraus generierte Schnittstelle weiter wie im alten Release-Stand. Sie können die alte Schnittstelle nachgenerieren, um eventuell neu eingefügte Parameter anzupassen, sofern SAP zum neuen Release keine Schnittstelle ausgeliefert hat.

Wenn SAP eine BAPI-ALE-Schnittstelle zu einem BAPI ausliefert, für das Sie bereits eine Schnittstelle generiert haben, dann sollten Sie diese neue Schnittstelle verwenden und Ihre selbst generierte löschen. Die alte Schnittstelle können Sie zwar noch verwenden, aber im alten Release-Stand. Ein Nachgenerieren der alten Schnittstelle kann dazu führen, dass manche generierten Objekte wie z.B. Segmente von SAP-Objekten überschrieben werden, wenn die Schnittstelle in Ihrem BAPI-Funktionsbaustein die BAPI-Strukturen referenziert, die aber SAP gehören.

Wenn Sie hierarchische Abhängigkeiten zwischen den BAPI-Tabellenparametern berücksichtigen möchten, dann müssen Sie als eine weitere Voraussetzung diese Hierarchiepflege vor der Generierung der BAPI-ALE-Schnittstelle durchführen (siehe Hierarchien zwischen BAPI-Parametern definieren). Die festgelegte Hierarchie wird während der Generierung ausgewertet und in den Code der Schnittstelle eingebunden. Folglich macht jede nachträgliche Änderung der Hierarchie eine Nachgenerierung der BAPI-ALE-Schnittstelle erforderlich.

Nach der Freigabe des generierten IDoc-Typs kann die festgelegte Hierarchie des asynchron aufrufbaren BAPIs aus Kompatibilitätsgründen nicht mehr verändert werden.

Beachten Sie auch die Hinweise auf verwandte ALE-Themen am Ende dieses Abschnitts. Sie finden dort Informationen zur Datenfilterung, Serialisierung von Nachrichten und zu weiteren Themen.

Vorgehensweise

Wählen Sie in der ALE-Entwicklung den Pfad BAPI ALE-Schnittstelle generieren (BDBG).

Beachten Sie, dass in Kundensystemen alle Objektnamen mit Y oder Z oder einem eigenen Präfix beginnen müssen.

Verfahren Sie dann wie folgt:

...

       1.      Geben Sie das Ihrer Schnittstelle zugrundeliegende Business-Objekt (Objekttyp) und die Methode ein.

       2.      Wählen Sie im Menü Schnittstelle eine der Optionen, um eine Schnittstelle zu pflegen, anzuzeigen, zu prüfen oder zu löschen:

·         Schnittstelle anlegen

Voraussetzung: Für dieses BAPI wurde noch keine Schnittstelle generiert oder eine bereits erzeugt Schnittstelle wurde über die Option Löschen gelöscht.

Die Namen für die zu generierenden Objekte werden vorgeschlagen. Sie können diese ändern.

1.       Geben Sie einen Namen für den Nachrichtentyp an.

Es erscheint ein Dialogfenster.

Die vorgeschlagenen Namen werden nach folgender Konvention vergeben:

Nachrichtentyp:                  Betriebswirtschaftlicher Begriff
Beispiel:                  MYTEST

Bestätigen Sie Ihre Eingabe.

2.       Im nachfolgenden Dialogfenster können Sie folgende Angaben vornehmen:

IDoc-Typ:                      <Nachrichtentyp>01
Beispiel:                        MYTEST01

Funktionsbaustein im Ausgang:     ALE_<OBJECT>_<METHOD>
                                          Beispiel:      ALE_EXAMPLE_TEST

Funktionsbaustein im Eingang:      IDOC_INPUT_<Nachrichtentyp>
                                          Beispiel:      IDOC_INPUT_MYTEST                                

Das vorgeschlagene Paket und die Funktionsgruppe sind die, zu denen der BAPI-Funktionsbaustein gehört. Sie sollten bei Ihrer eigenen Schnittstellengenerierung eigene Pakete und Funktionsgruppen verwenden.

Folgende Optionen stehen Ihnen zur Verfügung:

·         Datenfilterung erlaubt

Wenn Sie eine Filterung durchführen möchten, dann müssen Sie im
Dialogfenster beim Anlegen oder Ändern die Option Datenfilterung erlaubt wählen. Bei BAP-ALE-Schnittstellen, die von SAP generiert werden, ist diese Option in der Regel gewählt. Beachten Sie dazu auch die Hinweise unten.

·         Aufruf in Update Task

Wenn die Datenbankänderungen durch Methoden über die Verbuchung durchgeführt werden, dann muss dieses Kennzeichen gewählt werden.

·         Paketverarbeitung erlaubt

Wenn Sie eine Paketverarbeitung von IDocs zulassen möchten, müssen Sie diese Option wählen. Das zugehörige BAPI muss paketverarbeitungsfähig sein. Die Paketgröße stellen Sie im ALE-Customizing ein.

Sie können nur den Nachrichtentyp (Muss-Feld) und den IDoc-Typ (Muss-Feld), oder nur einen der Funktionsbausteine (Kann-Felder) generieren, indem Sie das Feld, für das kein Objekt generiert werden soll, leer übergeben.

3.       Bestätigen Sie Ihre Eingaben.

Es erscheint das Dialogfenster Segmentname eingeben.

4.       Geben Sie einen Segmentnamen ein.

Der vorgeschlagene Segmenttyp ist abgeleitet aus Nachrichtentyp bzw. BAPI-Strukturen:

-          E1<Nachrichtentyp> für einzelne Felder als Kopfsegment
                                    Beispiel:  E1MYTEST, bzw.

-          E1BP_XX...                   für Parameter der Struktur BAPI_XX...
                                    Beispiel:  E1BP_HUGO für BAPI_HUGO

Sollte ein Segment mehr als 1000-Bytes Daten enthalten, werden automatisch Kindersegmente darunter generiert. Die Namen der Kindersegmente werden mit Ziffer 1, 2,... nach dem ursprünglichen Segment erweitert vergeben, sofern die Länge der Namen weniger als 27-stellig ist.

·         Schnittstelle ändern

Voraussetzung: Zu diesem BAPI wurden bereits Objekte angelegt.

Wählen sie Ändern, um nach einer Änderung des BAPIs die Objekte einer bereits existierenden ALE-Schnittstelle erneut zu generieren. Der IDoc-Typ und die IDoc-Segmente werden neu generiert, wenn sich die Schnittstellenstrukturen der Objekt-Methode geändert haben. Die Funktionsbausteine werden nur dann neu generiert, wenn sich der IDoc-Typ oder eines der Segmente geändert haben.

Ähnlich wie beim Anlegen erscheint beim Ändern ein Dialogfenster. In diesem Dialogfenster werden die Objekte angezeigt, die bereits im System vorhanden sind. Sie sind nicht eingabebereit.

Falls ein Feld leer ist, können Sie das entsprechende Objekt generieren.

·         Schnittstelle anzeigen

Voraussetzung: Zu diesem BAPI sind bereits Objekte vorhanden.

Es werden alle existierenden Objekte zu diesem BAPI angezeigt. Damit erhalten Sie einen Überblick über den Zusammenhang zwischen BAPI-Methode und IDoc-Nachrichtentyp.

·         Schnittstelle löschen

Voraussetzung: Zu diesem BAPI wurden bereits Objekte angelegt.

Die Funktionsbausteine werden in jedem Fall gelöscht, sofern sie im System vorhanden sind.

Die IDoc-Struktur wird gelöscht, wenn sie noch nicht freigegeben ist.

Die IDoc-Segmente werden nur dann gelöscht, wenn sie nicht freigegeben sind und nicht in anderen IDocs verwendet werden.

Zum Schluss wird der Nachrichtentyp gelöscht, wenn er keine Zuordnung mehr zum Idoc-Typ hat.

·         Schnittstelle prüfen

Voraussetzung: Zu diesem BAPI wurden bereits Objekte angelegt.

Es werden alle Objekte bezüglich dieses BAPIs darauf geprüft, ob sie bereits im System vorhanden sind. Es wird auch geprüft, ob Objekte (IDoc-Typ und Segmente) bereits freigegeben sind.

Der Status der Freigabe für Objekte kann geändert werden (siehe Freigabe setzen und Freigabe aufheben unter Hinweise unten).

       3.      Sie können die Schnittstelle freigeben.

Entwickler können den Status der Freigabe von IDoctyp und Segmenten ändern (über Bearbeiten Freigabe setzen oder Freigabe aufheben).

Dafür sind die Berechtigungen S_IDCDFT_AL+ und S_IDCDFT_ALL des Berechtigungsobjekts S_IDOCDEFT erforderlich.

Die Voraussetzung für die Freigabe ist, dass das BAPI bereits freigegeben ist. Bei der Freigabe wird zunächst geprüft, ob die generierte Schnittstelle unter der BAPI-Methode den aktuellen Status hat. Wenn nicht, wird abgefragt, ob die Schnittstelle neu generiert werden soll. Es wird ermittelt, welche Segmente und welcher IDoc-Typ für die Freigabe relevant sind. Für noch nicht freigegebene Objekte wird dann der neue Status eingesetzt.

Die Freigabe kann jederzeit zurückgenommen werden. Diese Aktion ist an das Transportwesen angeschlossen.

Die generierten Funktionsbausteine werden nicht freigegeben.

Ergebnis

Auf dem Ausgabebildschirm werden die bearbeiteten Objekte mit ihrem Status angezeigt. Alle Änderungen werden in Transportaufträgen erfasst.

Hinweise

Beachten Sie auch die folgenden Hinweise:

·         Namensraumerweiterung

Ab 4.5A ist die Namensraumerweiterung auch bei Kunden und Partnern unterstüzt.

·         Filterung für die Datenauswahl

Die Verteilung von Daten kann an Bedingungen geknüpft sein, die im Verteilungsmodell als Filter definiert werden.

Wenn Sie eine Filterung durchführen möchten, dann müssen Sie im Dialogfenster beim Anlegen oder Ändern die Option Datenfilterung erlaubt wählen.

Weitere Einzelheiten dazu erfahren Sie unter Daten filtern.

Die Voraussetzung für eine funktionelle und betriebswirtschaftlich sinnvolle Filterung von BAPI-Parametern ist das Bestehen von hierarchischen Abhängigkeiten zwischen den Tabellenparametern des BAPIs. Dazu müssen diese Abhängigkeiten vor der Generierung der Schnittstelle definiert werden. Wählen Sie dazu BAPI-Schnittstelle Datenfilterung Hierarchie der Tabellenparameter pflegen (BDBP). Beachten Sie, dass Änderungen von Abhängigkeiten kompatibel sein müssen, da sich andernfalls die Filterung anders verhält. Mehr zu diesem Thema finden Sie unter Hierarchien zwischen BAPI-Parametern definieren.

·         Serialisierung

Der Funktionsbaustein auf der Ausgangsseite hat einen optionalen Parameter SERIAL_ID (Referenz auf die Kanalnummer). Dieser Eingabeparameter steuert die Zuordnung von Nachrichten zu Objektkanälen. In einem Objektkanal werden alle Nachrichten im Zielsystem in der gleichen Reihenfolge bearbeitet, wie sie im Quellsystem entstanden sind. Ein Objektkanal wird durch einen Schlüssel aus dem Objekttyp des BAPIs und der Kanalnummer identifiziert.

Mehr zu diesem Thema finden Sie unter Serialisierung von Objekttypen.

·         Verknüpfungen

Die Verknüpfung im ALE beantwortet folgende Fragen:

-          Auf der Ausgangsseite:

Aus welchem Anwendungsobjekt wurde das IDoc aufgebaut?

Die Voraussetzung ist, dass die Anwendung den Parameter APPLICATION_OBJECTS im Funktionsbaustein auf der Ausgangsseite richtig ausgefüllt hat.

-          Auf der Eingangsseite:

Aus welchem Ausgangs-IDoc wurde das Eingangs-IDoc erzeugt, und welches Anwendungsobjekt wurde aus diesem Eingangs-IDoc erzeugt?

Die Voraussetzung ist, dass für die BAPI-Methode ein Schlüssel im Business Object Repository (BOR) definiert wurde und dieser Schlüssel im BAPI-Funktionsbaustein im Exporting- oder Importing-Parameter enthalten ist. Dieser Schlüssel kann aus mehreren Schlüsselfeldern zusammengesetzt sein. Existieren keine Schlüsselfelder im BOR, dann kann bei der entsprechenden Abfrage eine Verknüpfung mit einem anderem Objekt angegeben werden.

·         Dokumentation zu generierten Funktionsbausteinen

Es wurde auch Dokumentation zu generierten Funktionsbausteinen (Ausgang/Eingang) erfasst. Diese Dokumentation können Sie innerhalb der Schnittstelle aufrufen. Dort wird beschrieben, welche Bedeutungen die Parameter haben und mit welchen Werten sie vesorgt werden.

·         BAPI-Rückgabeparameter und IDoc-Status

Sofern der Rückgabeparameter (Return-Parameter) von der Anwendung ausgefüllt ist, wird der IDoc-Status und die dazugehörige Information aus dem Parameter in das IDoc aufgenommen. Meldungstypen bestimmen den IDoc-Status.

Ist der Return-Parameter ein EXPORTING-Parameter, so wird ein einziger IDoc-Statussatz geschrieben:

Meldungstyp A:              Status 51 (Anwendungsbeleg nicht gebucht, mit DB-Rollback)

Meldungstyp E:              Status 51 (Anwendungsbeleg nicht gebucht, kein DB-Rollback)

Meldungstyp W, I, S:      Status 53 (Anwendungsbeleg gebucht)

Ist der Return-Parameter ein TABLES-Parameter, so können mehrere IDoc-Statussätze geschrieben werden, je nach den Meldungstypen in der Tabelle:

Meldungstyp A:              Status 51 (Anwendungsbeleg nicht gebucht, mit DB-Rollback)

(Für Meldungstyp S ergibt sich kein Status)

Meldungstyp E:              Status 51 (Anwendungsbeleg nicht gebucht, kein DB-Rollback)

(Für Meldungstyp S ergibt sich kein Status)

Kein Meldungstyp A oder E:       Status 53 (Anwendungsbeleg gebucht)

Die IDoc-Status-Sätze werden in derselben Reihenfolge geschrieben wie die Meldungen im Return-Parameter.

Wurde der Return-Parameter nicht ausgefüllt, bedeutet dies, dass das BAPI erfolgreich durch das IDoc aufgerufen ist. In diesem Fall wird von der ALE-Schicht ein IDoc-Statussatz mit Status 53 (Anwendungsbeleg gebucht) geschrieben.

Im Fehlerfall wird nur die erste Meldung aus dem Return-Parameter in den Text der zugehörigen Fehler-Aufgabe (Workitem) übernommen.

·         Beschränkungen bezüglich der Schnittstellengenerierung

-          Bei gleicher Bezugsstruktur von Parametern im BAPI-Funktionsbaustein (IMPORTING und/oder TABLES) sollte die Generierungsfunktion nicht eingesetzt werden. In dieser Situation ist die Abbildung von IDoc-Segment zu Parameter nicht eindeutig. Daher sind die Parameter im IDoc-Eingang nicht identifizierbar.

-          Bei einer Datenmenge von mehr als 1000 Bytes im Bezugsfeld zu einem Parameter oder in einem Feld in der Bezugsstruktur können Sie die Generierungsfunktion nicht einsetzen, da nur ein Segment mit einer Datenmenge von maximal 1000-Bytes geladen werden kann.

 

 

 

Ende des Inhaltsbereichs