RFC-Schnittstellendefinition als XML-Datei

Die Schnittstellendefinition erfolgt in einer XML-Datei, deren Pfad in der Listener-Konfiguration über den Parameter xmlFile angegeben wird. Die Struktur der XML-Datei wird über die DTD-Datei sap_rfc_configure_1_0.dtd geprüft, die unter dem Verzeichnis ./etc/dtd/ vorhanden sein muss. Das Root-Element heißt RFC und im Attribut name wird der Name des RFCs erwartet. Er muss mit dem functionName in der Listener-Konfiguration übereinstimmen.


<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE RFC PUBLIC
"-//EBD Integration//DTD SAP RFC Configuration 1.0//EN"
"http://www.ebd-entwicklung.de/dtd/sap_rfc_configure_1_0.dtd">
<RFC name="RFC-Name">
<!-- Weitere Einstellungen -->
</RFC>


Im Abschnitt <!-- Weitere Einstellungen --> steht die Definition der


  • Import-Parameter als einfache Felder oder "flache" Strukturen,

  • Export-Parameter als einfache Felder oder "flache" Strukturen,

  • Tabellen-Parameter,

  • Exceptions.


Wir unterstellen hier, dass das Grundkonzept einer SAP-RFC-Schnittstelle (ABAP) bekannt ist. Alle Teile der Schnittstelle sind optional.

IMPORT-Parameter


<INPUTPARAMS>
<!-- Feld-Definitionen und/oder Struktur-Definitionen -->
</INPUTPARAMS>

EXPORT-Parameter


<OUTPUTPARAMS>
<!-- Feld-Definitionen und/oder Struktur-Definitionen -->
</OUTPUTPARAMS>

TABLE-Parameter


<TABLES>
<TABLE name="Name" refname="Tablerefname" description="Description" tabletype="Type">
<ROW>
<!-- Feld-Definitionen -->
</ROW>
</TABLE>
<!-- Weitere Tabellen-Definitionen -->
</TABLES>


Jede TABLE-Definition enthält genau eine ROW. Man kann sich die ROW als eine namenlose Struktur vorstellen. Die Werte einer Tabelle bilden dann eine Liste solcher zusammengesetzter Struktur-Werte.

Wenn mehrere Tabellen mit absolut gleicher Struktur definiert werden, sollten Sie den gleichen refname verwenden. Der refname kann formal aus dem name durch Voranstellen von REF_ gebildet werden. Der tabletype kann die Werte in, out oder inout haben. Hinweis: Die Klasse DataWizardForwardRequestListener unterstützt nur in.

Exceptions


<EXCEPTIONS>
<EXCEPTION name="Name" description="Description"/>
</EXCEPTIONS>

Feld-Definitionen


<FIELD name="Feldname" type="Feldtyp" length="länge" decimals="Kommastellen" description="Beschreibung für das Feld"/>


Feldtyp

Bedeutung

BCD

Binäres Zahlenformat mit Dezimalstellen, length und decimals sind Pflicht.

BYTE

Binärdaten (Byte-Folge), length ist erforderlich.

CHAR

Zeichenkette mit fixer Länge, length ist erforderlich.

DATE

Datum ohne Uhrzeit, Format yyyyMMdd, length=8.

FLOAT

Fließkommazahl, length und decimals sind Pflicht.

INT

4-Byte-Integer.

INT1

1-Byte-Integer (Vorsicht).

INT2

2-Byte-Integer (Vorsicht).

NUM

Numerischer Wert als Zeichenkette, length ist erforderlich.

STRING

Zeichenkette mit variabler Länge, nicht für STRUCTURE oder TABLE.

TIME

Uhrzeit ohne Datum, Format HHmmss, length=6.


Bei Typen, bei denen decimals keine Bedeutung hat, wird der Wert ignoriert. Die Typen INT1 und INT2 sollten nicht verwendet werden, weil hier vom JCo eine falsche Länge gemeldet wird. Ersatzweise wird NUM mit length empfohlen.

Strukturdefinitionen


Strukturen in den Import- und Export-Parametern sind "flache" Strukturen. Das bedeutet, eine Struktur enthält nur Felder, aber keine weitere Strukturen.


<STRUCTURE name="STRUCT1" refname="REF_STRUCT1" description="Beschreibung">
<!-- Feld-Definitionen -->
</STRUCTURE>


Analog zu den Tabellen-Definitionen sollten mehrere Strukturen mit absolut gleichem Aufbau denselben refname verwenden.

Struktur des Beispiel-RFCs MY_RFC


Das folgende Beispiel definiert den Funktionsbaustein MY_RFC, der nur einen numerischen Wert als Import-Feld NUMERIC_ID erwartet.


<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE RFC PUBLIC
"-//EBD Integration//DTD SAP RFC Configuration 1.0//EN"
"http://www.ebd-entwicklung.de/dtd/sap_rfc_configure_1_0.dtd">
<RFC name="MY_RFC">
<INPUTPARAMS>
<FIELD name="NUMERIC_ID" type="INT" length="4" decimals="0" description="Numeric ID"/>
</INPUTPARAMS>
</RFC>

Hinweis zu Datentypen bei STRUCTURE und TABLE


Der Begriff "flache Struktur" bezieht sich auf einen zusammengesetzten Datentyp, der aus einer Folge einfacher Felder zusammengesetzt ist. Jedes einzelne Feld muss dabei eine konkrete Feldlänge haben. Der Typ STRING mit variabler Länge ist dadurch nicht für Strukturen zulässig.

Ein TABLE-Parameter entspricht eigentlich einer Liste von Zeilen, wobei jede Zeile eine flache Struktur darstellt. Deshalb ist auch in der TABLE-Definition die Verwendung des Typs STRING unzulässig.

Auf der SAP-Seite empfehlen wir grundsätzlich die Verwendung von Repository-Typen. Die Übereinstimmung mit der Definition auf der Lobster-Seite muss vom Anwender bewusst hergestellt werden, indem ein passender Datentyp (vorzugsweise CHAR oder NUM) mit Angabe der Länge eingetragen wird, so wie sie im SAP-Repository definiert ist.

Beispiel: Wenn man z. B. für eine EAN im SAP den Repository-Typ CHAR13 verwendet, muss das Feld auf Lobster-Seite mit folgenden Attributen definiert werden.


.... type=“CHAR“ length=“13“ ....


Bei STRUCTURE- und TABLE-Definitionen sollte die Reihenfolge der Felder innerhalb der Definition auf SAP-Seite mit der Definition auf Lobster-Seite übereinstimmen.