3.56 Lagerplatz-Entnahmestrategie
EntnahmeStrategie(strTyp ,scsModus, scsTLC, scsDIS, dMengeSoll, scsLagerSoll, scsLagerPlatzSoll, scsChargeSoll, scsErr, dMengeEntnahme, scsLagerIst, scsLagerPlatzIst, scsChargeIst, dMengeEntnahmeGes, scsUnter0, scsKennLp);
 
Argumente
Input:
 
scsTyp
 
 
für spezielle Behandlung, z.B. Haenel INI-Einträge abhängig von Menü, dann Menünummer „565“.
 
PWEP“ =
Kennung, dass PWEP-Strategie anzuwenden ist. Zu PWEP siehe Handbuchkapitel LPCV
 
NoStLp“ =
Stammlagerplatz nicht verwenden
 
LPGR“ =
nur Lagerplatzgruppe (Datei 84, Feld 4) aus „scsModus“ verwenden.
scsModus
 
 
 
für spezielle Behandlungen: Bei
 
scsTyp = LPGR
hier die zu verwendende Lagerplatzgruppe angeben.
 
scsTLC
 
 
 
Teilestammsatz LCV
 
Feld
 
 
1
- Teilenummer
 
2
- Chargenart (für PWEP)
 
8
- Entnahmestrategie (s.o.)
 
16
- Entnahmelager (Vorranglager)
 
17
- Entnahmelagerkennung
 
32
- PWEP aktiv?
 
33
- PWEP ungeprüfte Mindestmenge
scsDIS
 
 
 
Disposition der Position
 
verwendet zum Ermitteln der ungeprüften zugeordneten Menge bei PWEP-Strategie
dMengeSoll
 
 
benötigte gesamte nicht entnommene/nicht zugeordnete Menge in ME-Lager.
scsLagerSoll
 
 
Lager
die Entnahme muss nur von diesem Lager erfolgen und übersteuert das Entnahmelager aus dem Teilestamm
 
!:Lagerliste
alle Lager aus Lagerliste in der angegebenen Reihenfolge. Anschließend nicht weitersuchen. Entnahmelager aus dem Teilestamm wird nicht beachtet. Bei Angabe nur eines Lagers identisch mit „Lager“-Angabe
 
*:Lagerliste
alle Lager aus Lagerliste in der angegebenen Reihenfolge. Anschließend weitersuchen in aufsteigender Lagerfolge. Entnahmelager aus dem Teilestamm wird nicht beachtet.
Leer oder Leerzeichen = aus beliebigem Lager nach Entnahmestrategie ermittelt. Wenn im Teilestamm konfiguriert (ggf. laut [GENERAL], EntnLagKenn = 2), wird mit Entnahmelager aus Teilestamm angefangen
scsLagerPlatzSoll
 
 
 
Lagerplatz
die Entnahme muss nur von diesem Lagerplatz erfolgen, auch Stammlagerplatz ohne Bedeutung
 
*:Lagerplatz
alle Lagerplätze, mit diesem Lagerplatz anfangen. Danach Stammlagerplatz, danach Strategie
 
leer
aus beliebigem Lagerplatz, aber zuerst Stammlagerplatz
scsChargeSoll
 
 
Die Entnahme muss nur für diese Charge erfolgen, wenn leer, dann beliebige Chargen
scsUnter0 (optional)
 
 
„ " bzw. leer
laut Konfiguration
 
1
verboten
 
2
erlaubt
scsKennLagPlz (optional)
 
 
X
nur Lagerplätze mit Kennung "X" (84, 33) auswerten, z.B. Versandlagerplatz „V“.
Ggf. vorhandene INI-Einstellung MatStratGrupp = Yes muss in der IPS-Steuerdatei ausgewertet (z.B. „574-AR1.IPS“) und als Parameter hier übergeben werden.
Input über interne Variable:
 
scsIFBuchungsdatum
 
 
versorgt aus rufendem Programm
 
für Prüfung des Verfalldatums
GV_IPS_CHB_Verfall
 
 
Ok
Verfalldatum (88,16) nicht prüfen
GV_IPS_LPZ_NoZuord
 
 
Ok
„nicht autozuordnen“ (84,36) prüfen
 
Input und Output:
dMengeEntnahmeGes
 
