Inkompatible Weiterentwicklungen 
Einsatzmöglichkeiten
Inhaltliche Änderungen an einem BAPI bedingen zumeist die Einführung neuer Parameter, ohne die die Schnittstelle nicht mehr funktionieren würde. Oftmals verlieren auch existierende Parameter durch inhaltliche Änderungen ihre ursprüngliche Bedeutung. Derartige Änderungen zählen als inkompatible Weiterentwicklungen, durch die eine Abwärtskompatibilität des BAPIs nicht mehr gewährleistet ist.
Syntaktisch inkompatible Weiterentwicklungen sind beispielsweise:
Folgende Tabelle gibt eine Auflistung von inkompatiblen Änderungen im Funktionsbaustein. Die Vollständigkeit dieser Liste ist nicht garantiert.
Inkompatible Änderungen eines Funktionsbausteins | |
An der Schnittstelle |
Neuer obligatorischer Parameter |
|
Neue Felder zwischen vorhandenen Feldern in Struktur einfügen | |
|
Neue Felder zwischen vorhandenen Feldern in Tabelle einfügen | |
|
Neues obligatorisches Feld an Struktur anhängen | |
|
Neues obligatorisches Feld an Tabelle anhängen | |
|
Inkompatibles Ändern der Typen der Felder (über das ABAP Dictionary) | |
|
Umwandeln eines Felds von optional nach obligatorisch | |
|
Umbenennen eines Parameters | |
Im Programmcode |
Neues zusätzliches Coding , wobei die Interpretation/Verarbeitungslogik verändert wird |
|
Ändern des vorhandenen Codings , wobei die Interpretation/Verarbeitungslogik verändert wird | |
|
Hinzufügen oder Entfernen eines 'COMMIT WORK'- Kommandos im Programm | |
Ablauf
Bei inkompatiblen Änderungen an einem BAPI sind die drei Schritte Anlegen eines zusätzlichen BAPIs,Unterstützung und Kennzeichnung des zu ersetzenden BAPIs und Löschen des ersetzten BAPIs zu durchlaufen.
Anlegen eines zusätzlichen BAPIs
Um die Schnittstellenstabilität eines existierenden BAPIs nicht zu beeinträchtigen, dürfen inkompatible Änderungen nicht an dem existierenden BAPI vorgenommen werden. Stattdessen sind zu diesem BAPI ein - oder bei Bedarf mehrere - zusätzliche BAPIs hinzuzufügen, die das existierende BAPI ersetzen sollen.
Das neue BAPI muß den Namen des zu ersetzenden BAPIs beibehalten, erhält jedoch als Suffix eine Zahl. Diese Zahl kann dann, wenn nötig, bei weiteren inkompatiblen Änderungen hochgezählt werden.

An dem BAPI FixedAsset.Create() müssen inkompatible Änderungen vorgenommen werden. Ein neues BAPI
Sollten zu einem späteren Zeitpunkt erneut inkompatible Änderungen anfallen, so müßten diese Änderungen in einem weiteren BAPI , FixedAsset.Create2(), implementiert werden.
Beim Anlegen des zusätzlichen BAPIs sind alle im
BAPI Programmierleitfaden beschriebenen Richtlinien
einzuhalten.
Unterstützung und Kennzeichnung des zu ersetzenden BAPIs
Das zu ersetzende BAPI darf nicht sofort aus dem Business Object Repository (BOR) entfernt werden, sondern es muß zunächst als auslaufend (obsolet) gekennzeichnet werden. Dieses BAPI muß im Änderungsrelease (d.h. in dem Release, in dem das Nachfolge-BAPI eingeführt wird) und in dem darauffolgenden funktionalen Release weiter unterstützt werden und während dieser Zeit in seiner Funktion erhalten und lauffähig bleiben.
Die Kennzeichnung des BAPIs als auslaufend (obsolet) erfolgt folgendermaßen:
Folgende Abbildung beschreibt die Auslaufphase eines BAPIs. In diesem Beispiel wird das Nachfolge-BAPI im Release 4.0 eingeführt. Das zu ersetzende BAPI wird folglich im Release 4.0 (d.h. im Änderungsrelease, in dem das Nachfolge-BAPI eingeführt wurde) und in dem nächsten funktionalen Release "F1" unterstützt. Erst im darauffolgenden funktionalen Release "F2" steht dieses BAPI nicht mehr zur Verfügung.
Auslaufphase eines BAPIs

Löschen des ersetzten BAPIs
Ist die Auslaufphase eines auf obsolet gesetzten BAPIs beendet, kann das ersetzte BAPI aus dem BOR entfernt werden. Ein obsoletes BAPI sollte möglichst zu Beginn eines neuen Releases gelöscht werden, um Entwicklern möglichst viel Zeit für die Umstellung auf das Nachfolge-BAPI zu geben.
Um ein BAPI zu löschen, ist wie folgt vorzugehen: