Erstellung einer Datei
  • 13 May 2024
  • 3 Minuten zu lesen
  • Dunkel
    Licht
  • pdf

Erstellung einer Datei

  • Dunkel
    Licht
  • pdf

Artikel-Zusammenfassung

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

PRINT

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

  • "ERR"" - Error (Bei Fehler welche nicht zulässig sind)

  • "WAR" - Warning (Kein Fehler jedoch Hinweis für SD Entwickler)

  • "OK" - Fehlerfrei (Zeile welche problemlos funktioniert hat)

Loglevel

Den Loglevel kann man von 1 bis 3 setzen. Im Logfile wird dann folgendes angezeigt:

  • 1: nur Zeilen mit Status "ERR"

  • 2: Zeilen mit Status "ERR" und "WAR"

  • 3: alle Zeilen

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"


War dieser Artikel hilfreich?

What's Next