Toolmaker Produkt-Dokumentation

Die XRTVPDF-Funktion - archivierte PDF-Dokumente anhängen

Diese Funktion ist verfügbar ab Version 5.60, PTF 06

Beschreibung der Funktion

Bei der Verarbeitung von Spooldateien (SPLFs) über DirectSpool (WRKATMDEF, Mit Automail Definitionen arbeiten) kann es die Anforderung geben, einer Mahnung per Email gleich die angemahnten Rechnungen als PDF anzuhängen.

Eine Funktion zum Thema, zusätzliche Dokumente aus dem IFS an eine Email anhängen, gibt es ja schon längere Zeit. Man kann das z.B. nutzen, um Artikelbilder oder Sicherheitsmerkblättert zu den im Dokument erwähnten Artikelnummern anzuhängen. In der Regel sind dies PC-Dateien mit konstanten Informationen.

Wenn sich die anzuhängenden PDFs noch gar nicht im IFS befinden und außerdem kundenabhängig sind, kommt die neue Funktion XRTVPDF (Execute Retrieve PDF Command) ins Spiel.

Das ist möglich, wenn sich die Dokumente mit einem Befehl aus dem Archiv exportieren lassen.

Als Suchkriterien werden Werte aus der SPLF entnommen und in Indizes mit Mehrfachvorkommen gesammelt. Enthält z.B. eine Mahnung eine Liste von 3 unbezahlten Rechnungen, ist ein Index &RECHNR mit Mehrfachvorkommen vorhanden. Am Ende der SPLF Verarbeitung gibt es dann 3 Vorkommen des Wertes Rechnungsnummer, obwohl es nur den einen Index gibt.

Zusätzlich wird man dann noch weitere Indizes mit Mehrfachvorkommen für das Rechnungsdatum, den angemahnten Betrag und das Währungskennzeichen definieren. Damit ergibt sich die Option, statt einer aus der SPLF generierten PDF Datei eine gestaltete HTML Seite mit einer Tabelle der Mahnpositionen an die Email anzuhängen.

Durch die Nutzung der Möglichkeit, die Rechnungskopien als PDF Dateien gleich als Anhang der Email mitzuliefern, ergibt sich eine Effizienzsteigerung. Die typische Reaktion des Empfängers „Die Rechnung kenne ich gar nicht, bitte schicken Sie mir diese…" wird dadurch kaum noch auftreten und die Buchhaltung entlasten.

Voraussetzungen

  • DirectSpool/DirectMail ab Version 5.60 PTF 05
  • Toolmaker Lizenz für DirectSpool / Automail (ATM)
  • Spooldateien mit SCS Datenstrom (Standard)
  • Exportbefehl für PDF Dokumente aus dem Archivsystems existiert
  • Code XRTVPDF in der Automailbeschreibung ist einzugeben

Einschränkungen

  • Die Nutzung der Funktion XRTVPDF ist nur bei Emailversand sinnvoll
  • Export der nach PDF konvertierten SPLF ins IFS und deren Archivierung ist nicht möglich

Indizes mit Mehrfachvorkommen definieren

Die grundsätzlichen Schritte zur Definition einer Spoolverarbeitung mit DirectSpool werden hier als bekannt vorausgesetzt.

Nach Aufruf des Befehls WRKATMDEF (Mit Automaildefinitionen arbeiten), können Indizes definiert oder bereits vorhandene Indizes angepasst werden.

Das obige Bild zeigt einen Ausschnitt der SPLF im Bereich der Postenzeilen einer Mahnung.

Die blau markierten Werte sollen als Indizes mit Mehrfachvorkommen definiert werden. In diesem Beispiel gibt es 2 Vorkommen je Spalte. Z.B. stehen unter „Rechn.Nr." die Werte 200730 und 200731.


Das obige Bild zeigt einen Ausschnitt aus der Mahnung oberhalb der Postenzeilen.

