Mappen von UN/EDIFACT auf ein XML-Schema

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele >  EDI  > UN/EDIFACT >

Mappen von UN/EDIFACT auf ein XML-Schema

In diesem Beispiel wird beschrieben, wie Daten von UN/EDIFACT-Nachrichten auf ein XML-Schema gemappt werden, um eine XML-Instanzdatei zur weiteren Verarbeitung zu erzeugen. Sie finden die Beispieldatei dazu unter dem folgenden Pfad: <Dokumente>\Altova\MapForce2019\MapForceExamples\EDI_Order.mfd.

 

Schritt 1: Hinzufügen der UN/EDIFact-Komponenten zum Mapping

 

1.Erstellen Sie ein neues Mapping und wählen Sie eine der folgenden Transformationssprachen aus: Java, C#, C++ oder BUILT-IN. In diesem Beispiel wurde Java als Transformationssprache ausgewählt.
2.Wählen Sie im Menü Einfügen den Befehl EDI.
3.Wählen Sie im Dialogfeld "EDI-Collections" die EDIFACT Collection und anschließend den Nachrichtentyp ORDERS aus und klicken Sie auf OK.

edifact2xml_example_01

4.Wenn Sie aufgefordert werden, eine EDI-Beispieldatei anzugeben, klicken Sie auf Durchsuchen und öffnen Sie die Datei ORDERS.EDI aus dem Verzeichnis <Dokumente>\Altova\MapForce2019\MapForceExamples\. Nach dem Öffnen der Datei wird das Dialogfeld "Komponenteneinstellungen" angezeigt. Auf diese Art können Sie die Einstellungen der EDI-Komponente überprüfen, bevor Sie diese zum Mapping hinzufügen. Sie können diese Einstellungen später bei Bedarf jederzeit ändern (siehe EDI-Komponenteneinstellungen). Beachten Sie, dass die Datei ORDERS.EDI als Input-Datei angezeigt wird.

edifact2xml_example_03

5.Klicken Sie auf OK. Die EDI-Komponente wird nun im Mapping-Bereich angezeigt. Doppelklicken Sie auf den Node Message_ORDERS, um die Subeinträge zu sehen. Um die Größe der Komponente anzupassen, ziehen Sie die rechte untere Ecke des Komponentenfensters mit der Maus.

edifact2xml_example_04

 

Schritt 2: Hinzufügen der Zielschemakomponente zum Mapping

1.Klicken Sie im Menü Einfügen auf XML-Schema/Datei und öffnen Sie die Datei Order.xsd aus dem Verzeichnis <Dokumente>\Altova\MapForce2019\MapForceExamples\.
2.Wenn Sie aufgefordert werden, eine XML-Beispieldatei anzugeben, klicken Sie auf Überspringen und wählen Sie als Root des Zieldokuments den Eintrag Order aus.

edifact2xml_example_05

Zu diesem Zeitpunkt befindet sich nun sowohl die EDI-Quellkomponente als auch die XML-Schema-Zielkomponente im Mapping-Bereich, so dass Sie die Mapping-Verbindungslinien ziehen können.

edifact2xml_example_06

 

Schritt 3: Mappen der EDI-Datenelemente

In der EDI-Komponente wird nun die Struktur einer Nachricht angezeigt. Diese Struktur basiert auf der soeben ausgewählten Collection (ORDERS). Normalerweise enthalten nicht alle Nodes Daten, daher müssen Sie das jeweils verarbeitete EDI-Dokument gut genug kennen, um die relevanten Nodes zu finden.

 

In MapForce erfolgt das Mapping eines Quell-Datenelements auf ein Ziel-Datenelement durch Ziehen einer Verbindung zwischen den beiden Elementen. Eine schrittweise Anleitung zum Erstellen von Mapping-Verbindungen in MapForce finden Sie unter Arbeiten mit Verbindungen.

 

In diesem Beispiel müssen die folgenden Nodes (beginnend mit dem Group/Message_ORDERS Node) gemappt werden:

 

Quelle

Ziel

BGM/C106/F1004

Order/Header/Number

SG2/NAD/C082/F3039

Order/Customer/Number

SG2/NAD/C080/F3036

Order/Customer/CompanyName

SG2/NAD/C059/F3042

Order/Customer/Address/Street

SG2/NAD/F3164

Order/Customer/Address/City

SG2/NAD/C819/F3229

Order/Customer/Address/State

SG2/NAD/F3251

Order/Customer/Address/ZIP

SG2/SG5/CTA/C056/F3412

Order/Customer/ContactName

 

