Import fremder Textdateien

Der Datenaustausch zwischen unterschiedlichen Buchhaltungsprogrammen oder Zusatzprogrammen für Buchhaltung (Lohnbuchhaltung, Warenwirtschaft usw.) und der Buchhaltung geschieht üblicherweise über Textdateien. In diesem Kapitel wird beschrieben, wie Sie von fremden Programmen generierte Textdateien beliebiger Form in eine von TEXTBUCH lesbare Form umwandeln können. Diese Funktionalität wurde in TEXTBUCH 3.98 hinzugefügt.

Wenn das fremde Programm über eine flexible Exportschnittstelle verfügt, dann können Sie gleich die Daten so generieren lassen, dass TEXTBUCH diese von vornherhein akzeptiert. In diesem Fall ist die hier beschriebene Funktionalität für Sie nicht weiter von Interesse. Wenn das fremde Programm eine solche Flexibilität jedoch nicht aufweist, kann es erforderlich sein, die vom fremden Programm erzeugten Textdateien noch zu konvertieren, bevor sie von TEXTBUCH interpretiert und weiterverarbeitet werden.

In TEXTBUCH gibt es einen kleinen Satz von Stern-Kommandos, den Sie entweder in eine Buchungssatz-Datei oder in ein Skript schreiben können. Wenn Sie diese Befehle in die Buchungssatz-Datei schreiben, so findet mit jedem Verarbeiten und somit Einlesen der Buchungssätze die Konvertierung erneut statt. Wenn Sie dagegen die Konvertierung einmalig stattfinden lassen möchten, z.B. beim Übertragen des Kontenplans von einem fremden Buchhaltungsprogramm in TEXTBUCH, so schreiben Sie diese Befehle in ein spezielles Skript, das Sie nur einmalig verarbeiten lassen, um dann von Hand das Ergebnis weiter zu bearbeiten.

Es gibt speziell für den Import von Fremddaten die vier Stern-Kommandos ***Fremdformat, ***Eigenformat, ***tausche und ***Importiere. Die Form und Reihenfolge der Daten lässt sich mit ***Eigenformat und ***Fremdformat festlegen. So kann bei Buchungssätzen im Fremdformat zuerst das Datum und dann die Belegnummer vorliegen, durch Semikolon getrennt, während TEXTBUCH (das "Eigenformat") zuerst den Beleg und dann das Datum verlangt, getrennt durch Leerzeichen. Mit ***tausche können Sie bestimmte Zeichen oder ganze Wörter austauschen lassen, z.B. das Kürzel für die Standardbehandlung der Mehrwertsteuer eines Kontos, oder einen Dezmialpunkt in ein Dezimalkomma. Mit ***Importiere findet dann die eigentliche Konvertierung statt, wobei hier der Dateiname der Fremddatei angegeben wird.

Tipp: Wenn Sie den Kontenplan von Ihrem Steuerberater erhalten und dieser Datev verwendet, dann macht ein Import über das Datev-Format keinen Sinn, weil die Erklärungstexte der Konten zu stark abgekürzt werden. Lassen Sie sich stattdessen eine PDF-Datei mit möglichst ausführlichen Konto-Erklärungstexten geben und kopieren Sie diese über die Zwischenablage nach KONTPLAN.TXT. Mit Acrobat Reader können Sie mit gedrückter Strng-Taste auch Spalten markieren.

***Fremdformat
***Eigenformat

Die zwei Befehle ***Fremdformat bzw. ***Eigenformat müssen immer gemeinsam verwendet werden, wobei die Reihenfolge keine Rolle spielt, Sie müssen auch nicht direkt untereinander, aber vor dem Befehl ***Importiere stehen.

Hinter beiden Befehlen dürfen beliebige Zeichenfolgen stehen, in denen Variablen eingestreut sind. Variablen sind beliebige Namen, die entweder in geschweiften oder in eckigen Klammern stehen. Die Variablennamen dürfen beliebige Zeichen enthalten.

Ein einfaches Beispiel:


***Fremdformat [1];[2];[3] ***Eigenformat [3] [2] [1]

Wird in der zu importierenden Textdatei ("Fremdformat") folgende Zeile eingelesen:


abc;def;ghi


so wird diese Zeile umgewandelt in

ghi def abc

Findet TEXTBUCH hinter ***Eigenformat nicht dieselben Variablenbezeichner wie hinter ***Fremdformat, so wird eine Fehlermeldung ausgegeben. Sie dürfen jedoch Variablen selektiv importieren, d.h. hinter ***Eigenformat müssen nicht unbedingt alle Variablennamen auftauchen, die hinter ***Fremdformat verwendet worden sind.

Innerhalb der Variablennamen spielt Groß- und Kleinschreibung keine Rolle.

Eckige und geschweifte Klammern

