Neu Workflow mit zwei Globalen Textbausteinen funktioniert nicht (1x Zeitraum + 1x SQL)

Tsuc

Sehr aktives Mitglied
28. Januar 2020
250
44
Berlin
Hallo an alle,

Ich habe folgenden Workflow, der mir Daten für einen bestimmten Zeitraum ausgibt:
Code:
{% assign Zeitraum = GlobaleTexte.Abrechnungszeiträume_Workflow.Zeitraum_01-14_-_diesen_Monat.Deutsch -%}
{% assign SQL = GlobaleTexte.Abrechnung_SQL.L3.Deutsch -%}
{% capture query -%}
{{SQL}}
{% endcapture query -%}
{% assign Tabelle = query | DirectQuery -%}
"Mandant";"Menge";"Artikelnummer"
{% for item in Tabelle.Daten -%}
{{ item.Mandant }};{{ item.Menge }};{{ item.Artikelnummer }}
{% endfor -%}

Variablen:
Zeitraum = '01-01-2022' AND '14-01-2022'

SQL =
SQL:
SELECT
    tKunde.cKundenNr AS 'Mandant'
    ,CAST(COUNT(Kunde.lvRetouren.cRetoureNr) AS INT) AS 'Menge'
    ,'1234' AS 'Artikelnummer'
FROM Kunde.lvRetouren
    LEFT JOIN tKunde ON tKunde.kKunde = Kunde.lvRetouren.kKunde
WHERE
    Kunde.lvRetouren.dErstellt BETWEEN {{Zeitraum}}
GROUP BY tKunde.cKundenNr

Der obige Code sollte eigentlich die Variable "Zeitraum" in der Variable "SQL" ersetzt werden.
Leider funktioniert das aber nicht.

Wenn ich hingegen, die SQL Query nicht im Textbaustein, sondern direkt in den Workflow einfüge, funktioniert der Workflow.

Hat jemand eine Idee, wie ich das lösen kann?
 

Tsuc

Sehr aktives Mitglied
28. Januar 2020
250
44
Berlin
Die Lösung ist, dass man die Variablen im SQL-Text mit Replace gegen die echte Variable austauscht.
So funktioniert das dann:
Code:
{% assign Zeitraum = GlobaleTexte.Abrechnungszeiträume_Workflow.Zeitraum_01-14_-_diesen_Monat.Deutsch -%}
{% assign SQL = GlobaleTexte.Abrechnung_SQL.L3.Deutsch | Replace:'{{Zeitraum}}', Zeitraum -%}
{% capture query -%}
{{SQL}}
{% endcapture query -%}
{% assign Tabelle = query | DirectQuery -%}
"Mandant";"Menge";"Artikelnummer"
{% for item in Tabelle.Daten -%}
{{ item.Mandant }};{{ item.Menge }};{{ item.Artikelnummer }}
{% endfor -%}

Thema kann dann gern geschlossen werden.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: aadursun

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.216
461
Die Lösung sit, dass man die Variablen im SQL-Text mit Replace gegen die echte Variable austauscht.
So funktioniert das dann:
Code:
{% assign Zeitraum = GlobaleTexte.Abrechnungszeiträume_Workflow.Zeitraum_01-14_-_diesen_Monat.Deutsch -%}
{% assign SQL = GlobaleTexte.Abrechnung_SQL.L3.Deutsch | Replace:'{{Zeitraum}}', Zeitraum -%}
{% capture query -%}
{{SQL}}
{% endcapture query -%}
{% assign Tabelle = query | DirectQuery -%}
"Mandant";"Menge";"Artikelnummer"
{% for item in Tabelle.Daten -%}
{{ item.Mandant }};{{ item.Menge }};{{ item.Artikelnummer }}
{% endfor -%}

Thema kann dann gern geschlossen werden.
Moin.
Nutze RendererFilters: https://guide.jtl-software.de/jtl-wawi/vorlagen/filter-in-dotliquid/#eingabe-rendern-render
Dann wird aus der Globalen Textvorlage Versand:
Code:
Der Versand erfolgt am {{ Datum.Jetzt | AddDays: 5 }}
das hier:
Code:
{{ GlobaleTexte.eBay.Versand.Deutsch | Render }} -> Der Versand erfolgt am 21.09.2015 13:52:05
 
  • Gefällt mir
Reaktionen: aadursun

Tsuc

Sehr aktives Mitglied
28. Januar 2020
250
44
Berlin
Hatte die Funktion Render auch schon probiert gehabt. Da hat es leider nicht funktioniert.
Vielleicht habe ich es an der falschen Stelle angewendet?

siehe Code:
Code:
{% assign Zeitraum = GlobaleTexte.Abrechnungszeiträume_Workflow.Zeitraum_01-14_-_diesen_Monat.Deutsch -%}
{% assign SQL = GlobaleTexte.Abrechnung_SQL.L3.Deutsch -%}
{% capture query -%}
{{SQL | Render}}
{% endcapture query -%}
{% assign Tabelle = query | DirectQuery -%}
"Mandant";"Menge";"Artikelnummer"
{% for item in Tabelle.Daten -%}
{{ item.Mandant }};{{ item.Menge }};{{ item.Artikelnummer }}
{% endfor -%}

Wie oben geschrieben, ist das Problem mit Replace gelöst.😀
 
  • Gefällt mir
Reaktionen: aadursun

Ähnliche Themen