Simple Transformation XML=>ABAP Datentypen Problem

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Simple Transformation XML=>ABAP Datentypen Problem

Beitrag von 19KnarfRed81 (ForumUser / 24 / 12 / 3 ) »
Hallo Zusammen,

ich möchte eine XML, die mir per Proxy übergeben wird in eine ABAP-Struktur umwandeln. Hier war jetzt mein Ansatz das mit Simple Transformation zu lösen.

Dazu habe ich folgende Transformation angelegt:

Code: Alles auswählen.

<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates" xmlns:ddic="http://www.sap.com/abapxml/types/dictionary" xmlns:def="http://www.sap.com/abapxml/types/defined">
  <tt:root name="INVOICE" type="ddic:ZTEST"/>
  <tt:template>
    <INVOICE>
      <INVOICE_HEADER>
        <PARTNER tt:value-ref=".INVOICE.INVOICE_HEADER.PARTNER"/>
        <EVENT tt:value-ref=".INVOICE.INVOICE_HEADER.EVENT"/>
        <ID1 tt:value-ref=".INVOICE.INVOICE_HEADER.ID1"/>
        <ID2 tt:value-ref=".INVOICE.INVOICE_HEADER.ID2"/>
        <ISSUEDATE tt:value-ref=".INVOICE.INVOICE_HEADER.ISSUEDATE"/>
        <RECEIVEDATE tt:value-ref=".INVOICE.INVOICE_HEADER.RECEIVEDATE"/>
        <EXTERNALREF tt:value-ref=".INVOICE.INVOICE_HEADER.EXTERNALREF"/>
        <IK tt:value-ref=".INVOICE.INVOICE_HEADER.IK"/>
      </INVOICE_HEADER>
      <INVOICE_ITEMS>
        <tt:loop ref=".INVOICE.INVOICE_ITEMS">
          <INVOICE_ITEM>
            <BENTYPE tt:value-ref="BENTYPE"/>
            <VALIDFROM tt:value-ref="VALIDFROM"/>
            <VALIDTO tt:value-ref="VALIDTO"/>
            <EVQUANTITY tt:value-ref="EVQUANTITY"/>
            <EVAMTPERUNIT tt:value-ref="EVAMTPERUNIT"/>
          </INVOICE_ITEM>
        </tt:loop>
      </INVOICE_ITEMS>
    </INVOICE>
  </tt:template>
</tt:transform>
Wenn ich jetzt eine XML mit diesem Format damit transformiere klappt das nur solange die Datentypen in der XML korrekt vorliegen, also Datum im XSDDATE_D Format. Ansonsten kommt es zum Dump, in diesem Fall CX_SY_CONVERSION_NO_DATE_TIME. Kann ich das irgendwie beeinflussen? Also entweder z.B. Datentyp der XML in der ST vorgeben?

Beispiel meiner XML, die jetzt wegen dem Datum im Feld ISSUEDATE abbricht.

Code: Alles auswählen.

<?xml version="1.0" encoding="utf-8"?>
    <INVOICE>
      <INVOICE_HEADER>
        <PARTNER>1234567890</PARTNER>
        <EVENT>00000000001234567</EVENT>
        <ID1>E0</ID1>
        <ID2>599A157ED0B51EEFBA8E006C6BD71B95</ID2>
        <ISSUEDATE>20250601</ISSUEDATE>
        <RECEIVEDATE>2025-06-04</RECEIVEDATE>
        <EXTERNALREF>RE-12345</EXTERNALREF>
        <IK>260341444</LE_IK>
      </INVOICE_HEADER>
      <INVOICE_ITEMS>        
          <INVOICE_ITEM>
            <BENTYPE>102510</BENTYPE>
            <VALIDFROM>2025-06-01</VALIDFROM>
            <VALIDTO>2025-06-02</VALIDTO>
            <EVQUANTITY>5</EVQUANTITY>
            <EVAMTPERUNIT>125.25</EVAMTPERUNIT>
          </INVOICE_ITEM>
      </INVOICE_ITEMS>
    </INVOICE>
Hintergrund ist der das die XML die ich per Proxy bekomme, sehr wahrscheinlich aufgrund der vorgegebenen XSD mit Datum im String-Format kommt.

Danke schon mal für's Überlegen...

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Simple Transformation XML=>ABAP Datentypen Problem

Beitrag von IHe (Specialist / 166 / 38 / 54 ) »
Wie ist denn der Datentyp des Feldes INVOICE.INVOICE_HEADER.ISSUEDATE in der Struktur definiert? Die Exception sieht so aus, als ob ein Datetime-Feld anstelle eines Datums erwartet wird. Notfalls muss das Feld als CHAR 8 definiert und programmatisch nach der Deserialisierung als Datum berücksichtigt werden.

Folgende Benutzer bedankten sich beim Autor IHe für den Beitrag:
19KnarfRed81

Ingo Hoffmann

ECC|S/4HANA|BTP
dbh SAP Solutions

Re: Simple Transformation XML=>ABAP Datentypen Problem

Beitrag von 19KnarfRed81 (ForumUser / 24 / 12 / 3 ) »
Bei mir in der DDIC Struktur als DATS - was ja eigentlich ein CHAR8 ist. Problem ist doch, dass ich den Typ im XML gar nicht beeinflussen kann. SAP erwartet hier offensichtlich immer XSDDATE_D wenn in ein Datumsfeld deserialisiert werden soll. Oder meinst du das wäre nicht so, wenn ich statt DATS CHAR8 nehmen?

Re: Simple Transformation XML=>ABAP Datentypen Problem

Beitrag von 19KnarfRed81 (ForumUser / 24 / 12 / 3 ) »
Ich hab das mal ausprobiert. So geht es tatsächlich.

Re: Simple Transformation XML=>ABAP Datentypen Problem

Beitrag von IHe (Specialist / 166 / 38 / 54 ) »
Genau, die eingehenden XML-Daten kann man in der Regel nie beeinflussen, sondern muss die Deserialisierung entsprechend konfigurieren. Dies geht in diesem Fall über die Datentypen der Struktur. Ggf. lässt sich auch in der ST mittels format-Anweisung nachsteuern, damit habe ich aber noch keine Erfahrungen gemacht.

Bei komplexeren Strukturen kann man auch aus einer vorliegenden XSD eine WSDL generieren und damit dann per Wizard sich einen Enterprise Service/Service Consumer generieren lassen. Dieser lässt sich besser konfigurieren und aktualisieren als eine manuell erstellte ST, z.B. beim Mappen von Datumsformaten:
service.png
Ingo Hoffmann

ECC|S/4HANA|BTP
dbh SAP Solutions

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1841
Views
simple transformation
von akgermain » 13.12.2012 14:19 • Verfasst in ABAP® für Anfänger
0
Antw.
1239
Views
XML Simple transformation
von akgermain » 27.08.2013 17:39 • Verfasst in ABAP® für Anfänger
4
Antw.
3316
Views
Simple Transformation
von generic_user » 15.06.2016 12:40 • Verfasst in ABAP® Core
1
Antw.
4174
Views
SEPA Simple transformation
von akgermain » 12.12.2012 13:59 • Verfasst in ABAP® für Anfänger
7
Antw.
7267
Views
XSLT SIMPLE Transformation
von Prego » 19.04.2010 12:16 • Verfasst in ABAP® Core

Über diesen Beitrag



Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.