Gesamte Menge seit dem 1. Aufruf in ME-Lager. Beim ersten Aufruf muss 0 übergeben werden
Output:
 
 
scsErr
 
 
Fehlerkennung (z.B. nicht gefunden wenn „ohne Strategie“, ...) wenn kein Abbruchfehler vorliegt.
dMengeEntnahme
 
 
entnehmbare Menge in ME-Lager, Menge aus Lagerplatzbestand, wenn diese Menge größer als noch benötigt (Gesamtsollmenge - gesamte Entnahmemenge), dann nur noch die benötigte Restmenge
0 = keine weitere Entnahmemöglichkeit gefunden
scsLagerIst
 
 
 
Lager für die Entnahme
 
scsLagerPlatzIst
 
 
 
Lagerplatz für die Entnahme
 
scsChargeIst
 
 
 
Charge für die Entnahme
 
dMengeEntnahmeGes
 
 
Summe der Entnahmemengen ab dem 1. Aufruf
Output über interne Variable:
scsIFZustand
 
 
versorgt aus dem gelesenem Lagerplatzbestand für die Versorgung der Lagerplatzbewegung.
Es werden nur die Lagerplatzbestände mit dem Bestandsführungskennzeichen 0 = frei laut den INI-Einträgen in der Sektion [CONDITION] entnommen. Es wird nicht abgebrochen, wenn der Zustand in Sektion [CONDITION] nicht gefunden wird (Behandlung wie Bestandsführungskennzeichen ungleich 0). Dann wird der nächste Lagerplatzbestand gesucht.
Rückgabewert
0
Alles in Ordnung, auch wenn keine Entnahmemenge zurückgegeben wird.
ungleich 0
nur Datenbankfehler mit entsprechender Meldung.
Beschreibung
Für ein Teil wird eine Entnahmemenge mit der Chargenbezeichnung für einen Lager und einen Lagerplatz, gemäß der Einstellung «Entnahmestrategie» im Teilestamm LCV vorgeschlagen. Bei der Auswahl „Einstellung laut INI-Eintrag“ wird laut der Sektion [GENERAL], "EntnStrategie", entnommen.
Die Verwendung der vorgeschlagenen Menge wird dann in der entsprechenden IPS-Steuerdatei ausgewertet.
Es werden nur Lagerplatzbestände mit dem Bestandsführungskennzeichen 0 laut dem Zustand der Charge. Das Bestandsführungskennzeichen wird aus den INI-Einträgen in der Sektion [CONDITION], Zustandskürzel ermittelt.
Charge (scsChargeIst), Lagerplatz (scsLagerPlatzIst), Lager (scsLagerIst) und maximale mögliche Entnahme-Menge (dMengeEntnahme) mit der gesamten Entnahme-Menge (dMengeEntnahmeGes) werden nach verschiedenen Strategien gesucht und im Erfolgsfall zurückgegeben.
„normale“ Strategie
I)
Lager bestimmen
 
1)
  • Aufruf
 
a)
aus scsLagerSoll
 
 
  • nur ein Lager vorgeben
  • 1-ster Lager verlangt „*:Lager“
  • leer, dann wenn EntnLagKenn == 2 Entnahmelager aus TLC (87,16)
Bei scsTyp == „PWEP“ [PWEP], "LAGNO" auswerten und ggf. nächsten Lager wie oben suchen.
b)
kein Lager in scsLagerSoll vorgegeben
 
 
  • dann über „normale“ Strategie aus Chargenbestand (Pfad 3, ohne Lager) ermitteln.
2)
weitere Aufrufe
 
Aus letztem Lagerplatzbestand. Wird über lLpbISN (Globalvariable GV_ENT_LpbISN) gelesen.
Prüfungen, Lager ist gültig wenn:
 
a)
Lagerstatus (24, 1) leer, „E“ bzw. „L“
 
b)
ggf. Bestand > 0
 
II)
Charge nach Strategie
 
 
Charge nach „normaler“ Strategie mit Lager suchen
 
 
  • Pfad 2 mit Teil, scsLagerSoll und Strategiefeld
  • Pfad 3 mit Teil und Strategiefeld, ohne scsLagerSoll
 