Zur Orientierung auf den einzelnen Seiten der SPLF werden die Kopfdaten Kunden-Nr. und Seiten-Nr. verwendet (hier in blau dargestellt). Die Kundennummer dient als Merkmal zur Aufteilung der SPLF in einzelne Belege (Segmente). Die unterstrichene Seitennummer ist ein Prompt (eine Bedingung), welche steuert, ob auf der Seite Indexwerte entnommen werden sollen.

Über das Menü Index im Kopf der Anzeige wird jetzt die Definition der Indizes angesteuert. Mit der Tabulatortaste gelangen wir zu Index und mit Enter öffnen wir das Menü. Wir wählen dann den Punkt „Mit Indizes arbeiten" aus. Dann wird in der Definition die Liste der bereits  vorhandenen Indizes angezeigt:

Bitte beachten Sie die Zeilen RECHNR, RECHDAT und RECHBETR. Es kommt hier auf die Spalten Grp-Index und W an. Die Detailanzeige von RECHNR (erreichbar mit Auswahl 2) folgt…



Hier sind mehrere Parametereinstellungen wichtig:

  • Mehrfachvorkommen = J
  • Gruppenindex = KDNR
  • Gruppenwechsel-Index = J
  • Prompt Mask = ######
  • Scan Start Zeile / Spalte = 1 / 19
  • Scan Ende Zeile / Spalte = 70 / 19

Das J bei Mehrfachvorkommen sorgt dafür, dass alle Rechnungsnummern in Spalte 19 in der Länge 6 in allen Zeilen und Seiten des Belegs eingesammelt werden, die ab Zeile 1 bis Zeile 70 gefunden werden, wobei die Prompt Mask mit ###### sicherstellt, dass hier ein 6-stelliger numerischer Wert steht.
Der Gruppen Index KDNR zusammen mit dem J bei Gruppenwechsel-Index wird als Hauptindex benötigt, um innerhalb der HTML Vorlage die Steuerung zum Aufbau der Tabelle mit den Postenzeilen zu ermöglichen. Das bedeutet, wenn sich die Kundennummer ändert, wird die Tabelle abgeschlossen. Dazu finden Sie unten einen eigenen Abschnitt (HTML Seite als Mailbody ausgeben).


Es bleibt noch zu klären, welche Indizes mit Mehrfachvorkommen in einer Tabellenzeile nebeneinander angeordnet werden sollen. Dazu gehört natürlich das Rechnungsdatum im Index RECHDAT:

Hier sind mehrere Parametereinstellungen wichtig:

  • Mehrfachvorkommen = J
  • Gruppenindex = RECHNR
  • Gruppenwechsel-Index = N
  • Prompt Mask = ######
  • Scan Start Zeile / Spalte = 1 / 19
  • Scan Ende Zeile / Spalte = 70 / 19

Das J bei Mehrfachvorkommen sorgt dafür, dass alle Datumsinformationen in Spalte 6 in der Länge 8 in allen Zeilen und Seiten des Belegs eingesammelt werden, die ab Zeile 1 bis Zeile 70 gefunden werden, wobei die Prompt Mask mit ###### wieder sicherstellt, dass an Stelle 19 ein 6-stelliger numerischer Wert steht (die Rechnungsnummer).

Der Gruppen Index RECHNR zusammen mit dem N bei Gruppenwechsel-Index wird als Zeilenindex benötigt, der von der Rechnungsnummer abhängig ist.

Das bedeutet, wenn sich die Rechnungsnummer ändert, wird die Zeile abgeschlossen und eine neue Tabellenzeile begonnen.

Die Indizes Rechnungsbetrag RECHBETR und Währungskennzeichen WKZ werden analog zu dem Index Rechnungsdatum RECHDAT definiert. Die Promptmaske mit Länge 6 und die Positionen und Scanbereiche darunter sind hier immer gleich. Die Angaben Zeile/Spalte/Länge für den Indexwert im oberen Teil des Bildes richten sich nach der Position des Wertes in der ersten Postenzeile.

