Aus SpreadSplitter einzelne XML-Files generieren

Hallo @synestysupport

Leider ist uns die Vorgehensweise nicht ganz klar um einzelne XML-Dateien von Bestellungen anlegen zu können. Über SearchDatastore und den Splitter rufen wir die einzelnen Bestellungen gruppiert nach der OrderNumber ab (siehe Screenshot). Als nächstes möchten wir nun mit dem TextHTMLWriterMultiOutput einzelne XML-Files der einzelnen Bestellungen nach OrderNumber generieren.

Leider erhalten wir hier immer eine Fehlermeldung:
A-8 TextHTMLWriterMultiOutput: Fehler beim Ausführen eines Freemarker Skripts. Sie haben eine Variable verwendet (spreadsheetList@SpreadsheetSplitter_14.getRows), die nicht existiert.

Wie genau können wir im Template auf das gruppierte Spreadsheet zugreifen?
Dies ist unser Template

Ich danke euch für einen kurzen Tipp.
Beste Grüsse Daniel

Hallo Daniel,

der SpreadsheetSplitter Step liefert eine Liste von Spreadsheets als Ergebnis. Wenn du im TextHTMLWriterMultiOutput pro Spreadsheet eine Datei erstellen willst, dann sind zwei „#list“ Anweisungen notwendig. Die äußere List Anweisung „läuft“ über alle Spreadsheets und die innere über die jeweiligen Zeilen des aktuellen Spreadsheets. Das Template sollte in etwa wie folgt aussehen:

<#list spreadsheetList@SpreadsheetSplitter_14 as spreadsheet>

  <#list spreadsheet.getRows() as row>
    <#assign orderNumber = row.get("OrderNumber") />
    <#assign xmlfilecontent>
    <?xml version="1.0" encoding="UTF-8"?>
    
    <order id="${row.get("OrderNumber")!}">
    TEST
    
    </#assign>

  </#list>
  
  <#assign xmlfilename = orderNumber! + ".xml" />
  ${output(xmlfilecontent, xmlfilename, "UTF-8")}

</#list>