Vorwärts lesen bei Entnahmestrategie: 1, 4, 5, 6 und 8
Rückwärts lesen bei Entnahmestrategie: 2, 3, 7 und 9, Start mit Strategiefeld highvalue und ggf. 1-nen Satz zurück
1)
1. Aufruf (lChbISN = 0, Globalvariable GV_ENT_ChbISN).
Nur wenn noch nicht mit scsLagerSoll gefunden.
Chargenbestand nach Pfad 2 mit scsLagerSoll lesen
Beim rückwärts Lesen wenn Teil und/oder scsLagerSoll größer als Vorgabe sofort einen Satz rückwärts lesen.
2)
weitere Aufrufe, nächste Charge
 
Nur dann, wenn Lagerplatzbestand mit Teil und Lager schon abgearbeitet ist
Aufsetzen mit lChbISN (Globalvariable GV_ENT_ChbISN).
Nächsten/vorherigen Satz laut Entnahmestrategie lesen.
Prüfungen
Keine Prüfung auf Bestand Menge frei (88,7) - Menge zugeordnet  (88,10) > 0 da auch negativ möglich.
a)
Teilende -> Ende
 
b)
Lagerende -> Ende bzw. Lagerwechsel wenn ohne scsLagerSoll
Prüfungen, Chargenbestand ist gültig wenn:
 
c)
Status (88,1) == „ “
 
d)
wenn lPWEP == 1 (nicht geprüft nehmen)
 
 
  • dann Kenneun nicht geprüft (88, 39) != „1“
  • zugeordnet wie geprüft behandeln wenn [PWEP], „ZUOgepr = Yes“ und Charge in noch keine zugeordnete Menge (88, 10) == 0
 
e)
wenn lPWEP == 2 (geprüft nehmen) dann Kennung geprüft (88, 39) == „1“
f)
wenn Verfalldatum (88, 16) dann > Tagesdatum
Wenn Chargenbestand nicht passt, dann nächsten/vorherigen Chargenbestand laut Entnahmestrategie lesen und zur Prüfung Chargenbestand.
III)
Lagerplatzbestand zum Chargenbestand lesen/prüfen
 
  • Pfad 1 mit Teil, scsLagerSoll, Charge und Lagerplatz
  • Pfad 3 mit Teil, scsLagerSoll, Charge, Sortfeld und Lagerplatz, [LPCV], "StratSort = Yes"
Wenn der Sort nach Strategie-Sort ([LPCV], StratSort) aktiv ist, dann Laberplatzbestand mit Sortfeld (85,17) wird aus Lagerplatz 84,5 beim Einlagern abgestellt), dann nach Pfad 3 lesen.
Stammlagerplatz aus Lager wenn da, dann zuerst verwenden
1)
1. Aufruf (lLpbISN = 0, Globalvariable GV_ENT_LpbISN)
2)
weitere Aufrufe
 
Aufsetzen mit lLpbISN (Globalvariable GV_ENT_LpbISN).
Nächsten Satz lesen.
Prüfungen
a)
Teilende -> nächste Charge
 
b)
Lagerende -> nächste Charge
 
c)
Chargenende -> nächste Charge
 
Prüfungen, Lagerplatzbestand ist gültig wenn:
 
c)
Status (85,2) == „ “
 
d)
Bestandsführungskennzeichen == 0, aus Zustand (85,1) über INI [CONDITION] Bestandsführungskennzeichen lesen - wenn nicht gefunden, als ob != 0, wenn 0 -> scsIFZustand
e)
nur wenn Buchen unter 0 verboten strUnter0: Entnahmebestand da: Menge frei (85,7) - Menge zugeordnet (85,9) > 0
Wenn Lagerplatzbestand nicht passt, dann nächsten ggf. laut Lagerplatzbestand Sortfeld lesen und zur Prüfung Lagerplatzbestand.
III)
Lagerplatz zum Lagerplatzbestand lesen/prüfen
 
 
Lagerplatz zum Lagerplatzbestand lesen
Lesen nach Lager, Lagerplatz
Wenn nicht vorhanden -> Fehler
Lagerplatz zum Lagerplatzbestand prüfen, gültig wenn:
a)
Status (84,10) == „ “
 
