[FieldParam]
Feld-ID der CGW-Datei = Erster Teil des Schlüssels für Datei 1 (PARAMET.DAT)
Z.B:: PDV111_1_3 = P111-
Zu diesem INI-Eintrag muss noch ein Parametersatz mit dem Schlüssel "P111-Eingabe" geschrieben werden. Also für eine Vorbelegung bei der Eingabe "V", ein Parametersatz mit dem Schlüssel "P111-V".
In dieser Sektion kann für jedes Feld (Feld-ID) innerhalb eines Dialogs der erste Teil des Schlüssels für den Parametersatz hinterlegt werden, in dem (denen) dann die Regeln für die Vorbelegung aus einem Muster mit Nummernkreis beschrieben sind. Die Feld-ID innerhalb des Dialogs kann über INFOSYSTEM - MODULSTATUS abgerufen werden, wenn der Focus auf dem Feld sitzt.
Im obigen Beispiel wird nach der Eingabe im Feld «Teilenummer» (Feld-ID PDV111_1_3) nachgeschaut, ob ein Parameter mit dem Schlüssel "P111-V" existiert. Entsprechend den Angaben aus diesem Parameter (Aufbau siehe unten) wird das Feld vorbelegt.
Für ein Feld können auch mehrere unterschiedliche Vorbelegungen erwünscht sein. Z.B. soll die Teilenummer für Verkaufsteile über einen anderen Nummernkreis laufen als bei Einkaufsteilen. Über die Eingabe V sollen neue Verkaufsteilenummern abgerufen werden und über E neue Einkaufsteilenummern. Laut obigem Beispiel müssen dann die Parameter "P111-V" und P111-E" angelegt werden. Es ist auch zulässig, Leerzeichen als Eingabekürzel zu verwenden, also z.B. nur den Parametersatz "P111- " anzulegen. Die Vorbelegung kann für numerische wie für alphanumerische Felder angelegt werden, wobei darauf zu achten ist, dass bei numerischen Feldern für die Vorbelegung keine alphanumerischen Zeichen verwendet werden können.
Aufbau eines Parametersatzes für die Vorbelegung
|
Position
|
Länge
|
Format
|
Inhalt
| ||||||
|
1
|
8
|
C8
|
Schlüssel aus INI-Angabe + Eingabe (siehe obiges Beispiel P111-V)
| ||||||
|
9
|
11
|
N10
|
Startwert Nummernkreis (Default: 0)
| ||||||
|
20
|
11
|
N10
|
Endwert Nummernkreis (Default: 999999999)
| ||||||
|
31
|
11
|
N10
|
Nächster zu vergebender Wert im Nummernkreis
| ||||||
|
42
|
4
|
N3
|
Inkrement (Default: 1). Um diesen Wert werden die Werte im Nummernkreis nach jeder Eingabe erhöht. Bei negativen Angaben muss Start > Ende sein
| ||||||
|
46
|
3
|
N2
|
Minimale Länge des Werts aus dem Nummernkreis, der eine Multi-Wildcard ersetzt (siehe Position 50; Default: 1)
| ||||||
|
49
|
1
|
C1
|
Single-Wildcard (Platzhalter für genau 1 beliebiges Zeichen aus dem Nummernkreis; Default: #)
| ||||||
|
50
|
1
|
C1
|
Multi-Wildcard (Platzhalter für beliebig viele Zeichen aus dem Nummernkreis; Default: *)
| ||||||
|
51
|
1
|
C1
|
Escape-Zeichen (Default: \)
| ||||||
|
52
|
1
|
C1
|
Füllzeichen (Default: Leerzeichen)
| ||||||
|
53
|
75
|
C75
|
Muster für die Vorbelegung. Das Muster kann auch die Wildcards aus den Positionen 49 und 50 sowie das Escape-Zeichen aus Position 51 enthalten (siehe nachfolgende Beschreibung), Im Muster enthaltene Wildcards werden entsprechend durch einen Wert aus dem Nummernkreis (siehe Position 31) ersetzt. Wenn keine Wildcards enthalten sind, wird fix mit dem angegebenen Muster vorbelegt.
| ||||||
|
128
|
1
|
C1
|
Überlaufsteuerung:
|
Funktionsbeschreibung
Bei der Eingabe in ein Feld wird geprüft, ob in der Datei SIBPPS.INI ein Eintrag in der Sektion [FieldParam] existiert. Ist dies der Fall, wird geprüft, ob für den aus dem INI-Eintrag und dem Eingabewert gebildeten Parameterschlüssel ein Datensatz existiert. Ist dies der Fall, wird das im Parametersatz ab Position 53 angegebene Muster ausgewertet, wobei die im Muster enthaltenen Wildcards (siehe Positionen 49 und 50 im Parameter) durch einen Wert aus dem Nummernkreis ersetzt werden. Sind keine "ungeschützten" Wildcards (Wildcards ohne führendes Escape-Zeichen) im Muster enthalten, erfolgt die Vorbelegung fix mit dem Muster.
Wildcards, vor denen das Escape-Zeichen (Position 51 im Parameter) steht, werden als fix zum Muster gehörend erkannt und nicht ersetzt. Das Escape-Zeichen selbst wird nur für die Vorbelegung verwendet, falls es direkt hinter einem anderen Escape-Zeichen steht.
Das Muster wird von vorne nach einer Wildcard durchsucht. Bei der ersten Wildcard, die nicht hinter einem Escape-Zeichen steht, wird entschieden, ob Single- oder Multi-Wildcard-Behandlung erfolgen soll. Alle weiteren Wildcards und Escape-Zeichen, die hinter der/den zu ersetzenden Wildcard(s) stehen, werden nicht mehr ausgewertet.
Das Muster kann zusätzlich auch alle verfügbaren Makros beinhalten, die in Kapitel infra-Makros beschrieben sind, wie z.B. GV(...) oder INI(...).
Single-Wildcard-Behandlung
Die Länge der Single-Wildcard-Kette wird durch das erste Zeichen nach dem Platzhalter bestimmt, das keine Single-Wildcard ist. Die gesamte Kette aus Single-Wildcards wird durch einen Ausdruck gleicher Länge ersetzt. Dieser Ausdruck wird durch den nächsten zu vergebenden Wert des Nummernkreises (siehe Position 31 im Parameter) gebildet. Wenn die Anzahl Ziffern kleiner ist als die Länge der zu ersetzenden Kette, wird der Ausdruck mit führenden Füllzeichen (Position 52 im Parameter) aufgefüllt. Wenn die Anzahl Ziffern größer ist als die Länge der zu ersetzenden Kette, erfolgt keine Ersetzung. Die Single-Wildcard-Kette bleibt als fixer Bestandteil des Musters erhalten.
Multi-Wildcard-Behandlung
Die Multi-Wildcard wird durch einen Ausdruck ersetzt, der mindestens so lang ist wie es die Angabe in Position 46 im Parameter (minimale Länge) vorschreibt. Dieser Ausdruck wird durch den nächsten zu vergebenden Wert des Nummernkreises (siehe Position 31 im Parameter) gebildet. Wenn die Anzahl Ziffern kleiner ist als die minimale Länge, wird der Ausdruck mit führenden Füllzeichen (Position 52 im Parameter) aufgefüllt.
Besonderheiten bei Single- und Multi-Behandlung
Sollte nach der Ersetzung das Muster insgesamt länger sein als es das Feldformat zulässt, wird es von hinten her gestutzt.
Nach erfolgreicher Ersetzung wird der Wert an Position 31 (nächster zu vergebender Wert) um den Wert an Position 42 (Inkrement) erhöht und der Parametersatz in der Datenbank wird aktualisiert.
Wenn das Vorzeichen des Inkrementwerts positiv ('+' bzw. ' ') ist, muss der Startwert kleiner als der Endwert sein. Ist das Vorzeichen des Inkrementwerts negativ ('-'), muss der Startwert größer als der Endwert sein.
Bei der Nummernvergabe auftretende Fehler werden nicht gemeldet.
Die Auswertung des Escape-Zeichens erfolgt nur von vorn bis zur ersten Wildcard ohne führendes Escape-Zeichen. Danach wird das Escape-Zeichen als normales Zeichen behandelt und ausgegeben.
Auch Muster ohne Wildcard werden regulär verarbeitet. Dabei erfolgt jedoch keine Inkrementierung im Nummernkreis und somit auch kein Update des Parametersatzes. Das Muster wird dann als fixe Vorbelegung verwendet.
Beispiel 1:
Die Teilenummern in PDV111 sollen aus einem Nummernkreis in 1er-Schritten vorbelegt werden, der von TN0001 bis TN9999 reicht. Die Vorbelegung soll ausgelöst werden, wenn im Feld «Teilenummer» ein "V" eingegeben wird. In der Datei SIBPPS.INI wird folgender Eintrag in der Sektion [FieldParam] vorgenommen:
PDV111_1_3=P111NR
Es muss zu diesem INI-Eintrag ein Parametersatz angelegt werden, mit dem Schlüssel aus dem Wert des INI-Eintrags (P111NR) und der Eingabe (V), also "P111NRV".
Dieser Parametersatz muss mit folgenden Daten angelegt werden:
|
Startwert Nummernkreis:
|
1
|
|
Endwert Nummernkreis:
|
9999
|
|
Nächster Wert im Nummernkreis
|
1
|
|
Inkrement im Nummernkreis:
|
1
|
|
Minimale Länge:
|
4
|
|
Single-Wildcard:
|
#
|
|
Multi-Wildcard:
|
*
|
|
Escape-Zeichen:
|
\
|
|
Füllzeichen:
|
0
|
|
Muster für Vorbelegung:
|
TN*
|
Die Single-Wildcard und das Escape-Zeichen sind in diesem Fall nur der Vollständigkeit halber anzugeben, da sie für die Vorbelegung nicht benötigt werden.
Beispiel 2:
Dieses Beispiel dient nur dem Verständnis der Wildcards und des Escape-Zeichens. Folgender Parametersatz sei gegeben:
|
Startwert Nummernkreis:
|
1
|
|
Endwert Nummernkreis:
|
9999
|
|
Nächster Wert im Nummernkreis
|
50
|
|
Inkrement im Nummernkreis:
|
1
|
|
Minimale Länge:
|
3
|
|
Single-Wildcard:
|
#
|
|
Multi-Wildcard:
|
*
|
|
Escape-Zeichen:
|
\
|
|
Füllzeichen:
|
0
|
|
Muster für Vorbelegung:
|
ABC\ \ 12 \ *####*\ \ XYZ#
|
|
Ergebnis:
|
ABC\ 12*0050*\ \XYZ#
|
|
Nächster Wert:
|
51
|
Das erste und dritte Escape-Zeichen kennzeichnen das jeweils nachfolgende Zeichen als zum Muster gehörend. Da die erste auftretende Wildcard (eine Multi-Wildcard) zum Muster gehört, wird die nächste auftretende Wildcard ersetzt. Diese ist eine Single-Wildcard. Dadurch wird die Länge der zu ersetzenden Zeichenkette durch die Anzahl direkt aufeinander folgender Single-Wildcards bestimmt (im Beispiel also 3 Zeichen, die im Parameter angegebene minimale Länge gilt nur für die Ersetzung einer Multi-Wildcard). Alle nach der Single-Wildcard-Kette auftretenden Wildcards und Escape-Zeichen gehören zum Vorbelegungsmuster.
Im folgenden werden im Vorbelegungsmuster die erste Single- und die erste Multi-Wildcard getauscht:
|
Muster für Vorbelegung:
|
ABC\ \12 \ #*###*\ \ XYZ#
|
|
Ergebnis:
|
ABC\ 12#050###*\ \ XYZ#
|
|
Nächster Wert:
|
51
|
Dadurch wird die erste Single-Wildcard als zum Muster gehörend erkannt, und die erste Multi-Wildcard durch den Wert aus dem Nummernkreis ersetzt. Alle nach dieser Multi-Wildcard vorkommenden Zeichen gehören zum Muster und werden als Vorbelegung ausgegeben.