Im Ergebnis könnte die Tabelle in der HTML Seite der Email so aussehen:


Funktion XRTVPDF nutzen

Wie anfangs unter den Voraussetzungen erwähnt, muss die Funktion XRTVPDF aktiviert werden, indem der Code XRTVPDF in die Zeile der Automailbeschreibung eingefügt wird:

Beispiel:

MAHNTMS Mahnungen Toolmaker HW XRTVPDF

Dieser Code sorgt dafür, dass der Archivierungsbefehl im Menü Spool, Auswahl Export eine andere Bedeutung erhält. Hier wird nämlich jetzt der Befehl angegeben, der die gewünschte Rechnungs-PDF aus dem Archiv holt und im IFS bereitstellt.


In diesem Beispiel wird der Befehl EXPARCDOC aus dem Toolmaker Produkt directarchiv verwendet. Die Parameter enthalten Konstanten und Index-Variablen (z.B. &RECHNR)

  • DIRARC/EXPARCDOC ist der Befehl, der in der Bibliothek DIRARC zu finden ist (qualifizierte Schreibweise zur Fehlervermeidung).
  • ARCHIVE bestimmt das Archiv mit den Rechnungsausgangs-PDFs, hier GSSPOST
  • OBJ gibt das temporäre IFS Verzeichnis zusammen mit dem variablen Namen der PDF Datei an. Im Beispiel wird der Name mit dem Sprachenindex &ININTX gekoppelt, so dass je nach Land und Sprache der Begriff Rechnung, Invoice oder Facture gefolgt von der Rechnungsnummer eingesetzt wird.
  • REPLACE *YES sorgt für das automatische Überschreiben einer bereits früher mal bereitgestellten Rechnungs-PDF.
  • INDEX enthält die Liste der Suchbegriffe mit dem jeweiligen Indexwert. TEXT ‚&RECHNR' bedeutet, suche in der Archivspalte TEXT nach dem Wert der sich gerade im Index &RECHNR befindet. Es ist hier wichtig, dass die Suche im Ergebnis nur einen Treffer landet. Danach wird die gefundene PDF Datei mit dem gewünschten Namen ins IFS ausgegeben.

Hinweis: Der beschriebene Befehl stellt die PDF Dateien lediglich bereit, er ist nicht für das Anhängen der PDF Dateien zuständig. Dafür gibt es seit längerer Zeit die Funktion Email Anhänge (EA). Diese wird nachfolgend beschrieben.

Email Anhänge (EA)

Normalerweise wird die ursprüngliche SPLF in eine PDF Datei konvertiert und als Anhang der Email versendet. Will man zusätzliche Belege anhängen, die mit dem Inhalt der SPLF in Beziehung stehen, kommt man mit F9 + EA oder über das Menü Email, Menüpunkt Email Anhänge zur Anzeige Mit DirectSpool Anhängen arbeiten


Die zweite Zeile (…DirectMail400/temp/…) ist zuständig für das Anhängen der zusätzlichen PDF Dateien. Mit Auswahl 2 vor der Zeile kommt man zu der Anzeige AutoMail Attachment ändern.


Der hier gezeigte IFS Pfad entspricht exakt dem Inhalt von Parameter OBJ im oben besprochenen Archivierungsbefehl. Das J bei Datei löschen bereinigt das IFS Verzeichnis, nachdem die jeweilige PDF Datei an die Email angehängt wurde.

Die anfangs definierten Eigenschaften wie z.B. Mehrfachvorkommen=J bei dem Index &RECHNR werden in der Ausführungsphase automatisch berücksichtigt, d.h. jedes Vorkommen einer Rechnungsnummer in der Postenliste der SPLF führt zum Anhängen der entsprechenden PDF Datei.

Hinweis: Sollte der Anhängevorgang einer PDF Datei scheitern, weil diese z.B. im Archiv nicht gefunden wurde und daher nicht im IFS vorhanden ist, wird das übergangen und eine Info an QSYSOPR gesendet (MSG ERR0400 enthält den betreffenden Exportbefehl incl. aller Parameter). Die Gesamtverarbeitung der SPLF incl. aller folgenden Dokumente darf gestört oder abgebrochen werden.

