- 13 May 2024
- 3 Minutes to read
- Print
- DarkLight
- PDF
Erstellung einer Datei
- Updated on 13 May 2024
- 3 Minutes to read
- Print
- DarkLight
- PDF
Pfad und Name
Prinzipiell kann der Stammdatenentwickler die Datei an einer beliebigen Stelle ablegen. Für die Schnittstellen gibt es jedoch einen genormten Pfad sowie einen genormten Dateinamen welcher in den Schnittstellen eingestellt ist.
Pfad: „SessionTemp“ – Verzeichnis
Dateiname: <Belegnummer>_<Positionsnummer>.prt
Dafür werden folgende Variablen verwendet:
Pfad: TEMPDIR
Belegnummer: P_ORDID
Positionsnummer: P_POSID
Im Makro wird dies dann wie folgt geschrieben:
TEMPDIR + P_ORDID + „_“ + P_POSID + „.prt“
Zeitpunkt der Stücklistengenerierung
Die Stückliste kann in der Konfiguration zu jedem Zeitpunkt generiert werden. Es ist jedoch üblich diese am Ende der Konfiguration (Abschlussmakro) durchzuführen damit der Änderungsdienst während der Konfiguration keine Probleme macht.
Aus Performancegründen muss der Stammdatenentwickler jedoch darauf achten, dass die Stücklisten nicht bei den Händlerstammdaten generiert werden da sich dies negativ auf die Performance auswirken würde.
Um dies zu unterdrücken ist es wichtig die Variable STUELI nur dann einzuschalten wenn der OWNER richtig gesetzt ist. Zusätzlich ist es auch sinnvoll, dass die Stückliste nur dann generiert wird wenn der Auftrag über das Batchsystem läuft da bei der Erfassung vom Innendienst dies ja nicht benötigt wird. Hier ist es am einfachsten wenn man auf den USER = "cmnsys" prüft.
Prozeduren für Erstellen und Füllen der Datei
Am einfachsten ist es für diese Funktionen eine allgemeine Prozedur zu schreiben. Für die Dateierstellung werden folgende Befehle verwendet:
OPEN | Mit diesen Befehl wird eine Datei vom Programm geöffnet, Dieser Befehl benötigt noch folgende Anweisungen: Dateiname: Es muss angegeben werden welcher Dateiname verwendet wird. FOR OUTPUT: Mit dieser Anweisung wird die Datei geschrieben. Dies wird benötigt wenn die Datei noch nicht existiert. Falls diese schon existiert dann wird die bestehende Datei gelöscht und neu geschrieben FOR APPEND: Mit dieser Anweisung wird ein Inhalt in die Datei gefüllt. Bei jeder Anweisung wird automatisch in einer neuen Zeile begonnen. AS #X: Mit dieser Anweisung wird der Kanal definiert über welche auf die Datei zugegriffen wird. An der Stelle von "X" kann eine Zahl von 1 - 9 gefüllt werden. Für das Programm ist dies sozusagen die Verbindung zur Datei. Beispiel: OPEN "20120012_100prt" FOR OUTPUT AS #1 |
Dieser Befehl verwendet um eine Zeile Inhalt in die Datei zu schreiben. Beispiel: PRINT #1, "20120010;00;1;1000;2000" | |
CLOSE | Nach jedem Schreibvorgang muss die Datei wieder geschlossen werden da diese ansonsten dauerhaft von moveIT ISS+ im Zugriff bleibt. Beispiel: CLOSE #1 |
Beispiel einer allgemeinen Prozedur:
!RUN STUELI\McrStkLst.WriteLineToFile(acFilename, 0, "")
PROCEDURE WriteLineToFile
DEFINE PARAMETER acFilename, nModus, acline
CASE nModus
WHEN 0 DO BEGIN
OPEN acFilename FOR OUTPUT AS #1
PRINT #1, acLine
CLOSE #1
END
WHEN 1 DO BEGIN
OPEN acFilename FOR APPEND AS #1
PRINT #1, acline
CLOSE #1
END
OTHERWISE
OPEN acFilename FOR APPEND AS #1
PRINT #1 acLine
CLOSE #1
END
END
END
Beschreibung:
Diese Prozedur wird Zeilenweise aufgerufen. Durch die Variable nModus wird angegeben ob die Datei erstellt wird oder eine neue Zeile hinzugefügt wird. In der Variable acFilename wird der Dateiname übergeben welcher zuvor definiert wird. In der Variable acLine befindet sich der Text welcher in die Zeile geschrieben wird.
Erstellung eines Logfiles
Im Bereich Stücklistengenerierung ist es oft sehr wichtig den Vorgang in einer Logdatei zu protokollieren. Dies ist gerade wenn Übersetzungen durchgeführt oder Arrays verwendet werden enorm wichtig für die Fehlersuche.
Dir Vorgehensweise bei der Logdatei ist ähnlich wie bei der Erstellung der Stücklistendatei. Es wird eine Datei erzeugt in welcher die Vorgänge inhaltlich dokumentiert werden. Meist werden die Logfiles im Makroverzeichniss unter einem eigenen Ordner „Logfile“ abgelegt.
Für die Erstellung der Logdatei sind folgende Inhalte empfohlen welche teilweise in Systemvariablen abgelegt sind.
DATE$ | Heutiges Datum |
TIME$ | Aktueller Zeitpunkt |
WARVRS | Warenversionsnummer |
P_POSID | Positionsnummer |
WS_NBR | Warenstammmodell |
Status | In der Regel werden 3 unterschiedliche Statusebenen geführt
|
Loglevel | Den Loglevel kann man von 1 bis 3 setzen. Im Logfile wird dann folgendes angezeigt:
|
Prozedur | Aktuelle Prozedur in welcher der Logfileeintrag geschrieben wird |
Aktionsbeschreibung | Hier soll der Text in das Logfile geschrieben werden. Je genauer der Text geschrieben wird desto einfacher ist dies für die Fehlersuche. |
Weitere Funktionen: Abfrage ob Datei existiert
Aus dem McrInt besteht auch die Möglichkeit abzufragen ob eine Datei bereits existiert. Für diese Überprüfung wird folgender Befehl benötigt:
FILEEXISTS
Beispiel:
IF FILEEXISTS("C:\Temp\TestStueli00000.prt") = TRUE THEN MESSAGE "Datei existiert"