UebergeordnetesD.bmp Grundlegende Informationen zum Paket finden Sie unter Warenwirtschaft Erste Schritte. 
 
UebergeordnetesD.bmp Grundlegende Informationen zum Paket Produktionsplanung und -steuerung finden Sie unter Erste Schritte PPS.


 Generieren von Seriennummern

Zur Generierung von Seriennummern gibt es die Möglichkeit, ein Muster für die automatisierte Generierung von Seriennummern zu hinterlegen. Dieses kann an folgenden Stellen definiert werden:
  • Artikelstamm (Feld Seriennummernmaske)

  • Warenhauptgruppen sowie Warenuntergruppen (Feld Seriennummernmaske)

  • Parameter: Bereich Warenwirtschaft → Stammdaten → Einstellungen → WWS Parameter
    • Stammdatenverwaltung → Standard-Artikelkennzeichen → Seriennummernmaske
    • PPS & WWS allgemein → Zusatztabelle Seriennummern → Eingabemuster für lfd. Seriennummern
Das hinterlegte Muster dient dann als Vorlage für ein Modell, das die Seriennummer automatisch generiert (z. B. F8 beim Feld "interne Seriennummer").

 Seriennummern-Generator

Für den fortlaufenden Teil der Seriennummern wird ein firmenbezogener Nummernkreis mit der Bezeichnung "Seriennummern-Generator" verwendet. Den Nummernkreis für den Seriennummern-Generator finden Sie hier:
Bereich Warenwirtschaft → Stammdaten → Einstellungen → WWS Nummernkreise im Bereich WWS + PPS → Seriennummern-Generator
 
1331987144000136110.png
 
Beispiel 
Beispiel.png
Automatisches Vorschlagen der internen Seriennummer beim Erfassen des Wareneingangs:

1285438845000037270.png

Hinweis 
Hinweis.png
Informationen zu den Nummernkreiskategorien finden Sie unter alphanumerisches Hochzählen.

 Möglichkeiten der Eingabemaske

Wird ein Eingabemuster definiert, das mehrere Zahlenfolgen beinhaltet, wird nur die hintere Zahlenfolge hochgezählt. Dabei werden Zahlenfolgen durch Buchstaben bzw. den Operator '|' getrennt (siehe Beispiele 1 und 2).
 
Werden Zahlen nur durch '.', '-' und '_' getrennt, werden die Zahlen als gemeinsame Zahlenfolge erkannt (siehe Beispiel 3). Um die Stellenanzahl als frei zu definieren, kann das Steuerzeichen '*' verwendet werden (siehe Beispiel 4).
 
Um die Steuerzeichen Stern und Trennstrich als Bestandteil des Textes zu verwenden, müssen die Zeichen mittels '\' als Textbestandteil gekennzeichnet werden (siehe Beispiel 5).
 Seitenanfang StartOfPage.png
Beispiel 1
Beispiel.png
Eingabemuster: ABC-5557-XYZ-7800B

Dieses Muster bedeutet: Zähle die letzten 4 Stellen bis 9999. Die Zahl im Eingabemuster definiert den Startwert des Nummernkreises und legt dessen maximale Länge fest.

Der Seriennummern-Generator liefert fortlaufend diese Werte zurück:

ABC-5557-XYZ-7801B
ABC-5557-XYZ-7802B

...
ABC-5557-XYZ-9999B (Ende des Nummernkreises)

 
Beispiel 2 
Beispiel.png
Eingabemuster: a123|456x
 
Dieses Muster bedeutet: Zähle von 456 bis 999.

a123457x
a123458x
...
a123999x (Aufgrund des Operators ist dies das Ende des Nummernkreises.)
 
Beispiel 3 
Beispiel.png
Integrieren von Bindestrichen und Punkten in das Eingabemuster.
 
Eingabemuster: 12.34_56-7a
 
Dieses Muster definiert den Nummernkreis von 1234567 bis 9999999.

12.34_56-8a
12.34_56-9a
...
99.99_99-9a (Ende des Nummernkreises)
 
Beispiel 4 
Beispiel.png
Eingabemuster: a*0234x
 
Dieses Muster zählt von 0234 bis (10^15-1):

a0235x
a9999x
...
a999999999999999x (Ende des Nummernkreises, weil dieser max. 15-stellig ist)
 
Beispiel 5 
Beispiel.png
Eingabemuster: a\*b123
 