Es kann erforderlich sein, hinter ***Fremdformat oder ***Eigenformat eine eckige Klammer zu verwenden, die eine Bedeutung als Zeichen an sich hat, z.B. um TEXTBUCH Gegenstandsbezeichner in Buchungssätzen anzugeben. In diesem Fall müssen Sie vor die eckige bzw. geschweifte Klammer einen Backslash \ schreiben:


***Eigenformat {BUDATUM} {BUTEXT} \[{GEG}\]

***tausche

Es kann vorkommen, dass auch nach einer Umsortierung der Daten diese noch nicht mit TEXTBUCH kompatibel sind. So kann es erforderlich sein, ganze Wörter oder zumindest einzelne Zeichen auszutauschen:


***** 1 2 3 4 5 6 ***tausche bei {XYZ} Wort/Zeichen VORHER gegen NACHHER

Hinter ***tausche sind nur ganz bestimmte Parameter zulässig, und zwar immer 6 Stück, getrennt durch Leerzeichen. Die Wörter "bei" und "gegen" sind fix und führen zu einer Fehlermeldung, wenn sie nicht an der richtigen Stelle verwendet werden.

An der zweiten Stelle wird ein Variablenname incl. eckiger bzw. geschweifter Klammer geschrieben, der bei ***Fremdformat und ***Eigenformat verwendet wird. Der Austausch von Zeichen findet nur bei der angegebenen Variablen statt.

An dritter Stelle sind nur die Begriffe "Wort" oder "Zeichen" zulässig.

An vierter Stelle steht das Wort bzw. Zeichen, das ausgetauscht werden soll und an sechster Stelle das Wort bzw. Zeichen, das stattdessen verwendet werden soll. Wird "Zeichen" gewählt, so werden alle Vorkommnisse des Zeichens gegen das andere Zeichen ausgetauscht.

Beispiele:


***tausche bei {NBetrag} Zeichen . gegen ,

tauscht alle Punkte bei {NBetrag} gegen Kommas aus.


***tausche bei [M] Wort 1 gegen (v) ***tausche bei [M] Wort 0 gegen (o) ***tausche bei [M] Wort 2 gegen (h)

tauscht z.B. in einem Kontenplan die Ziffer eins gegen die Zeichenfolge "(v)" aus, die in TEXTBUCH für ein Konto steht, bei dem die volle Mehrwertsteuer verbucht wird usw.

Wenn ein auszutauschender Ausdruck Leerzeichen enthält, müssen Sie den Ausdruck in "Gänsefüßchen" setzen, damit die Parameter-Zählung von eins bis sechs weiterhin stimmig ist.

Wird der Befehl ***Fremdformat verwendet, so löscht dies die aktuelle Tausch-Liste. das heißt Sie müssen ***tausche immer nach dem Befehl ***Fremdformat verwenden.

***importiere Dateiname

Beim Stern-Kommando ***importiere findet die eigentliche Konvertierung statt. Hier wird lediglich der Dateiname der Fremddatei angegeben, die eingelesen bzw. konvertiert werden soll. Steht dieser Befehl in einer Buchungssatzdatei, so wird gar keine Datei im Eigenformat erzeugt, sondern es werden direkt die umgewandelten Zeilen weiterverarbeitet. Spürt TEXTBUCH einen logischen Fehler auf, so wird der Fehler im unteren Fehlerfenster des TEXTBUCH-Hauptfensters aufgelistet und per Doppelklick die entsprechende Zeile der Fremddatei im Editor angesprungen, also wie bei einer normalen TEXTBUCH Buchungssatzdatei oder einer Stückliste.

Wird dagegen der Dateiname im Skript verwendet, so findet nur eine rein mechanische Konvertierung der Daten statt. Davor muss mit dem in Skripten üblichen Befehl ***Datei eine Ausgabedatei angemeldet werden:

***Datei Neuer-Kontplan.txt
***importiere Kontenrahmen.csv

Da die zwei Befehle in der genannten Reihenfolge abgearbeitet werden, erscheint im Fortschrittsfenster zuerst "schreibe Neuer-Kontplan.txt" und darauf erst "importiere Kontenrahmen.csv", was auf den ersten Blick verwirrend sein kann. In Wirklichkeit findet das Lesen und Schreiben gleichzeitig statt.

***importiere Dateiname.txt ab Zeile 4

Häufig stehen in fremden Textdateien in den ersten Zeilen Dinge, die für die Konvertierung nicht gedacht sind. In diesem Fall dürfen Sie hinter den Dateinamen noch "ab Zeile" schreiben, gefolgt von einer Zahl.

***importiere Dateiname.txt Zeichensatz IBM