In dieser Phase sollte das Mapping ähnlich wie in der unten gezeigten Abbildung aussehen:

 

edi-8

 

Fahren Sie mit dem Mapping fort und mappen Sie:

 

Quelle

Ziel

SG29

Order/LineItems

SG29/LIN/C212/F7140

Order/LineItems/LineItem/Article/Number

SG29/IMD/C273/F7008

Order/LineItems/LineItem/Article/Name

SG29/QTY/C186/F6060

Order/LineItems/LineItem/Article/Amount

SG29/SG33/PRI/C509/F5118

Order/LineItems/LineItem/Article/SinglePrice

 

Schritt 4: Formatieren des Datums

Ziehen Sie die to-datetime-Funktion aus der edifact-Bibliothek in das Mapping-Fenster. Eine Anleitung zum Arbeiten mit Funktionen in MapForce finden Sie unter Arbeiten mit Funktionen.

 

Durch Bereitstellung der Komponenten F2380 und F2379 des Elements DTM/C507 als Argumente lässt sich ein ordnungsgemäß formatiertes datetime-Element Received erzeugen.

 

Wir mappen daher die folgenden Felder:

 

Quelle

Ziel

DTM/C507/F2380

Der F2380-Input der to-datetime-Funktion

DTM/C507/F2379

 

Der F2379-Input der to-datetime-Funktion

Das Ergebnis (result) der to-datetime-Funktion

Order/Header/Received

edi-10

 

Schritt 5: Filtern der Bestellungen des Käufers (Buyer):

Wir wollen nun die Bestellungen des Käufers (Buyer) filtern. Diese lassen sich anhand des "party function code qualifier" des NAD (Name and Address)-Segments identifizieren. In diesem Fall bedeutet der Wert 'BY' einen Buyer, also Käufer (Partei an den eine Ware und/oder Dienstleistung verkauft wird).

 

1.Ziehen Sie die equal-Funktion aus der core-Bibliothek in das Mapping-Fenster.
2.Fügen Sie einen Filter zum Mapping hinzu. (Wählen Sie die Menüoption Einfügen | Filter: Nodes/Zeilen).
3.Fügen Sie eine Konstante zum Mapping hinzu. (Wählen Sie dazu die Menüoption Einfügen | Konstante). Weisen Sie der Konstante den Wert "BY" zu, indem Sie in das Textfeld "BY" eingeben.

 

edifact2xml_example_07

 

Mappen Sie die folgenden Datenelemente:

 

Quelle

Ziel

SG2/NAD/F3035

Der Input b der equal-Funktion

Die Konstante "BY"

Der Input a der equal-Funktion

Das Ergebnis der equal-Funktion

Der Input bool der filter-Komponente

SG2/NAD

Der node/row-Input der Filterkomponente

Das on-true Ergebnis der filter-Komponente

Order/Customer im Schema

 

Ziel ist, nur Daten zu mappen, deren NAD auf einen 'Buyer' referenziert, wie vom "party function code qualifier" 'BY' gekennzeichnet.

 

edi-12

 

Schritt 6: Berechnen von Preis und Steuer

Der letzte Schritt in diesem Vorgang ist nun die Berechnung des Preises und der Steuern.

 

1.Ziehen Sie aus der core-Bibliothek zwei multiply- und eine divide-Funktion in das Mapping-Fenster.
2.Fügen Sie eine Konstantenkomponente ein (Einfügen | Konstante). Stellen Sie sicher, dass als Typ "Numerisch" ausgewählt ist und geben Sie im Textfeld 100.0 ein.
3.Mappen Sie die folgenden Elemente:

 

Quelle

Ziel

SG29/QTY/C186/F6060

value1 der ersten multiply-Funktion

SG29/SG33/PRI/C509/F5118

value2 der ersten multiply-Funktion

Das Ergebnis der ersten multiply-Funktion

Order/LineItems/LineItem/Article/Price

SG29/SG40/TAX/C243/F5278

value1 der divide-Funktion

Die Konstante "100.0"

value2 der divide-Funktion

Das Ergebnis der ersten multiply-Funktion

value1 der zweiten multiply-Funktion

Das Ergebnis der divide-Funktion

value2 der zweiten multiply-Funktion

Das Ergebnis der zweiten multiply-Funktion

Order/LineItems/LineItem/Article/Tax

 

Ihr Mapping sollte nun folgendermaßen aussehen:

 

edi-14

 

Wenn Sie auf die Schaltfläche Ausgabe klicken, wird eine on-the-fly-Transformation durchgeführt und das erzeugte XML-Dokument angezeigt:

 

edi-15

 

 

 


© 2019 Altova GmbH