infra:NET Expert
 
×
6.5 Seriennummern anlegen
SerieFST(scsMode, scsBFtss, scsBFfko, scsBFfpo, lIPSrc, lIPSrc2, scsBFaef, scsSerie)
 
Argumente
scsMode:
derzeit keine Auswertung (immer mit SP1 wie Spezialfall 1 versorgt)
scsBFtss:
Teilestamm
scsBFfko:
Fertigungsauftragskopf
scsBFfpo:
Fertigungsauftragsposition
lIPSrc (Ausgang):
Fehlerausgang:
0
Alles war gut
1
Seriennummer gibt es schon
2
Seriennummer konnte nicht geschrieben werden
3
Teilestamm Verkauf konnte nicht gesperrt werden
4
Teilestamm Verkauf konnte nicht aktualisiert werden (lfd.Nr)
lIPSrc2 (Ausgang):
Im Fehlerfall die Kernsystemfehlernummer (Meldung noch nicht ausgegeben)
scsBFaef (Eingang und Ausgang):
Teilestamm Verkauf. Wenn Teilenummer nicht mit scsBFtss übereinstimmt (also z.B. leer), wird gelesen.
Die laufenden Nummern (Feld 43 und 45) werden aktualisiert.
scsSerie (Ausgang):
Die letzte vergebene Seriennummer oder im Fehlerfall die aktuelle Seriennummer
Rückgabewerte
Kein Funktionsausgang
Beschreibung
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Beispiel
Es werden Seriennummernsätze neu angelegt (Datei 124).
Diese Art der Seriennummernvergabe ist für Verkaufsteile mit Seriennummern vorgesehen. Beim Freigeben von Fertigungsaufträgen, auch über die Programme "561 Auftragsfreigabe" oder "374 / 379 Fertigungsaufträge erzeugen", werden Seriennummernsätze angelegt, sofern folgende Bedingungen im Teilestamm erfüllt sind:
  • Einstellung „SerienNrAusFST = 1“ in Sektion [SPECIAL] ist aktiviert.
  • Markierung «Seriennummernvergabe» ist aktiviert (Register „Verkauf“).
  • Im neuen Feld «SnrLfdNr» ist ein Eintrag ungleich 0 vorhanden.
Die Seriennummer setzt sich aus zwei Teilen zusammen:
  • Neues Feld «SnrFix», z.B. mit Angabe Produktgruppe.
  • Obiges neues Feld «SnrLfdNr»
Es werden entsprechend der Fertigungsauftragsmenge Seriennummernsätze angelegt. Leerzeichen am Ende von Feld «SnrFix» werden nicht beachtet und die laufende Nummer wird mit führenden Nullen (laut Format im DataDictionary) aufgefüllt.
Beispiele:
Im Feld «SnrFix» steht „PG-“ und als laufende Nummer ist 100 eingetragen. Fertigungsauftragsmenge ist 100 St. Dann werden die Seriennummern „PG-1000100“ bis „PG-1000199“ generiert.
Im Feld «SnrFix» steht „PG“ und als laufende Nummer ist 100 eingetragen. Fertigungsauftragsmenge ist 100 St. Dann werden die Seriennummern „PG000100“ bis „PG000199“ generiert.
Sofern im Fertigungsauftrag ein Verweis auf einen Kundenauftrag vorhanden ist (manuelle Eingabe oder per Materialplanung), wird die Auftragsposition oder zumindest der Kunde und die Auftragsnummer im Seriennummernsatz eingetragen.
Auch die Kunden-Seriennummer (Feld 84 in der Seriennummerndatei) wird bei der Freigabe schon vergeben, sofern folgende Bedingungen im Teilestamm erfüllt sind (Teilenummer muss also kundenbezogen sein):
  • Im neuen Feld «SnrLfdNrKnd» ist ein Eintrag ungleich 0 vorhanden.
Die Kunden-Seriennummer setzt sich ebenfalls aus zwei Teilen zusammen und wird analog zur internen Seriennummer gebildet:
  • Neues Feld «SnrFixKnd»
  • Obiges neues Feld «SnrLfdNrKnd»
Beispiel:
Im Feld «SnrFix» steht „SIEM“ und als laufende Nummer ist 100 eingetragen. Fertigungsauftragsmenge ist 100 St. Dann werden die Seriennummern „SIEM000100“ bis „SIEM000199“ generiert.
 
Auszug aus MBP374.CPP:
strBFaef = SPACE(SvcQueryRecordLen(28));   // wird in Funktion gelesen
SerieFST(ulMyApplHndl, "SP1", strBFtssk, strBFfko, strBFfpo, lIPSrc, lOpc, strBFaef, scsSerie);
if (lIPSrc != 0)
{
    scsSerie.Trim();
    if (scsSerie.IsEmpty())
        scsSerie = "???";
    MID(interact.scsMpar[0], 1) = scsSerie + "/" + SCString(lOpc) + "@";
    MID(interact.scsMpar[1], 1) = MID(strBFfko, DDp(40, 1), DDl(40, 1)) + "@";
    interact.scsMkey = "F45S" + SCString(100 + lIPSrc);
    return 1;
    }