b)
laut scsKennLagPlz die Kennung (84, 33) auswerten
  • keine Kennung vorgegeben „Empty“, dann nur Kennung  = „ “ oder „G“
  • Kennung „ “ (Blank), dann nur Kennung  = „ “
  • Kennung != „ “, dann nur die mit der gleichen Kennung
c)
Lagerschnittstelle (84, 34) auswerten
  • muss „ “ (aller) sein
 
Wenn Lagerplatz nicht passt, nächsten Lagerplatzbestand lesen und Prüfen.
Entnahmebestand gefunden:
Rückgabeparameter dMengeEntnahme, scsLagerIst, scsLagerPlatzIst, scsChargeIst, dMengeEntnahmeGes versorgen.
scsIFZustand versorgen.
Wenn nichts gefunden werden die Rückgabeparameter mit 0 (dMengeEntnahme) bzw. mit Leerzeichen (scsLagerIst, scsLagerPlatzIst, scsChargeIst) versorgt.
Ohne Strategie
 
Wenn alles angegeben ist (Lager, Platz und Charge), dann wird keine Strategie durchlaufen.
Als Ergebnis - wenn unter 0 erlaubt ist - wird ggf. der negative Lagerplatzbestand zurückgegeben.
Wenn gefunden, Versorgung wie „normale“ Strategie. Auch bei Menge 0 werden die Parameter dMengeEntnahme = 0, scsLagerIst, scsLagerPlatzIst, scsChargeIst versorgt.
Wenn nicht gefunden werden die Parameter scsLagerIst, scsLagerPlatzIst, scsChargeIst nicht versorgt.
Strategie „Versandlagerplatz“
wie „normale Strategie“ mit vorgegebenen Lager und Lagerplatz.
Strategie "Produktionswareneingangsprüfung (PWEP)" in der Fertigung
Nur [PWEP], Anteil > 0 und wenn für Teile mit Markierung «PWEP-Teil» 87,32 aktiv und LPCV (nur LPV Teile nicht).
«Mindestmenge» 87,33 aus Teilestamm wird - wenn vorhanden - berücksichtigt.
Ausnahmen:
Die Entnahme erfolgt über alle Lager mit ausnahmen der Lager laut [PWEP], "LagNo" in aufsteigender Sortierfolge der Lager:
Der Entnahmelager aus Teilestamm (87, 16) wird nicht als 1. Lager verwendet.
a)
ungeprüfte Menge
 
 
Zuerst ungeprüfte Menge aber nicht mehr als der Anteil laut INI-Einstellung [PWEP], „Anteil“ (in %) mit „normaler“ Strategie entnehmen.
Anfangen wird mit dem Lager aus Reservierung.
Mit der Einstellung [PWEP], „ZUOgepr = Yes" auch ungeprüfte Chargen mit bereits vorhandenen Zuordnungen ((88, 10) > 0) als geprüft betrachten und nicht verwenden
Sind zuwenig ungeprüfte Chargen vorhanden, so werden stattdessen geprüfte Chargen verwendet.
b)
geprüfte Menge
 
 
Die Restmenge wird aus geprüften Chargenbeständen nach „normaler“ Strategie entnommen.
Die Einstellung [PWEP], „ZUOgepr = Yes" ist wirksam.
Beispiel
………….(Auszug aus 24A-ZUO.IPS)
BufQueryStringFromField("LPB",3,strLagerSoll);
BufQueryStringFromField("LPB",4,strLagPlatzSoll);
BufQueryStringFromField("LPB",6,strChargeSoll);
BufQueryStringFromPIS
               ("PosWert",91,15,strZuordnungsMengeSoll);
StringToDouble(strZuordnungsMengeSoll,dMengeSoll);
AssignString(strTyp,"");
 
IpsSetItemParams("ENT",1);
IpsSetPreparedRcPrefixMSG("ENT");
EntnahmeStrategie(strTyp,_
                  strMode,_
                  "TLC",_
                  "DIS",_
                  dMengeSoll,_
                  strLagerSoll,_
                  strLagPlatzSoll,_
                  strChargeSoll,_
                  strErr,_
                  dZuordnungsMengeLpl,_
                  strLager,_
                  strLagerPlatz,_
                  strCharge,_
                  dMengeIst,_
                  strUnter0,_
                  strKennLagPl);