Das Nachrichtenmodell für den IDoc-Parser erstellen

Wenn Sie die Funktion von WebSphere Message Broker zur Umsetzung von SAP IDoc-Daten verwenden möchten, müssen Sie die Segmentdaten von IDoc in WebSphere Message Broker modellieren.

Die Nachrichten, die an SAP-Anwendungen gesendet und von diesen empfangen werden, werden vom IDoc-Parser verarbeitet, der ein Nachrichtenmodell benötigt, um die Daten richtig interpretieren zu können. In diesem Abschnitt wird dokumentiert, wie das Nachrichtenmodell erstellt wird. Eine vordefinierte Version eines Nachrichtenmodells steht als Beispiel im Support-Pack IA0F zur Verfügung.

IDoc abrufen

Gehen Sie folgendermaßen vor, um eine Importdatei der erforderlichen IDoc-Daten für die Verwendung durch das Message Brokers Toolkit zu erstellen:
  1. Melden Sie sich an einem SAP-System an.
  2. Führen Sie die Transaktion we60 aus, die die IDoc-Daten als C-Headerdatei extrahiert:
    1. Wählen Sie als Objektnamen (ObjectName) den gewünschten IDoc-Typ aus, beispielsweise MATMAS02.
    2. Wählen Sie die Version des Datensatztyps aus. Eine IDoc in Version 4 hat den Typ 3.
    3. Wählen Sie im Menü 'Dokumentation' die Option C-Header aus.
    4. Geben Sie den Dateinamen für die Ausgabe aus der Transaktion ein, wenn Sie dazu aufgefordert werden. Die C-Darstellung der IDoc wird in dieser Datei gespeichert.
  3. Stellen Sie mit Hilfe des Perl-Scripts hdrfiddle.pl (verfügbar im Support-Pack IA0F) sicher, dass das von Ihnen erstellte Format der Ausgabedatei das richtige Format zum Importieren in das Message Brokers Toolkit hat.

IDoc modellieren

Gehen Sie zur Erstellung Ihres Nachrichtenmodells folgendermaßen vor:

  1. Erstellen Sie mit Hilfe des Assistenten Neues Nachrichtengruppenprojekt eine Nachrichtengruppe für Ihre IDoc (z. B. matmas02) und ein physisches CWF-Format (CWF = Custom Wire Format).
  2. Ändern Sie mit Hilfe des Nachrichtengruppeneditors die Eigenschaft Laufzeit-Parser der Nachrichtengruppe in IDOC.
  3. Importieren Sie mit Hilfe des Assistenten für Neue Nachrichtendefinitionsdatei oder des Befehls mqsicreatemsgdefs die C-Darstellung der IDoc in die neue Nachrichtengruppe. Geben Sie bei der Verwendung des Assistenten oder des Befehls die folgenden Einstellungen an:
    • Erstellen Sie Nachrichten für die Segmente, die in der IDoc angezeigt werden.
    • Verwenden Sie die Option Zeichenfolgecodierung, um Zeichenfelder als Zeichenfolge mit fester Länge zu importieren.
    • Verwenden Sie die Option Auffüllzeichen für Zeichenfolge für die von Auffüllzeichen verwendeten Leerzeichen (" ").
    Aus C importieren enthält Informationen zur Verwendung des Assistenten für Neue Nachrichtendefinitionsdatei.
  4. Geben Sie jeder Nachricht den Namen des Segments, das sie darstellt, in Großbuchstaben. Beispiel: Bei einem Segment mit der Bezeichnung E2MARAMM muss die Bezeichnung der Nachricht E2MARAMM lauten.

Die Nachrichtengruppe muss einer Brokerarchivdatei hinzugefügt und in einer Brokerausführungsgruppe implementiert werden, da der IDoc-Parser den MRM-Parser zur Syntaxanalyse der von Ihnen definierten IDoc-Segmente verwendet.

Die Eigenschaft 'Laufzeit-Parser', der Nachrichtengruppenname und der CWF-Name werden bei der Erstellung eines Nachrichtenflusses für die Verarbeitung einer IDoc verwendet. Sie werden als Werte der Eigenschaften Nachrichtendomäne, Nachrichtengruppe bzw. Nachrichtenformat eines MQEmpfangsknotens angezeigt. Geben Sie im MQEmpfangsknoten die Eigenschaft Nachrichtenart nicht an, da der IDoc-Parser mit den Inhalten des SAP-definierten IDoc DD-Felds 'segnam' den Namen der Nachricht angibt.

Auf Felder der IDoc mit Hilfe von ESQL zugreifen

Mit dem ESQL-Editor 'Inhaltsassistent' können Sie die SAP-definierten Felder der IDoc auffüllen. Rufen Sie die Inhaltshilfe vom Menü 'Bearbeiten' aus auf bzw. auf einigen Systemen durch Drücken der Steuerungs- und Leertaste (falls diese Kombination nicht einer anderen Funktion zugeordnet wurde).

In einer ESQL-Anweisung folgt auf den Tag sdatatag der Tag MRM, der manuell eingegeben werden muss. Anschließend wird der Feldname bearbeitet. Geben Sie hier den Namen des Felds im Nachrichtensegment und nicht den Namen des Nachrichtensegments ein.

Durch den folgenden Code wird beispielsweise der Segmentname der IDoc festgelegt:

SET OutputRoot.IDOC.DD[I].segnam  = 'E2MAKTM001';
Im folgenden Beispielcode wird das Feld msgfn im Segment E2MAKTM001 gesetzt:
SET OutputRoot.IDOC.DD[I].sdatatag.MRM.msgfn = '006';     
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac20030_