Ist die fremde Textdatei mit dem für Ihr Betriebssystem fremden Zeichensatz geschrieben, so dürfen Sie noch "Zeichensatz" anfügen, gefolgt von IBM für den IBM/OEM/DOS Zeichensatz oder WIN für den ANSI-Zeichensatz.

"Ab Zeile" und "Zeichensatz" dürfen auch kombiniert verwendet werden, wobei die Reihenfolge keine Rolle spielt, allerdings müssen die Paramter immer rechts vom Dateinamen stehen.

Zur Bedeutung der Variablennamen

Wenn Sie sich mit TEXTBUCH Skripten schon auskennen, so wird Ihnen die Bedeutung der eckigen und geschweiften Klammern bewußt sein: TEXTBUCH Variablennamen werden in Skripten in eckige bzw. geschweifte Klammern gesetzt. Dies ermöglicht Ihnen, dieselbe Zeichenfolge für den Export in das Fremdprogramm wie für den Import aus dem Fremdprogramm heraus zu benutzen, auch wenn hier die Variablennamen keine weitere Bedeutung bzw. Funktion haben.

Wenn Sie den konkreten Variablennamen {Budatum} oder {FDatum} oder {Datum} in geschweiften Klammern verwenden, so wird das Fremddatum automatisch ins TEXTBUCH Format TT.MM.JJ umgewandelt. Akzeptiert werden in diesem Fall als Fremdformat einstellige Tage und Monate sowie vierstellige Jahreszahlen, was üblicherweise bei TEXTBUCH nicht zulässig ist.

In allen anderen Fällen interessiert sich TEXTBUCH aber nicht für die konkreten Variablennamen; sie müssen lediglich darauf achten, dass alle bei ***EIGENFORMAT verwendeten Variablennamen auch bei ***FREMDFORMAT verwendet wurden.

Beispiel

Im TEXTBUCH-Programmpaket ist eine Skriptdatei für den Export enthalten, die Buchungssätze im GDPdU-Format abspeichert. Darin taucht folgende Zeile auf:


---Ausschnitt aus GDPdU.skt-----

{BUDATUM};{BELEG};{SKNR};{HKNR};{M};{BBETRAG};{BUTEXT} --------------------------------

In dieser Zeile wird festgelegt, wie und in welcher Reihenfolge die Buchungsdaten geschrieben werden können. Im folgenden Skript werden die von TEXTBUCH exportierten Buchungssätze testweise wieder ins eigene Format zurückkonvertiert:


***Fremdformat {BUDATUM};{BELEG};{SKNR};{HKNR};{M};{BBETRAG};{BUTEXT} ***Eigenformat {Beleg} {BuDatum} {BUTEXT} {SKNR}:{HKNR} {M} {BBETRAG}

***tausche bei {M} Wort V gegen v ***tausche bei {M} Wort O gegen o ***tausche bei {M} Wort H gegen h ***Datei Eigenformat.txt ***importiere Fremdformat.txt ab Zeile 3

Bei Fremdformat wurde einfach die Zeile aus dem Export-Skript kopiert. Unter Eigenformat wird in allgemeingültiger Form die Formatierung beschrieben, wie Sie sie von den TEXTBUCH Buchungssatzdateien her kennen. Die Buchstaben V, H und O werden aber gegen die jeweiligen Kleinbuchstaben ausgetauscht. Da im gewählten GDPdU-Format die ersten zwei Zeilen Kommentarzeilen sind, sollen die Buchungssätze erst ab der dritten Zeile eingelesen werden.

Alles klar?

Wenn Sie fremde Buchungssätze erstmalig importieren wollen, ist es ratsam, dies erst einmal über ein Skript zu machen, weil Sie dann die konvertierte Version als Textdatei vorliegen haben. Wenn Sie die genannten Befehle in der Buchungssatz-Datei verwenden (natürlich unter Weglassung des Skript-Befehls ***Datei), so werden die konvertierten Zeilen direkt weiterverarbeitet und Sie können das Ergebnis nur indirekt über die ANE-Dateien ansehen.

Für den Fall, dass Sie nicht in der Lage sind, fremde Programmdaten in TEXTBUCH einzulesen, bedeutet dies nicht unbedingt, dass dies an Ihnen liegt. Es ist durchaus möglich, dass eine bestimmte Konvertierung mit dem hier vorgestellten Befehlssatz noch nicht vollständig möglich ist. In diesem Fall wenden Sie sich bitte per E-Mail an uns mit einer Handvoll Beispielszeilen des Fremdformates. Wir helfen Ihnen, die passende Konvertierung zu schreiben und werden ggfs. noch fehlende Konvertierungs-Befehle in die nächste TEXTBUCH Version einbauen. In künftigen TEXTBUCH Versionen würden wir gerne fertige Konvertierungsskripte anbieten, aber hierfür benötigen wir Ihr Feedback!