HTML Seite als Mailbody ausgeben

Besteht die Anforderung, dem Empfänger der Email beim Öffnen sofort eine gestaltete Webseite evtl. mit persönlicher Anrede, mit Kundennummer und einer Liste der Rechnungen anzuzeigen, ohne dass er dazu einen Anhang öffnen muss, wird hier eine Lösung beschrieben. Man nennt diese Methode Alternative Anzeige eines Emailanhangs und sie kann unabhängig von Funktion XRTVPDF verwendet werden.

Die Konvertierung der ursprünglichen SPLF in ein PDF Dokument wird jetzt nicht mehr benötigt. Abschalten kann man die Konvertierung im Menü Email, Auswahl Ausgabeformat und dem Wert *NONE

Ausgabeformat . . . . . . . . . *NONE

Man verwendet als Basis eine HTML Seite, die den gewünschten konstanten Text und darin eingemischt Platzhalter für Indexwerte aus der SPLF enthält. Es können aber auch Indexwerte eingemischt werden, die aus einem SQL-Zugriff auf eine Datenbankdatei stammen.

Solch eine HTML-Seite kann z.B. mit MS Word erstellt werden. Für das Editieren des fertigen HTML Codes mittels Notepad++ ist die Kenntnis von HTML Strukturen erforderlich.

Für das Übertragen der gesammelten Indexwerte in die HTML Struktur wird die Funktion Suchen/Ersetzen verwendet. Ausgangspunkt ist wieder das Bild Mit DirectSpool Anhängen arbeiten:

Die erste Zeile (…ail400/GSS/versand/…) ist zuständig für das Anhängen der HTML Datei und das Einsteuern der Indexwerte.


Mit Auswahl 2 vor der Zeile kommt man zur Anzeige AutoMail Attachment ändern


Der hier gezeigte IFS Pfad bestimmt den Weg und den Namen der HTML Vorlage.

Der Name kann wiederum einen Index (hier &K4MTM) enthalten, der eine Sprachensteuerung erlaubt. In &K4MTM steht z.B. ein D für Deutsch.

Das J bei Parameter Alternativ Text steuert wie oben schon erwähnt, die sofortige Anzeige des HTML Anhangs als Mailbody.

Zunächst werfen wir einen Blick auf den HTML Code, um zu schauen, wie die Ersatzparameter mit den Rechnungsdaten in der Tabelle eingebettet sind.

Das Bild stammt aus einer Editierung der HTML Datei MAHNMAILD.htm mittels Notepad++.

Die graue Spalte ganz links zeigt die Zeilennummern.

Die Zeilen 559 bis 568 zeigen Teile der Definitionen zum Anzeigen der Tabellenüberschrift. Das ist z.B. erkennbar an der Spaltenbezeichnung >Währung< in Zeile 566.

Die Zeile 569 mit <!-STARTLIST-> ist eine sehr wichtige Markierung im Datenstrom des HTML Codes. Sie wurde manuell eingefügt und steht vor der Definition der Tabellenspalten mit den Ersatzparametern. Zeile 569 ist eine Kommentarzeile, die vom Browser nicht angezeigt wird. Die Funktion Suchen/Ersetzen sucht nach dieser Markierung und beginnt ab hier mit dem Suchen und Ersetzen der Ersatzparameter wie z.B. %RECHNR% in Zeile 574.


Dies Bild zeigt den Abschluss der Tabellenverarbeitung.

Die Zeile 597 mit <!-ENDLIST-> ist die zweite wichtige Markierung im Datenstrom. Auch sie wurde manuell eingefügt und steht unterhalb der Definition der Tabellenspalten. Zeile 597 ist eine Kommentarzeile, die vom Browser nicht angezeigt wird. Die Funktion Suchen/Ersetzen hört mit dem Suchen und Ersetzen der Ersatzparameter innerhalb der Tabelle hier auf.

