Anpassen der XSLT-Transformation in SAP

    • Offizieller Beitrag

    In SAP wird eine CGI-Transformation für CAMT.053 und CAMT.054 ausgeliefert. Diese passt allerdings oftmals nicht in Verbindung mit den Banken und füllt die Tabellenfelder nicht korrekt. Somit muss ggf. pro Bank eine eigene Transformation im eigenen Namensraum angelegt und angepasst werden.

    Beispiel: Geschäftsvorfallcode (GVC)

    Eine Beispielauslieferung der Deutschen Kreditwirtschaft (DK) liefert den GVC wie folgt aus:










    In der Beispieldatei wird der GVC mit NTRF+166 in das Tabellenfeld VGEXT geschrieben. Bestehende Einträge werden somit bei der Interpretation nicht mehr angesprochen. Die Transformation kann nun beispielsweise wie folgt angepasst werden:





    Die Position des GVC wird ausgelesen und die drei Stellen des GVC werden in das Feld VGEXT geschrieben.




  • amazon
  • Hallo Herr Wild,


    wenn die substring-Funktion den Aufbau "substring(string,start,len)" hat, müsste es dann in der angepassten Transformation in Zeile 205 für einen dreistelligen GVC nicht "substring(...,6,3)" heißen?


    Viele Grüße
    EC1055

  • Hallo Herr Wild,


    wann läuft die Transformation eigentlich in den "Test"-Zweig
    <xls:when test="ns0:BkTxCd ......


    Seltsamerweise scheint das beim österreichischen XML-Format so zu sein...


    Vielen Dank schonmal für Ihre Hilfe !


    Viele Grüße,
    sap_claudi

  • Hallo Herr Wild,


    vielen Dank für die Rückmeldung. Hätten Sie dafür evtl. ein Beispiel ?
    Und haben Sie Erfahrungen mit dem österreichischen CAMT-Format ? Könnte ich Sie dazu befragen ?


    Viele Grüße,
    sap_claudi

  • Hallo Herr Wild,


    ich verzweifle auch gerade am österreichischem Format der RVS in Salzburg


    So sieht die Orignialdatei aus, der GVC ist unter BkTxCd/Prtry (siehe Word)



    So sieht die neu angelegte Transformation schreibt nicht den GVC in die Zeile



    Können Sie mir weiterhelfen?


    Vielen Dank - witzigerweise ist die Zahlung an Würth :-)


    Viele Grüße,
    Birgit

  • Hallo Herr Wild,


    bei mir sieht die Transformation so aus:


    <!--Transaction Code-->
    <VGEXT>
    <xsl:choose>
    <xsl:when test="ns0:BkTxCd/ns0:Domn">
    <xsl:value-of select="concat(ns0:BkTxCd/ns0:Domn/ns0:Cd, ns0:BkTxCd/ns0:Domn/ns0:Fmly/ns0:Cd, ns0:BkTxCd/ns0:Domn/ns0:Fmly/ns0:SubFmlyCd)"></xsl:value-of>
    </xsl:when>
    <xsl:otherwise>
    <xsl:value-of select="ns0:BkTxCd/ns0:Prtry/ns0:Cd"></xsl:value-of>
    </xsl:otherwise>
    </xsl:choose>
    </VGEXT>
    <VGMAN></VGMAN>
    <KFMOD />
    <BUTXT />
    <ANZSP />
    <XBLNR />
    <ZUONR />
    <!--Parnter Details-->


    Was muss ich ändern? (bin kein Programmierer)


    Vielen Dank!


    Viele Grüße,
    Birgit

    • Offizieller Beitrag

    Hallo Birgit,


    okay, in dem Fall trifft die erste Bedingung zu, da in dem XML-Tag ein Wert enthalten ist:


    <xsl:value-of select="concat(ns0:BkTxCd/ns0:Domn/ns0:Cd, ns0:BkTxCd/ns0:Domn/ns0:Fmly/ns0:Cd, ns0:BkTxCd/ns0:Domn/ns0:Fmly/ns0:SubFmlyCd)"></xsl:value-of>


    Was dann auch das Ergebnis in der Validierung ist. Ich würde für die Bank eine eigene Transformation anlegen, die
    nur die zweite Bedingung abfragt. Also in etwa so:




    <!--Transaction Code-->
    <!--We didn't use this part of transformation due to existing reason code in XML-Tag Prtry.-->
    <VGEXT>
    <!--We only use this XML-Tag due to the right information in camt-053-->
    <xsl:value-of select="ns0:NtryDtls/ns0:TxDtls/ns0:BkTxCd/ns0:Prtry/ns0:Cd"/>
    <!--<xsl:choose>
    <xsl:when test="ns0:BkTxCd/ns0:Domn">
    <xsl:value-of select="concat(ns0:TxDtls/BkTxCd/ns0:Domn/ns0:Cd, ns0:BkTxCd/ns0:Domn/ns0:Fmly/ns0:Cd, ns0:BkTxCd/ns0:Domn/ns0:Fmly/ns0:SubFmlyCd)"/>
    </xsl:when>
    <xsl:otherwise>
    <xsl:value-of select="substring(ns0:NtryDtls/ns0:TxDtls/ns0:BkTxCd/ns0:Prtry/ns0:Cd,0,3)"/>
    </xsl:otherwise>
    </xsl:choose>-->
    </VGEXT>



    Die Abfrage ist somit immer nur für die eine Bank gültig und liefert den GVC korrekt an - Vorausgesetzt die Bank
    ändert die Bereitstellung nicht.


    Viele Grüße


    Claus Wild