mark for future value(a)
Gruppe |
Diese Funktion setzt eine Markierung a auf ein Zielfeld. Später kann diese Markierung dann mit der Funktion replace marked value(a,b) durch einen tatsächlichen Wert ersetzt werden.
Markieren und Ersetzen funktioniert nur innerhalb eines Datenblattes. Mit dem Start eines neuen Datenblattes werden Markierungen zurückgesetzt und durch ein Empty Flag ersetzt.
Es wird empfohlen, die Funktion nicht in einer Funktionskette einzusetzen, sondern diese alleine auf ein Feld zu legen. Wird das Feld als Sortierfeld eines Knotens verwendet, findet die Sortierung nach der Ersetzung mit dem eigentlichen Wert statt.
Parameter
Parameter |
Beschreibung |
a |
Name der Markierung. |
Beispiel
Es ist möglich, Werten zu verwenden, die erst in der Zukunft berechnet werden. Dies kann mit der Hilfe von zwei Funktionen realisiert werden.
Neues Profil anlegen
Wir legen wir ein einfaches CSV-Mapping an (Trennzeichen NL), das aus einem Kopfsatz und n Positionen besteht. In der Ausgabe soll im Kopfsatz die Anzahl der Positionen erscheinen (Zielstrukturfeld Positionen). Die Eingangsdaten sehen wie folgt aus.
K;4711;Lobster
P;A-1;Artikel 1
P;A-2;Artikel 2
P;A-3;Artikel 3
Auf den Knoten in der Quellstruktur gilt Trennzeichen ;. Die Satzarterkennungen sind Beginnt mit K und Beginnt mit P.
Die Zielstruktur erzeugen Sie bitte mit einem 1:1 Mapping und fügen ein neues Feld Positionen im Kopf der Zielstruktur ein.
Anschließend legen Sie ein neues Berechnungsfeld Calc_Pos im Knoten Position der Zielstruktur an.
Variable anlegen
Legen Sie eine neue Variable vom Typ Integer im Profil an, der Name ist var__COUNT_ITEMS.
Positionen berechnen
Im Berechnungsfeld Calc_Pos fügen Sie die Funktion calculate and save variable(a,b,c,d,[e]) ein, wie in der Abbildung zu sehen ist. Damit wird pro Durchlauf des Knotens Position der Wert um 1 erhöht, d. h. wir zählen die Anzahl der Positionen.
Anzahl der Positionen im Kopfsatz schreiben
Weil unsere Variable var__COUNT_ITEMS erst später berechnet werden wird, müssen wir im Kopf-Feld Positionen einen vorläufigen Wert schreiben. Das kann mit der Funktion mark for future value(a) getan werden. Wir nennen unseren "zukünftigen" Wert item_counter.
Was passiert hier?
Der Kopfsatz Kopf wird vor dem Knoten Position abgearbeitet. Zu diesem Zeitpunkt haben wir unsere Variable var__COUNT_ITEMS aber noch nicht berechnet. Deswegen setzen wir den "zukünftigen" Wert item_counter mit der Funktion auf dieses Feld. Intern wird notiert, dass der Wert später ersetzt werden soll.
Positionsanzahl jetzt schreiben
Um zu veranlassen, dass nach Durchlauf aller Positionen der Wert im Kopfsatz ersetzt wird, legen wir einen neuen Knoten Ende mit einem Berechnungsfeld Wert_setzen an. Dieses Feld verwendet die Funktion replace marked value(a,b). Diese Funktion erlaubt es sozusagen rückwirkend den damals zukünftigen Wert item_counter mit einem tatsächlichen Wert zu füllen.
Was passiert hier?
Der Knoten Ende wird am Schluss des Mappings betreten. Die Funktion replace marked value(a,b) bewirkt, dass unser damals zukünftiger Wert item_counter nun mit dem Wert unserer mittlerweile berechneten Variable var__COUNT_ITEMS belegt wird.
Testen
Wenn alle Angaben korrekt sind, sollte das Ergebnis im Teste Mapping-Dialog genauso aussehen wie oben.
Folgendes geht nicht
Die Verwendung von Zielfeldern als Parameter in Funktionen wird unterbunden, wenn es sich um Felder handelt, die diese Funktion verwenden - da der Wert ja noch nicht bekannt ist.
Es werden nur Werte pro Datenblatt ersetzt! Es können also nicht Werte über Datenblätter hinweg ersetzt werden.
Leere Werte bzw. Empty Flag
Wird die Funktion replace marked value(a,b) nicht ausgeführt, wird für das Feld Positionen das Empty Flag gesetzt.