
Obwohl die Java-Mapping-API überarbeitet worden ist (siehe: Java-Mapping ) und SAP die Verwendung dieses neuen API für neue Java-Mapping-Programme empfiehlt, bleibt die Java-Mapping-API von SAP NetWeaver 2004 und SAP NetWeaver 7.0 weiterhin im Funktionsumfang von SAP NetWeaver enthalten. Die Java-Mapping-Programme, die Sie mit Hilfe der Java-Mapping-API von SAP NetWeaver 2004 oder SAP NetWeaver 7.0 implementiert haben, bleiben also gültig und müssen nicht angepasst werden.
Parametrisierte Java-Mappings werden von der Java-Mapping-API (SAP NetWeaver 2004 und 7.0) nicht unterstützt.
In benutzerdefinierten Funktionen von Message-Mapping-Programmen greifen Sie zudem weiterhin auf die Konstanten der Mapping-Laufzeit über die Java-Mapping-API von SAP NetWeaver 2004 / SAP NetWeaver 7.0 zu.
Beachten Sie unbedingt die Einführungshinweise und Einschränkungen unter Java-Mapping . Sie sind auch für die Java-Mapping-API von SAP NetWeaver 2004 / SAP NetWeaver 7.0 gültig.
Um ein Java-Mapping mit der Java-Mapping-API von SAP NetWeaver 2004 / SAP NetWeaver 7.0 zu programmieren, müssen Sie eine Java-Klasse definieren, die das Java-Interface com.sap.aii.mapping.api.StreamTransformation implementiert. Dieses Interface hat zwei Methoden:
public void execute(java.io.InputStream in, java.io.OutputStream out)
Diese Methode wird zur Prozessintegrations-Laufzeit aufgerufen, um ein Mapping auszuführen. Diese Methode erhält einen Input-Stream für das Ausgangsdokument und einen Output-Stream für das Zieldokument als Parameter. Diese Streams sind typischerweise XML-Dokumente. Sie können aus dem Input-Stream die zu konvertierenden Teilstrukturen einlesen und in den Output-Stream das konvertierte Zieldokument ausgeben.
public void setParameter(java.util.Map param)
Die Process-Integration-Laufzeit übergibt mit dieser Methode Parameter an das Mapping-Programm. Sie wertet diese Parameter zur Laufzeit in der Methode execute() aus. Damit kann der Ablauf des Mapping gesteuert werden.
Das übergegebene Objekt, das das Java-Interface java.util.Map implementiert, enthält sieben Schlüssel/Wertepaare als Parameter. Diese korrespondieren zu entsprechenden Feldern im Message-Header. Abgesehen von der Konstante MAPPING_TRACE sind die Wertobjekte vom Typ java.lang.String . Die Schlüssel Objekte werden in der Klasse com.sap.aii.mapping.api.StreamTransformationConstants definiert:
String-Konstanten der Mapping-Laufzeit
Konstante |
Bedeutung |
Relevant für PCK |
MESSAGE_CLASS |
Klassifizierung der Message. Mögliche Werte:
|
Ja |
VERSION_MAJOR |
Version des XI Message-Protokolls. Beispiel: Für das XI 3.0 Message-Protokoll ist VERSION_MAJOR = 3 und VERSION_MINOR = 0. |
Nein Das PCK unterstützt nur das Message-Protokoll XI 3.0. |
VERSION_MINOR |
|
Nein |
PROCESSING_MODE |
Der Modus einer Message kann synchron oder asynchron sein. Entsprechend kann diese Konstante den Wert synchronous oder asynchronous haben. |
Ja |
MESSAGE_ID |
Die Message-ID. Sie kann sich während der Kommunikation verändern. Response-Messages bekommen eine neue Message-ID. Wenn aus einer Message neue hervorgehen (Kopieren der Message bei mehreren Empfängern), bekommen die neuen Messages neue Message-IDs. |
Ja |
REF_TO_MESSAGE_ID |
ID einer referenzierten Message, die semantisch zu dieser Message gehört. Beispielsweise merkt sich eine Response-Message über dieses Feld zu welcher Request-Message sie gehört. |
Ja |
CONVERSATION_ID |
Dieses Feld ist nicht obligatorisch in der Message enthalten. Es ermöglicht die Verwendung einer ID zur Gruppierung von zusammengehörenden Messages. Dieses Feld ist nicht dazu gedacht eine Serialisierung von Messages zu realisieren und hat nichts mit dem Serialisierungskontext ( ABAP -Proxy-Laufzeit, Java -Proxy-Laufzeit) zu tun. |
Ja |
TIME_SENT |
Zeitstempel, der angibt, wann die Message beim Sender abgeschickt wurde. Das Format des Zeitstempels ist: YYYY-MM-DDTHH:MM:SSZ Der Buchstabe T trennt das Datum von der Zeit, die in der Regel in UTC angegeben ist. Falls es sich um eine lokale Zeit handelt, entfällt das abschließende Z. |
Ja |
INTERFACE |
Name des Sender-Interface. Verwenden Sie ab SAP XI 3.0 diese Konstante anstelle der bisherigen Konstante SENDER_NAME . |
Ja |
INTERFACE_NAMESPACE |
Namensraum des Sender-Interface. Verwenden Sie ab SAP XI 3.0 diese Konstante anstelle der bisherigen Konstante SENDER_NAMESPACE . |
Ja |
SENDER_PARTY |
Kommunikationspartner, der die Message verschickt hat. |
Ja |
SENDER_PARTY_AGENCY |
Vergebende Agentur für den Sender der Message. |
Ja |
SENDER_PARTY_SCHEME |
Verwendetes Identifikationsschema des Senders. |
Ja |
SENDER_SERVICE |
Kommunikationskomponente auf Senderseite, die die Message verschickt hat. Dabei kann es sich beispielsweise um den Namen eines Business-Systems handeln. Verwenden Sie ab SAP XI 3.0 diese Konstante anstelle der bisherigen Konstante SENDER_SYSTEM . |
Ja |
RECEIVER_NAME |
Name des Empfänger-Interface. |
Ja |
RECEIVER_NAMESPACE |
Namensraum des Empfänger-Interface. |
Ja |
RECEIVER_PARTY |
Kommunikationspartner, der die Message empfangen soll. |
Ja |
RECEIVER_PARTY_AGENCY |
Vergebende Agentur für den Empfänger der Message. |
Ja |
RECEIVER_PARTY_SCHEME |
Verwendetes Identifikationsschema des Empfängers. |
Ja |
RECEIVER_SERVICE |
Kommunikationskomponente auf Empfängerseite, die die Message erhalten soll. Dabei kann es sich beispielsweise um den Namen eines Business-Systems handeln. Verwenden Sie ab SAP XI 3.0 diese Konstante anstelle der bisherigen Konstante RECEIVER_SYSTEM . |
Ja |
MAPPING_TRACE |
Gibt ein AbstractTrace-Objekt zurück, mit dem Sie Meldungen in das Monitoring schreiben können. |
Nein |
Implementieren Sie Ihr Java-Mapping, beispielsweise im SAP NetWeaver Developer Studio (siehe auch: Laufzeitumgebung (Java-Mappings) ).
Importieren Sie Ihre Java-Bibliotheken als Archiv in das Enterprise Services Repository (siehe Importierte Archive (XSLT/Java) ).
Das folgende Beispiel zeigt das Setzen und Auswerten der beiden Parameter MAPPING_TRACE und RECEIVER_NAME in einem Java-Mapping-Programm:
import java.io.InputStream; import java.io.OutputStream; import java.util.Map; import java.util.HashMap; import com.sap.aii.mapping.api. AbstractTrace; import com.sap.aii.mapping.api.StreamTransformation; import com.sap.aii.mapping.api.StreamTransformationConstants;
public class JavaMapping implements StreamTransformation {
private Map param = null; private AbstractTrace trace = null;
public void setParameter (Map param) { this.param = param; if (param == null) { this.param = new HashMap(); } }
public void execute(InputStream in, OutputStream out) {
try {
trace = (AbstractTrace)param.get( StreamTransformationConstants.MAPPING_TRACE ); trace.addInfo('...');
// ...
String receiverName = (String)param.get(
StreamTransformationConstants.RECEIVER_NAME);
// ...
}
}
}
Weitere Informationen: Spezieller Zugriff auf Mapping-Laufzeitkonstanten