Eigenentwicklung durch Kunden 

Einsatzmöglichkeiten

Kunden und Partner können anhand der Informationen im BAPI-Programmierleitfaden bei Bedarf neue Methoden zu einem Business-Objekttyp entwickeln.

Eigenentwicklungen werden nicht an den im Standard ausgelieferten Business-Objekttypen vorgenommen, sondern an den davon abgeleiteten Subtypen. Verwenden Sie diese Möglichkeit, um am Subtyp neue Funktionalität zur Verfügung zu stellen, die von keinem der am Supertyp existierenden und an den Subtyp vererbten BAPIs abgedeckt wird.

Ablauf

Gehen Sie folgendermaßen vor:

  1. Erstellen Sie zu dem betreffenden Business-Objekttyp einen Subtyp, wie in Subtyp anlegen beschrieben.
  2. Verwenden Sie die in diesem Dokument beschriebenen Programmierrichtlinien, um an dem Subtyp ein neues BAPI anzulegen und in einem eigenen Funktionsbaustein zu implementieren.

Das neue BAPI steht nur für den Subtyp zur Verfügung, nicht jedoch für den Objekttyp, aus dem er abgeleitet wurde (Supertyp). Alle existierenden, vom Supertyp abgeleiteten BAPIs können weiterhin unverändert verwendet werden.

Anwendungsbeispiel

Es soll am Business-Objekttyp Material eine zusätzliche Methode YGetDetail() angelegt werden. Der zu diesem BAPI gehörige Funktionsbaustein ist Y_BAPI_MATERIAL_GETDETAIL.

Der Kunde legt zunächst zu dem existierenden Objekttyp Material im BOR einen Subtyp YMaterial an. Zusätzlich vermerkt er beim ursprünglichen Objekttyp Material, daß Methodenaufrufe vom Business-Objekttyp YMaterial abgearbeitet werden sollen, sofern die entsprechende Methode dort implementiert ist. Dies wird allgemein als Delegation bezeichnet. (Bei allen anderen Methoden, die nicht am Subtyp YMaterial implementiert sind, wird der Methodenaufruf weiterhin vom übergeordneten Business-Objekttyp Material durchgeführt.)

Anschließend legt der Kunde mit Hilfe des BOR/BAPI-Wizards die neue Methode YGetDetail() am Business-Objekttyp YMaterial an. Diese Methode verweist auf den Funktionsbaustein Y_BAPI_MATERIAL_GETDETAIL.

Zur Laufzeit wird beim Aufruf des BAPIs Material.YGetDetail() aufgrund des Delegationsverweises am Business-Objekttyp Material tatsächlich das BAPI YMaterial.YGetDetail() verwendet.