Interne/externe Datendarstellung  

Verwendung

BAPIs sind keine Endanwenderschnittstellen, sondern Programmierschnittstellen, die in den unterschiedlichsten Anwendungsbereichen zum Einsatz kommen, z.B. zur Anbindung von Fremdsystemen oder PC-Produkten. Um diesen unterschiedlichen Einsatzbereichen gerecht zu werden, muß eine allgemeingültige Strategie bezüglich der Datendarstellung an der BAPI-Schnittstelle verwendet werden.

Allgemeine Richtlinie

Felder in BAPI-Parametern dürfen nicht in einer aufbereiteten Form an der BAPI-Schnittstelle präsentiert oder erwartet werden, sondern in der internen Form, die in der Datenbank verwendet wird.
Begründung : Die interne Darstellung wird verwendet, da der Server keine Client-spezifischen Daten vorwegnehmen kann.

Zu dieser Richtlinie gibt es einige Ausnahmen die im folgenden Abschnitt beschrieben werden.
Zum Beispiel muß das Datum in dem intern verwendeten Format YYYYMMDD dargestellt werden, wobei YYYY das Jahr, MM den Monat und DD den Tag repräsentieren.

Folgende Abbildung zeigt BAPIs als Programmierschnittstellen, über die Daten auf der Programmcode-Ebene, nicht auf der Ebene der Endanwenderschnittstelle übertragen werden.

BAPIs als Programmierschnittstellen

Ausnahmen

Es gibt Ausnahmen, bei denen in einem BAPI zwischen dem internen Format und dem externen, von der aufrufenden Anwendung erwarteten Format, abgebildet und konvertiert werden muß.

Für diese Ausnahmen können Sie Funktionsbausteine generieren lassen, die zwischen der internen und externen Datendarstellung abbilden und bei Bedarf konvertieren. Wie Sie diese Funktionsbausteine generieren ist im Abschnitt Mapping zwischen internen/externen Datenformaten beschrieben. Sie können diese Funktionsbausteine folgendermaßen im Programmcode Ihres BAPIs einsetzen:

Bei den Ausnahmen handelt es sich um folgende Felder:

Innerhalb des R/3-Systems macht ein Währungsbetragsfeld nur im Zusammenhang mit einer Währungsbezeichnung Sinn, denn nur so kann das Dezimalzeichen in den Beträgen richtig gesetzt werden. Jedem Währungsbetragsfeld muß demnach ein Feld für die Währungsbezeichnung zugeordnet sein. Beispielsweise werden zwei Yen in der Datenbank im Feld vom Datentyp CURR als 0.02 abgespeichert. Es kann nicht davon ausgegangen werden, daß ein Fremdsystem diese Semantik versteht.

Alle R/3-Währungs-Datentypen haben darüber hinaus zwei Nachkommastellen, obwohl es auch Währungen mit drei Nachkommastellen gibt.

Aus diesen Gründen kann der Datentyp CURR nicht an der BAPI-Schnittstelle verwendet werden. Es gilt also folgendes für die Verwendung von Währungsbetragsfeldern in BAPIs:

Für diese Konvertierung stehen zwei Funktionsbausteine zur Verfügung. Der Funktionsbaustein BAPI_CURRENCY_CONV_TO_EXTERNAL konvertiert Währungsbeträge von R/3-interner Darstellung in externe Darstellung. Der Funktionsbaustein BAPI_CURRENCY_CONV_TO_INTERNAL konvertiert Währungsbeträge von externer Darstellung in R/3-interne Darstellung.

Wie Währungsbetragsfelder müssen Mengenfelder und Maßeinheiten kommagerecht übergeben werden.

Jedem Feld mit einem Mengenbetrag bzw. einer Maßeinheit muß ein Feld für die Bezeichnung der Menge bzw. Maßeinheit zugeordnet sein.

Zu Mengenfeldern gibt es keine allgemeine Domäne, die für BAPI-Strukturen verwendet werden kann.

