Business-Objekttypen und ihre Schlüsselfelder 

Jeder Business-Objekttyp hat ein oder mehrere Schlüsselfelder. Jede Instanz hat eine eindeutige Wertekombination in den Schlüsselfeldern und wird über die Ausprägung der Schlüsselfelder identifiziert. Damit kann über die Werte in den Schlüsselfeldern eindeutig auf eine Instanz eines Business-Objekttyps zugegriffen werden. Die Schlüsselfelder sind eine wichtige Design-Entscheidung für ein Business-Objekt.

Beispiel für Schlüsselfelder:

Business-Objekttyp

Schlüsselfeld

Beispiel

SalesOrder

SalesDocument

102

AccountingDocument

CompanyCode

FiscalYear

DocumentNumber

0001

1998

23

In objektorientierten Sprachen wird ein Objekt (eine Instanz) üblicherweise über eine technische ID identifiziert. Im BOR erlaubt das Konzept der Schlüsselfelder eine geeignete Verknüpfung der SAP-Business-Objekte mit der darunterliegenden relationalen Datenbank.

In den meisten Fällen sind die Schlüsselfelder eines Objekttyps auch die Schlüsselfelder in der Tabelle, die die Kopfdaten zum Business-Objekttyp enthält. Da BOR-Laufzeitobjekte mandantenunabhängig sind, übernimmt man den Mandanten nicht als Schlüsselfeld.

Objektorientierter Methodenaufruf

Bei einem Methodenaufruf in objektorientierten Sprachen unterscheidet man zwischen Klassenmethoden und Instanzmethoden. Klassenmethoden setzen nicht die Existenz einer konkreten Instanz voraus und realisieren Funktionalität, die instanzübergreifend ist (z.B. GetList). Eine Instanzmethode bezieht sich immer nur auf eine konkrete Instanz und wird bei dieser ausgeführt (z.B. GetDetail zur Instanz 102 von SalesOrder). Dazu wird zunächst eine Laufzeitinstanz im System erzeugt und danach können für diese beliebig viele Instanzmethoden ausgeführt werden.

Dieses Aufrufmodell wird auch von einem externen Client verwendet, um z.B. mit Java oder mit VisualBasic über eine entsprechende Middleware auf die SAP-Business-Objekttypen zuzugreifen. Im ersten Schritt wird eine konkrete Laufzeitinstanz erzeugt, welche über ihre Schlüsselkombination identifiziert wird (z.B. SalesOrder 102). Da sich der Aufruf einer Instanzmethode genau auf diese Instanz bezieht, müssen die die Instanz identifizierenden Parameter (die Schlüsselfelder) nicht noch einmal übergeben werden. Aus diesem Grunde werden im BOR bei Instanzmethoden die Schlüsselfelder nicht explizit als Parameter aufgeführt.

Konsequenzen für die BAPI-Schnittstelle

Der das BAPI implementierende Funktionsbaustein ist funktional und kann diese Unterscheidung nicht treffen. Bei instanzabhängigen BAPIs müssen deshalb die Schlüsselfelder als Importparameter im BAPI-Funktionsbaustein aufgeführt werden.

Eine weitere Sonderrolle spielen die sogenannten Create-Methoden (z.B. Anlegen einer neuen SalesOrder). Da sich Create-Methoden immer auf noch nicht im System vorhandene Entitäten beziehen, handelt es sich dabei um Klassenmethoden. Allerdings wird dem Aufrufer nach der Abarbeitung des Create-BAPIs eine Laufzeitinstanz zu dieser Entität zur Verfügung gestellt, mit welcher der Aufrufer im folgenden weiter arbeiten kann. Deshalb steht bei Create-BAPIs der Schlüssel im Export des Funktionsbausteins, wird jedoch nicht als Parameter am BAPI selbst (im BOR) aufgeführt.

Im allgemeinen müssen Sie nur den Richtlinien für Schlüsselfelder an der Funktionbausteinschnittstelle folgen, da bei Verwendung des BOR/BAPI-Wizard zur Methodendefinition im BOR die anderen Regeln automatisch beachtet werden. Im folgenden sind noch einmal alle Konventionen für Schlüsselfelder zusammengestellt:

Bei Instanzmethoden sind alle BOR-Schlüsselfelder obligatorische Import-Parameter im Funktionsbaustein. Kein BOR-Schlüsselfeld darf als ein Export-Parameter im Funktionsbaustein definiert werden. Keines der Schlüsselfelder ist Import- oder Export-Parameter an der BOR-Methode.

Bei Klassenmethoden dürfen keine BOR-Schlüsselfelder als Export-Parameter im Funktionsbaustein vorkommen (Ausnahme: Create-Methoden). Es dürfen auch keine BOR-Schlüsselfelder als Import-Parameter im Funktionsbaustein vorkommen. Keines der Schlüsselfelder ist Import- oder Export-Parameter an der BOR-Methode.

Bei Create-Methoden liegen alle BOR-Schlüsselfelder der Methode als Export-Parameter im Funktionsbaustein vor. Es dürfen (wie bei allen Klassenmethoden) keine BOR-Schlüsselfelder als Import-Parameter im Funktionsbaustein vorkommen. Keines der Schlüsselfelder ist Import- oder Export-Parameter an der BOR-Methode.

 

Wenn laut obigen Richtlinien Schlüsselfelder als Parameter im Funktionsbaustein vorkommen, dann sind folgende Konventionen zwingend:

Es wurde der Gesamtschlüssel und keine Teilschlüssel verwendet.

Für jedes Schlüsselfeld des Business-Objekttyps existiert ein eigener Parameter am Funktionsbaustein.

Der Parameter am Funktionsbaustein und das BOR-Schlüsselfeld sind namensgleich.

 

Bemerkung : In den vorangegangenen Erklärungen verstehen wir unter dem Schlüsselfeld einen Parameter, der zur Identifizierung einer Laufzeitinstanz (im OO-Sinne) dient und mit dem (einem) Schlüsselfeld des Business-Objekttyps namensgleich ist. Es ist aber natürlich auch möglich, durch andere Parameter die betriebswirtschaftlich notwendigen Informationen zur Verfügung zu stellen, die durch den Schlüssel repräsentiert werden.

Bei einem BAPI Create am Business-Objekttyp CompanyCode (Schlüssel CompanyCodeID) darf nach obigen Richtlinien kein Import-Parameter CompanyCodeID vorkommen. Der Name des anzulegenden Buchungskreises könnte aber statt dessen z.B. mit dem Feld ID in einem Parameter CompanyCodeData übergeben werden.