Zeile 598 beendet mit </table> die Tabellendefinition. Dadurch ist der Punkt für das Einfügen der ENDLIST Markierung relativ leicht zu finden.

Suchen/Ersetzen im HTML Text

Nach dem Ausflug in die HTML Welt müssen wir der Funktion Suchen/Ersetzen mitteilen, welcher Indexwert welchem Ersatzparameter zugeordnet werden soll.

Ausgangspunkt ist wieder das Bild Mit DirectSpool Anhängen arbeiten:

Die erste Zeile (…ail400/GSS/versand/…) kann jetzt mit der Option 8 Suchen/Ersetzen bearbeitet werden.


Es wird die Liste der Ersatzwerte gezeigt. Hier kann bei Bedarf der Suchwert und der zugehörige Index erfasst werden. In dem Beispiel wird %KDNR% im HTML gesucht und nach einem Treffer durch den Wert des Index &KDNR ersetzt.

Achtung: Diese Liste betrifft nur Werte, die sich außerhalb von Tabellen befinden, also z.B. die Kundennummer im Textteil der HTML-Seite. Die hier verwendbaren Indizes haben i.d.R. keine Mehrfachvorkommen, wenn doch, wird nur das erste Vorkommen verwendet.

Suchen/Ersetzen in Tabellen

Nach dem recht einfachen Suchen und Ersetzen für Einzelindizes müssen wir noch definieren, wie die Markierungen für Start und Ende der Tabelle heißen und welcher Indexwert mit Mehrfachvorkommen welchem Ersatzparameter zugeordnet werden soll.

Ausgangspunkt ist wieder das Bild Mit DirectSpool Anhängen arbeiten:

Die erste Zeile (…ail400/GSS/versand/…) kann jetzt mit der Option 9 Listenbereiche bearbeitet werden.


Wenn im HTML Tabellen verwendet werden, muss für jede Tabelle ein Listenbereich erfasst werden.

Wie schon bei der Diskussion des HTML Codes gezeigt, benötigt die Suchen/Ersetzen Funktion Markierungszeilen, um den variablen Tabellenbereich im Datenstrom zu finden. Das Beispiel oben zeigt die erforderlichen Strings und den Namen des Gruppenindex. Mit Taste F6 kann ein neuer Listenbereich erfasst und mit 2 ein vorhandener Eintrag bearbeitet werden.

Natürlich müssen die Zeichenfolgen exakt mit den im HTML Datenstrom verwendeten Markierungen übereinstimmen.

Wird eine zweite Tabelle benötigt, könnten die Markierung z.B. so lauten:


<!--STARTLIST2--> und <!--ENDLIST2-->

Um die Ersatzwerte und Indizes für die jeweilige Tabelle zu definieren, muss die Auswahl 8 in dem folgenden Bild verwendet werden. Bitte diese Auswahl nicht mit der für die Einzelwerte im HTML Text verwechseln!

Es wird eine Liste der Ersatzwerte gezeigt. Hier können mit Taste F6 Suchwerte und Indizes mit Mehrfachvorkommen erfasst werden, die im Bereich der jeweiligen Tabelle gültig sind.

In dem Beispiel wird %RECHNR% im HTML gesucht und nach jedem Treffer durch den aktuellen Wert des Index &RECHNR ersetzt, d.h. nach jedem Treffer wird der nächste Wert aus der Liste der Mehrfachvorkommen verwendet.

Die Tabelle im obigen Beispiel enthält 4 Spalten (Rechnungsnummer, Rechnungsdatum, Rechnungsbetrag und Währungskennzeichen). Die Notwendigkeit einer weiteren Tabellenzeile erkennt das Programm am Wechsel des Gruppenindex RECHNR.

Nach Auswahl 2 vor einem Eintrag wird folgendes Bild angezeigt:

Achtung: Parameter Mehrfachvorkommen muss auf N stehen.