QlikView Script: $(Must_Include) für externe Scripte

QlikView Scripte extern zu speichern ist aus vielen Gründen sinnvoll:

  • Config Dateien extern halten
  • Wiederkehrende Skriptteile nur einmal pflegen (zB KalenderScript, oder Libraries wie QlikView Components
  • Datenbank Connections extern halten, um zwischen Entwicklungs- und Produktivumgebung nicht manuell in die .qvw eingreifen zu müssen.
Der Qlikview Befehl für externe Skripte lässt sich im Skripteditor generieren und erzeugt für eine externe Datei "scriptfile.txt" folgenden Include-Befehl:
$(Include=.\scriptfile.txt);
So weit, so gut! Nur was passiert wenn die Datei scriptfile.txt nicht existiert (weil das File versehentlich in einem anderen Verzeichnis liegt, oder man sich vertippt hat)? Der erfahrende Qlikview Entwickler weiß: Es passiert gar nichts! Per Definition ignoriert QlikView das Fehlen des externen Skripts und läuft einfach mit dem restlichen Skript weiter! Im besten Fall bekommt man einen (irreführenden) Folgefehler, weil zb. die im include-File gepflegte Datenbank-Connection nicht geöffnet werden konnte. Die Fehlersuche kann dann aber häufig langwierig sein, da man zumeist nicht als erstes an das nicht-vorhandene Include-File denkt.

Ein ähnliches Verhalten kennt man aus PHP! Dort können externe Skripte mit "include" (entspricht der QlikView-Denke) oder mit "require" (wirft einen Fehler wenn die externe Datei nicht gefunden wurde) eingebunden werden.

Gibt es nun ein "require"-Verhalten in QlikView? Ja, gibt es - aber erstmal gut versteckt! Toni Kautto hat es als Erster in einem QlikCommunity-Forumthread folgende Lösung gepostet:
$(must_include=scriptFile.txt);
Testet man mit einem Script wie im Screenshot unterhalb, so wirft $(must_include) einen Fehler der klar zeigt, daß die Datei "doesNotExist.txt" vom must_include-Befehl nicht gefunden werden konnte!


In QV11.20 SR3 lässt sich der Befehl nun auch in der offiziellen Dokumentation finden. Damit können hoffentlich auch alle Sorgen (wie an anderen Stellen  in der QlikView Blogosphere geäußert) zerstreut werden, dass dieses Feature nicht offiziell supported ist!


Viel Spaß beim Abändern Ihrer existierenden Skripte & einen schönen Sommer!
Ihr heldendaten Team

heldendaten GmbH,2017