In manchen Situationen wird auf der Datenbank ein rein technischer, interner Schlüssel und ein externer Schlüssel abgelegt. Beispiele hierfür sind Projektstrukturpläne oder Netzpläne im Projektsystem.

An der BAPI-Schnittstelle muß in diesem Fall immer der externe Schlüssel verwendet werden.

Für die Konvertierung von Vorgangsnummern in Netzplänen stehen folgende Funktionsbausteine zur Verfügung:

Diese Konvertierungen werden von der in Abschnitt Mapping zwischen internen/externen Datenformaten beschriebenen Transaktion nicht abgedeckt.

Im R/3-System werden derzeit ISO-Codes für die Felder für Sprache, Land, Währungen und Mengeneinheiten unterstützt.

Wenn Sie in Ihrem BAPI eines dieser Felder verwenden, müssen Sie für das entsprechende Feld an der BAPI-Schnittstelle jeweils zwei Felder anbieten: Ein Feld, das den SAP-Code enthält, und ein weiteres Feld mit dem entsprechenden ISO-Code. Für das Feld mit dem ISO-Code sollten Sie die Namenskonvention <Feldname-für-SAP-Code>_ISO verwenden.

Zum Beispiel gibt es das Feld LANGU, das den R/3-intern verwendeten Sprachenschlüssel, beispielsweise E, enthält. Das entsprechende Feld für den ISO-Code würde dann LANGU_ISO heißen und den entsprechenden ISO-Code EN enthalten.

Sie sollten im BAPI folgendes Verhalten implementieren:

Verwenden Sie folgende Domänen für die ISO-Codes:

Domänen für SAP-interne Codes und ISO-Codes

Größe

ISO-Code-Domäne

SAP-Code-Domäne

Währungsschlüssel

ISOCD

waers

Mengeneinheit

ISOCD_UNIT

meins

Sprachenschlüssel

LAISO

spras

Länderschlüssel

intca

land1

Zu jeder Domäne gibt es ein Datenelement gleichen Namens.

Entsprechend ISO-Standard 8601 müssen Datum und Zeit zwischen zwei externen Systemen in Universal Coordinated Time (UTC) ausgetauscht werden. UTC ist gleichzusetzen mit dem vormals verwendeten Begriff 'GMT' (Greenwich Mean Time) und wird als weltweit eindeutige Referenzzeit verwendet.

An einer BAPI-Schnittstelle müssen Sie deshalb ein Feld für die Zeitzone, d.h. den Standort eines Objekts in Bezug auf seine lokale Zeit, sowie ein Feld für den UTC-Zeitstempel bereitstellen. Zusätzlich können Sie die lokale Zeit angeben.

Für das Feld mit UTC-Zeitstempel gilt die Namenskonvention
<Feldname-für-Zeitzone>_ISO.

Für die Angabe von Datum und Zeit stehen folgende Typen zur Verfügung:

Hierbei handelt es sich um folgende Felder:

Weitere Informationen finden Sie unter Adressenparameter.

BAPIs zur Konvertierung zwischen interner und externer Datendarstellung (Domänenkonvertierung)

In BAPIs wird somit - mit den obengenannten Ausnahmen - ausschließlich die interne Datendarstellung verwendet. Anwendungsprogrammierer, die im Rahmen ihres Programmes ein BAPI aufrufen, benötigen jedoch in manchen Fällen die externe Datendarstellung, zum Beispiel, wenn Daten am Bildschirm dargestellt werden sollen. In diesen Fällen muß es dem aufrufenden Programm möglich sein, zwischen der internen und externen Datendarstellung zu konvertieren.

Ein aufrufendes Programm kann Konvertierungs-BAPIs verwenden, um die benötigte Datendarstellung zu erhalten. Diese sind in Service-BAPIs für allgemeine BAPI-Funktionen im BAPI-Benutzerhandbuch beschrieben.