Dieses Muster zählt von 123 bis 999:

a*b124
a*b125
...
a*b999 (Ende des Nummernkreises)

 Spezielle Operationen

Da eine reine Zählung nicht immer ausreicht, gibt es die Möglichkeit, spezielle Funktionen in das Eingabemuster einzubauen (auch hier gilt: '\' setzt Steuerzeichen außer Kraft).
 
Die Spezial-Operatoren müssen in <...> gesetzt werden.
 
Nachfolgend werden die möglichen Spezial-Operatoren beschrieben.
Seitenanfang StartOfPage.png

 Definitiver Nummernkreis

<n:kategorieA:startwert:endwert>
 
Hiermit wird der Nummernkreis "Seriennummern-Generator" (WWS_PPS_SNR_GENERATOR) mit der Kategorie1 "kategorieA" geladen und weitergezählt. Startwert und Endwert definieren GENAU, worin sich der Nummernkreis bewegen soll, wenn er noch nicht existiert!
Die Bezeichnung "kategorieA" ist nur eine Variable und kann beliebig gewählt werden. In den Beispielen unten eben "Kat1" und "Kat2".

Dabei sollte Folgendes beachtet werden:
  • Start- und Endwert sind optional. Der Nummernkreis beginnt dann bei 1 zu zählen und zählt bis (10^15 -1).

  • Jedes Element dieser Art zählt weiter. Hier gilt nicht die Regel, dass nur der letzte Zähler zählt.

  • Die regulären Zähler werden bei Verwendung dieses Tags außer Kraft gesetzt.
Beispiel  
Beispiel.png
Eingabemuster: a<n:Kat1:1000:9999>xzy<n:Kat2:005:999>b

In der Nummernkreistabelle wird je ein Eintrag für "Kat1" und "Kat2" im Feld "Kategorie1" erstellt: 
1150020522000202010_0.png

Dieses Muster zählt folgendermaßen:

a1000xyz005b
a1001xyz006b
...
a1994xyz999b (Ende der Seriennummern, da in der zweiten Kategorie der Endwert erreicht wurde)

 Fixer und variabler Nummernkreis

Hier soll es einen fixen vorderen Teil und einen variablen hinteren Nummernkreis geben.
Dies muss verwendet werden, wenn in der Nummernkreistabelle trotz verschiedener Seriennummernmaske nur ein Muster im Feld "Kategorie1" erstellt wird.

Die Seriennummernmaske für Artikel A: 12x34_|00001 und für Artikel B: 20x50_|00001 ergibt das gleiche Muster: %%x%%_%  
Damit werden zwar verschiedene Seriennummern erzeugt, aber diese teilen sich einen Nummernkreis.

Soll jeder Artikel einen eigenen Nummernkreis haben, muss man die Seriennummernmaske folgendermaßen anlegen:
Für Artikel A: 12x34_<n:Kat1:0001:9999> und für Artikel B: 20x50_<n:Kat1:0001:9999>  
 
Beispiel für geteilten Nummernkreis
 
Beispiel.png
Eingabemuster Artikel A:  12x34_|00001
Eingabemuster Artikel B:  20x50_|00001

In der Nummernkreistabelle gibt es nur einen Eintrag für beide Seriennummernmasken:

1486400655000002910.png

Dieses Muster zählt folgendermaßen je nach der Reihenfolge der Zubuchungen:

Artikel A                  Artikel B
12x34_00001         20x50_00002
12x34_00003         20x50_00004
12x34_00006         20x50_00005
...                            ...
12x34_99999         20x50_99998 (Ende der Seriennummern, wenn bei einem der beiden Artikel der Endwert erreicht wurde)

Beispiel für eigenen Nummernkreis
  
Beispiel.png
Eingabemuster Artikel A:  12x34_<n:Art1:0001:9999>
Eingabemuster Artikel B:  20x50_<n:Art2:0001:9999>

In der Nummernkreistabelle gibt es dann jeweils einen Eintrag für die zwei Seriennummernmasken:

1486399220000002910.png

Dieses Muster zählt folgendermaßen je nach der Reihenfolge der Zubuchungen:

Artikel A                  Artikel B
12x34_00001         20x50_00001
12x34_00002         20x50_00002
12x34_00003         20x50_00003
...                            ...
12x34_99999         20x50_99999 (Ende der Seriennummern, wenn bei einem der beiden Artikel der Endwert erreicht wurde)

Achtung! 
Achtung.png
Wenn mit eigenen Nummernkreisen gearbeitet werden soll, darf der Variablenname (z. B. "Kat1") nur einmal pro Seriennummernmaske verwendet werden.
Für jeden weiteren separaten Nummernkreis ist ein eigener Variablenname zu verwenden.
Es kann hier zum Beispiel die Artikelnummer oder eine Artikelkurzbezeichnung gewählt werden.

 Alphanumerisches Hochzählen

<a:seqCat[:options]>

Die alphanumerische Zählung kann wie die klassische Nummernkreiszählung mit Hilfe von Tags (<>) definiert werden. Hierzu wird der Tag <a:seqCat[:options]> verwendet. Der Parameter seqCat (= Kategorie 1 im Seriennummern-Generator) ist obligatorisch.
Ist beim Seriennummern-Generator ein Nummernkreis mit Kategorie 1 angelegt (z. B. mit KatA benannt), würde es so aussehen: <a:KatA[:options]>

Die Reihenfolge der Parameter, die via [:options] mitgegeben werden, ist nicht relevant.

Beispiel 
Beispiel.png
<a:Nummernkreis_mit_Buchstaben> ... zählt simpel von 0 bis 9 und dann weiter von A bis Z, da keine weiteren Optionen definiert worden sind.

Dieses Muster zählt folgendermaßen:

000000000000000
000000000000001
000000000000002
...
000000000000009
00000000000000A
00000000000000B
...
00000000000000Z
000000000000010
000000000000011
...
000000000000019
00000000000001A
...

Sofern kein Startwert angegeben wird, wird mit einem 15-stelligen Wert begonnen.

Der dabei angelegte Nummernkreis sieht so aus:

1285421730000037270.png

Hinweis zu Startwert, aktuellem Wert und Endwert im Nummernkreis
Hinweis.png

Die erste rückgelieferte Seriennummer hat immer den Wert 0 in der Nummernkreis-Verwaltung.

Anhand des obigen Beispiels gibt die Seriennummernmaske folgende Einträge zurück. Diese korrespondieren mit diesem aktuellen Wert im Nummernkreis:

Wert im NummernkreisGenerierte Seriennummer 
0000000000000000 
1 
000000000000001
2 
000000000000002 
3 
000000000000003
4 
000000000000004
5 
000000000000005
6 
000000000000006
7 
000000000000007
8 
000000000000008
9 
000000000000009
10 
00000000000000A
... 
... 
999999999999994
000009UGXNORJLM
...
... 
999999999999999
= Endwert (10^15 -1)
000009UGXNORJLR

Wird der Endwert erreicht, wird beim Versuch, die nächste Nummer zu generieren, eine Meldung ausgegeben.

Daher ist es empfehlenswert, Startwerte immer mit beabsichtigter Stellenzahl festzulegen.

 Optionale Parameter

Optionen werden im Format name=Wert in den Tag eingefügt und wie gehabt mit : voneinander separiert. Die Parameter sollten klein geschrieben werden.

 Parameter "chars"

Dieser Parameter legt die zur Zählung heranzuziehenden Zeichen in ihrer exakten Reihenfolge fest, wobei das linke den ersten, das rechte Zeichen den letzten Wert repräsentiert (siehe auch die Hinweise zur alphanumerischen Zählung in diesem Dokument).
  • Es besteht die Möglichkeit, Ranges anzugeben: a-c entspricht dabei der Folge a,b,c.

  • Wird eine offene Range angegeben (z. B. -z oder a-), wird vom nächstliegenden alphanumerischen Block gezählt, das bedeutet in den Beispielen in beiden Fällen wieder a-z.

  • Wird die Option nicht angegeben, werden die Großbuchstaben A bis Z verwendet.

  • Um ausschließlich Kleinbuchstaben zu verwenden, muss die Definition a-z erfolgen.

Beispiel 
Beispiel.png
<a:Nummernkreis_mit_Buchstaben:chars=asdf>

Dieses Muster zählt folgendermaßen:

aaaaaaaaaaaaaaa
aaaaaaaaaaaaaas
aaaaaaaaaaaaaad
aaaaaaaaaaaaaaf
aaaaaaaaaaaaasa
aaaaaaaaaaaaass
...

Das Ende des Nummernkreises wird dann erreicht, wenn in der Nummernkreis-Verwaltung der aktuelle Wert 999999999999999 erreicht.

 Parameter "exclude"

Hier können Zeichen angegeben werden, die trotz Definition in "chars" nicht verwendet werden sollen.

Beispiel 
Beispiel.png
<a:Nummernkreis_mit_Buchstaben:chars=a-e:exclude=d>

Dieses Muster zählt folgendermaßen:

aaaaaaaaaaaaaaa
aaaaaaaaaaaaaab
aaaaaaaaaaaaaac
aaaaaaaaaaaaaae
aaaaaaaaaaaaaba
aaaaaaaaaaaaabb
aaaaaaaaaaaaabc
...

Das Ende des Nummernkreises wird dann erreicht, wenn in der Nummernkreis-Verwaltung der aktuelle Wert 999999999999999 erreicht.

 Parameter "start"

Dieser Parameter legt den Startwert der Zählung fest. Hierbei sind alle in "chars" vorkommenden Werte erlaubt. Werden führende Nullzeichen angegeben (z. B. aaaaaaa), wird bei Generierung von Werten mit kleinerer Stellenzahl diese einfach aufgefüllt.
 
Beispiel 
Beispiel.png
<a:Nummernkreis_mit_Buchstaben:chars=a-f:start=aaaaa>

Dieses Muster zählt folgendermaßen:

aaaaa
aaaab
aaaac
aaaad
aaaae
aaaaf
aaaba
...
fffff
baaaaa
...

Das Ende des Nummernkreises wird dann erreicht, wenn in der Nummernkreis-Verwaltung der aktuelle Wert 999999999999999 erreicht.

 Parameter "max"

Um zu verhindern, dass ein Nummernkreis eine beliebige Stellenanzahl überschreitet (siehe obiges Beispiel für den Parameter "start"), kann der Endwert über den Parameter "max" definiert werden.

Gibt den höchsten Wert des Nummernkreises an - der Wert muss größer als der Startwert sein.
 
Beispiel 
Beispiel.png
<a:Nummernkreis_mit_Buchstaben:chars=a-f:start=aaaaa:max=fffff>

Es soll verhindert werden, dass nach fffff im Nummernkreis baaaaa ermittelt wird.

Dieses Muster zählt folgendermaßen:

aaaaa
aaaab
aaaac
aaaad
aaaae
aaaaf
aaaba
...
fffff (Ende des Nummernkreises)

Beispiel für hexadezimales System 
Beispiel.png

<a:Nummernkreis_mit_Buchstaben:start=0:chars=0-9A-F>

Dieses Muster zählt folgendermaßen:

0
1
...
9
A
...
F
10
11
...
19
1A
...

Das Ende des Nummernkreises wird dann erreicht, wenn in der Nummernkreis-Verwaltung der aktuelle Wert 999999999999999 erreicht ist.

 Datums- und Zeitersetzung

<d:ddmmyyyy>
 
Es besteht die Möglichkeit, das aktuelle Datum bzw. die aktuelle Uhrzeit in die generierten Seriennummern einzufügen. Grundsätzlich sind alle allgemein gültigen Platzhalter für Datums- und Uhrzeitangaben zulässig.
 
d
Tag
'ddd' erzeugt Tagesabkürzung.
'dddd' erzeugt den vollständigen Tagesnamen.
m
Monat
'mmm' erzeugt Monatsabkürzung.
'mmmm' erzeugt den vollständigen Monatsnamen.
y
Jahr
'yyyy' stellt die Jahreszahl vierstellig dar.
h
Stunde
n
Minute
s
Sekunde
z
Millisekunde
 
Anmerkungen:
  • Das einfache Zeichen gilt ohne führende Null.
  • Doppelzeichen beinhalten führende Nullen.
<c:mod10>
 
Wichtig bei der Erstellung einer Seriennummer ist die Prüfziffer/Checksumme am Ende. Für die Checksumme werden derzeit immer ALLE Zeichen unmittelbar VOR dem Tag herangezogen.
 
Dabei werden derzeit folgende Generierungsarten unterstützt:

 Bilden von Checksummen

Beispiel 
Beispiel.png
Eingabemuster: ABC123<C:MOD43>
 
Das Eingabemuster zählt von 123 bis 999 und fügt am Ende die MOD43-Checksumme hinzu:

ABC124D
ABC124E

...
ABC999K (Ende des Nummernkreises, die Checksummen sind fiktiv!)


1097582601000001570.png
Siehe auch: