9.3 Realisierung
Initialisierung
In der Initialisierungsphase werden die Variablen definiert und die grundlegende Einstellungen für die NBE bzw. AP-NBE getroffen. Für die Vorbelegungen und Einstellungen werden Einträge aus SIBPPS.INI (für 445, Sektion [AUF445]) und die Parameter „PMBP    “, „B-KALEND“, „T151000 “ benutzt. Für die Behandlung der verschiedenen Bestandsarten der Dispositionen ist das „INCLUDE MBP37BP.CXX“ zuständig. Hier werden folgende Einstellungen festgelegt:
Bestandsart der Disposition laut Buchungskennzeichen aus KO.DAT für die die Einstellung gilt
Buchungsart der Disposition
Kundenauftrag
wird für eine verbrauchsgesteuerte Planung verwendet
„ “ 
keine besondere Behandlung
Mengenbehandlung (Menge) der dispositiven Restmenge
+1 
geplante Lagerbestanderhöhung erhöht den verfügbaren Bestand
-1 
geplante Lagerbestandverminderung vermindert den verfügbaren Bestand
0, „ “ 
kein Einfluss auf den zukünftigen Lagerbestand und auf die Verfügbarkeit
Verarbeitungsstatus von (VS von) ist die untere Grenze für die Gültigkeit der Disposition
„Par.“   laut Parameter „PMBP    “
Verarbeitungsstatus bis (VS bis) ist die obere Grenze für die Gültigkeit der Disposition
Verarbeitungsstatus für Vorschlag (VS neu) wird für einen neuen Vorschlag (und später auch für die Generierung) verwendet
Preis für die Vorbelegung des Preises des Vorschlags (wird z.Zt. nicht benutzt)
Bestandsart
Buchungsart
Menge
VS von
VS bis
VS neu
Preis
K Kundenauftrag
K
-1
Par.
50
= VZ von
n. b.
B Bestellung / Anfrage
V
+1
Par.
50
10 (*)
n. b.
F Fertigungsauftrag
V
+1
Par.
50
10
n. b.
R Reservierung
 
-1
Par.
50
10
n. b.
A Angebot
 
-1
Par.
50
 
n. b.
Z Rücklieferungen
 
-0
 
50
 
n.b.
V Vertrag
 
+0
 
50
 
n.b.
frei
 
0
 
 
 
 
frei
 
0
 
 
 
 
frei
 
0
 
 
 
 
KR Kundenrahmenauftrag
K
-1
Par = (1)
50
 
n. b.
S Sicherheitsbestandabgang
 
-1
10
50
10
n. b.
! Platzhalter für Deckungslücke
 
0
 
50
 
n. b.
? Vorschlag für Pseudoteil, außer für die Teile mit der Dispositionsart „Bruttobedarfsgesteuert ohne LB-Prüfung“
V
+1
10
50
00
n. b.
x Kundenauftrag-Simulation
K
-1
Par.= (1)
50
= VZ von
n. b.
(*) alter Einkauf Bestellung mit „20“, Anfrage „10“
NBP
Die NBE verwendet für die Planung die globalen Dateien 75 und 76. Der Sperrmechanismus benutzt die Parameter „PMBP    “ und „PT372uuu“. Die Auswahl und der Zustand der NBE wird in dem Parameter „P371ABLA“ festgehalten (siehe „Parameter“).
AP-NBE
Die AP-NBE und somit auch die komplette arbeitsplatzbezogene MBP bzw. Lieferterminprüfung arbeitet statt auf den Dateien 75 und 76 auf den stationsabhängigen Dateien 80 und 81. Der Sperrmechanismus benutzt die Parameter „PMBP-sss“ und „Ptsssuuu“. Außerdem wird der Parameter PMBP nicht gesperrt. Als Ablaufparameter (normalerweise P371ABLA) wird der Parameter P371Asss verwendet, wobei sss für die Stationsnummer steht.
Lieferterminprüfung (445)
Abweichende Einstellungen (wenn nicht über Konfiguration wie 371)
  • Wenn das Markierungsfeld „nur Bedarfsteile“ nicht aktiv ist, werden Verbrauchsteile wie Bedarfsteile behandelt, sonst werden Verbrauchsteile nicht berücksichtigt.
  • Dispositionsstufen werden nicht berücksichtigt
  • Horizont ist der geplanter Liefertermin bzw. aus dem Vorschlag mit dem spätesten Termin
  • Zusammenfassung nach Termin der Fertigungs-/Bestellteile ist Tage
  • Es wird kein Protokoll ausgegeben
  • es werden alle Teile (Kauf und Fertigung) berücksichtigt
  • Sicherheitsbestand ist nicht verfügbar
  • Mindestbeschaffungsmenge wird nicht beachtet
  • es wird nicht auf Vorschlagsmenge erhöht
  • Bestellungen und Fertigungsaufträge werden nicht auf Losgröße erhöht
  • die Prüfung läuft immer bis zum Ende (alle Stufen)
Wiederanlauf
Ab „L_p371“
Danach wird der Parameter „P371    “ und der entsprechende Ablaufparameter gelesen und ausgewertet.
Vor den Eingaben wird der bisheriger Zustand der NBE geprüft. Dazu wird der Wert aus dem Parameter P371ABLA bzw. P371Asss, Pis. 128 verwendet (siehe „Ablaufparameter ...“).
Wert
„lNeu“
Bedeutung
0
Neustart der NBE, die Arbeitsdateien (Vorschlagsdatei und Projektbezugsdatei) sind leer, Eingaben für die Planung werden erwartet. Der Parameter „P371    “ wird verwendet. Die AP-NBE ist vorbelegt. Der Ablaufparameter wird mit den Werten aus dem Parameter „P371    “ vorbereitet. „L_pabl_ok“
2
Daten aus M368 sind vorhanden, mit diesen Vorschlägen für Bestellungen und Fertigungsaufträge weiter planen. Das Suchen der Deckungslücken entfällt. „L_pabl_ok“ (kann später entfällen)
gültig
6, 10, 14
Nach einer Unterbrechung (interaktive MBP bzw. gezielte Unterbrechung nach einer Phase und verlassen des Programms). Die NBE kann mit weiteren Eingaben, nach einer Unterbrechung, fortgesetzt werden.  Der entsprechende Ablaufparameter wird für die Fortsetzung verwendet. „L_pabl_ok“
ungültig
alle nicht aufgeführten Werte
Nach einem Abbruch (gewollt bzw. ungewollt nach einem Fehler). Die Arbeitsdateien werden gelöscht, der Ablaufparameter wird auf „Neustart“ gesetzt. „L_pabl_lo“ Danach kann die NBE wieder - wie mit 0 - gestartet werden.. „L_pabl_ok“
26
Die NBE ist abgeschlossen. Keine weitere Verarbeitung außer Löschen der Vorschlagsdatei, ist in MBP371 erlaubt. „L_pabl_ok“
Lieferterminprüfung (445)
Bei Neuanwahl der Lieferterminprüfung wird die Vorschlagsdatei immer gelöscht. Wird die Lieferterminprüfung nach bzw. während einer (unterbrochenen) AP-NBE aufgerufen, wird vorher gefragt, ob die vorhandenen Vorschläge gelöscht werden sollen.
Vorbelegung
Weitere Einstellungen (wie Farbe, Verursacher, Sektion [MBP]) werden aus SIBPPS.INI geholt.
„L_vorb1“ Vorbelegungen der Verarbeitung
Der Erfasspuffer und alle numerischen Variablen werden aus den Parametern für die Bearbeitung vorbelegt. Die benötigten CGWs werden definiert.
Eingaben bzw. Fortsetzung
„L_eing1“ Aufsetzpunkt der Verarbeitung
Hier setzt das Programm auch nach jeder Phase auf, um zu entscheiden, ob weitere Eingaben notwendig sind. Etwa anstehende Fehlermeldungen werden angezeigt. Der Zustand wird nochmals geprüft, um eine eventuellen Fehlfunktion (programmintern) auszuwerten.
Wert
„lNeu“
Bedeutung
0
Neustart der NBE, die Arbeitsdateien (Vorschlagsdatei und Projektbezugsdatei) sind leer, Eingaben für die Planung werden erwartet (zum „L_start“).
Gültig
Die NBE wird mit weiteren Eingaben, wenn der Parametern für die Anzahl der zu verarbeitenden Stufen „lPARanzst“ auf 0 steht (alle gewünschten Stufen sind abgearbeitet) oder keine Reservierungen der letzten Stufe „lPARsl“ gewünscht sind, fortgesetzt.
Ist keine Eingabe nötig und die NBE noch nicht abgeschlossen, wird automatisch die nächste Phase gestartet „L_nur_anz“, weiter mit „L_ohne_eingabe“.
Ungültig
Eigentlich nur nach einem Programmfehler, Programmende „L_falsch“
„L_start“
Eingaben für die NBE beim Start bzw. Fortsetzung. Das entsprechende Dialog kommt zur Anwendung:
Dialog
Funktion
MBP371_1
Start der „gesamt" NBE (371)
MBP371_2
Start AP-NBE (376)
MBP371_3
Start Lieferterminprüfung (445), der Dialog bleibt während der Verarbeitung offen, es wird kein anderer Dialog verwendet, damit die Inhalte der Listbox erhalten bleiben.
MBP371_30
Wenn Start der Lieferterminprüfung mit Teileingaben gewünscht ist (SIBPPS.INI) wird automatisch aus MBP371_3 dieser Dialog aufgerufen, nach den Eingaben Rückkehr zum MBP371_3
MBP371_100
Fortsetzung NBE (371)
MBP371_200
Fortsetzung AP-NBE (376)
Wie funktioniert die Berechnung der Verfügbarkeit mit der Eingabe „über alle Lager“:
  • Markierung aus: Die Planung erfolgt abhängig von der Lagernummer. Es wird der Lagerbestand des Hauptlagers und nur die Dispositionen für den Hauptlager berücksichtigt. Verbrauchsteile werden nur für den Hauptlager geplant. Vorschläge sind für den Hauptlager.
  • Markierung ein: Die Planung erfolgt unabhängig von der Lagernummer und für alle Lager. Es wird der gesamte Lagerbestand und Dispositionen für alle Lagernummern berücksichtigt. Verbrauchsteile werden gesamt geplant. Vorschläge sind für den Hauptlager.
  • Vorgesehen (halbwegs realisiert): Die Planung erfolgt abhängig von der Lagernummer und für alle Lager, die in den Dispositionen vorkommen. Es wird der Lagerbestand des jeweiligen Lagers und die Dispositionen für diesen Lager berücksichtigt. Verbrauchsteile werden für jeden einzelnen Lager geplant. Vorschläge sind für den Hauptlager - wenn das stimmt, wäre das ja falsch ???
  • Geplant (nicht realisiert): Die Planung erfolgt abhängig von der Lagernummer. Es wird der Lagerbestand des jeweiligen Lagers und die Dispositionen für diesen Lager berücksichtigt. Verbrauchsteile werden für jeden einzelnen Lager geplant. Vorschläge sind auch für diesen Lager.
Nach den Eingaben werden die nicht eingebbaren Felder gesperrt.
„L_ohne_eingabe“
Hier werden zuerst die Eingaben bzw. die Fortsetzungsmerker ausgewertet. Bei einer AP-NBE wird noch zu den Selektionseingaben verzweigt. Nach allen ungültigen Eingaben (NBE abgeschlossen), keine Eingaben für 445 oder Abbruch in den Selektionen für AP-NBE wird wieder in dem Ausgangsdialog fortgesetzt „L_start“. Bei der NBE mit Anzeige werden, abhängig von der folgenden Phase der NBE die Anzeigedialoge aufgebaut. Der Ablaufparameter wird mit den Eingaben zurückgeschrieben.
Anschließend wird die Aktion laut dem Zustand aus dem Ablaufparameter gestartet.
Aktionen
Die einzelnen Aktionen entsprechen den Phasen der NBE.
lLesmbp und lLesdis  wert 4 und 5 vertauscht, muss unten noch korrigiert werden !
„L_verbra“ Planung Verbrauchsteile
Es wird der gesamte Teilestamm sequentiell gelesen (später ggf. mit allen zugehörigen Lagern). Dabei wird bei verbrauchgesteuerten Teilen geprüft, ob der Lagerbestand den Melde-/Sicherheitsbestand unterschreitet. Ist das der Fall, wird noch geprüft ob schon laufende Beschaffungsvorschläge, die ggf. die Fehlmenge abdecken, vorhanden sind. Bleibt die Fehlmenge, wird ein Vorschlag, abhängig von der Kennung "Einkaufsteil", abgestellt. Der Vorschlag deckt nur die Lücke zu dem MB/SB und berücksichtigt keine laufenden Reservierungen.
Da die Planung der Verbrauchsteile über die Datei Teile (006) geht, können hier auch noch für Bedarfsteile die Vorschläge für den geplanten Sicherheitsbestandabgang „S“ und die Platzhalter „!“ für die Planung der Teile mit einem Lagerbestand kleiner 0 - falls keine Dispositionen für diesen Teil vorhanden sind - erzeugt.
Für die Bedarfsteile wird dann ein Pseudoabgang für den geplanten Abgang des Sicherheits-/Meldebestands erstellt. Für die Teile, die einen negativen Lagerbestand haben, wird ein Platzhalter für die Planung der Bedarfsteile abgestellt. Damit wird sichergestellt, dass der Lagerbestand auch dann aufgefüllt wird, wenn keine laufenden Dispositionen für diesen Teil vorhanden sind.
  • Verbrauchsteil: eigentliche Planung, wird nur gestartet, wenn die Eingabe für diese Phase gültig ist
  • Bedarfsteil: Sicherheitsbestandabgang und/oder die Platzhalter für die Planung mit einem Lagerbestand kleiner 0 abstellen
Diese Phase wird nur ausgeführt, wenn mindestens eins der oberen Kriterien zutrifft. Bei der "445 Lieferterminprüfung" wird diese Phase nicht ausgeführt, die Planung der Verbrauchsteile wird ggf. in einer eigenen Aktion durchgeführt.
  • Aktualisierung des Ablaufparameters (Start = „E“ = 5)
  • Aufsetzen im Teilestamm (ggf. laut der Selektion für AP-NBE) mit erstem gültigen Teil „L_teil_lesen“ - dazu wird ggf. so weit gelesen „L_teil_next“, bis ein gültiger Teil gefunden wird „lTeil_ok = 1“
  • Schleife über alle Teile „lEofteile“ mit
  • Selektion der Teile (nur AP-NBE „lPARaptyp = 2“) „L_SelektionAPTeiledaten“
  • wenn Planung Verbrauchsteile und ein gültiger Verbrauchsteil „lTSSdart = 1 und lPARverbr > 1 und lTeil_ok = 1“, Planung eines Verbrauchsteiles „L_plan_verbr“
  • Abfrage auf Abbruch
  • wenn ein gültiger Bedarfsteil und Parameter „lTSSdart = 2 und (lPARsbaN oder lPARohneDB“) gesetzt sind, Erzeugen Vorschläge „S“ bzw. „!“ „L_sba_platz“
  • Abfrage auf Abbruch
  • Lesen nächstes Teil „L_teil_next“
  • ggf. früherer Abbruch der Schleife, wenn AP-NBE
  • Aktualisierung des Ablaufparameters (Ende = „F“ = 6 bzw. wenn nur Planung der Verbrauchsteile ausgewählt wurde NBE Abgeschlossen = „Z“ = 26)
  • Rückkehr zum Aufsetzlabel „L_eing1“
„L_deckl_dbew“ Suchen der Deckungslücken
Für die Planung der Bedarfsteile, die über die Vorschlagsdatei als Leitdatei aus Geschwindigkeitsgründen geht, sind Einträge in der Vorschlagsdatei notwendig. Es werden nur die Teile geplant, die einen Satz in der Vorschlagsdatei ausweisen.
Es werden die gesamten dispositiven Bewegungen der Bedarfsteile nach Deckungslücken (d.h. in einer Planungsperiode ist der verfügbarer Bestand kleiner 0) sequentiell durchsucht. Wird eine Lücke gefunden und ist noch kein Satz in der Vorschlagsdatei vorhanden (siehe „Planung Verbrauchsteile“), wird ein Platzhalter (alles 0, eigentlich ein ungültiger Satz) abgestellt und die Suche wird beim nächsten Teil bzw. Lager aus den dispositiven Bewegungen fortgesetzt.
Diese Phase wird nur dann ausgeführt, wenn Bedarfsteile geplant werden sollen. Bei der AP-NBE ist das Suchen der Deckungslücken durch die Eingabe (Lieferterminprüfung) bzw. die Selektion der Kundenaufträge ersetzt. Für die, dort vorkommenden Teile, werden unabhängig von dem Vorhandensein einer Deckungslücke, Platzhalter abgestellt. Nur bei der AP-NBE Materialbeschaffung planen werden die Deckungslücken mit einer zusätzlichen Teileselektion gesucht.
  • Aktualisierung des Ablaufparameters (Start = „I“ = 9)
  • Aufsetzen in der Datei DISP-BEW (ggf. laut der Selektion für AP-NBE) mit erster Teilenummer
  • Schleife über alle Dispositionen „lLesdis“ mit
  • Suchen der Deckungslücken „L_such_deckl“
  • Abfrage auf Abbruch
  • ggf. früherer Abbruch der Schleife, wenn AP-NBE
„L_deckl_dbew_ende“ Ende des Suchen
  • Aktualisierung des Ablaufparameters (Ende = „J“ = 10) „L_deckl_dbew_ende“
  • Rückkehr zum Aufsetzlabel „L_eing1“
„L_nbe“ Planung Bedarfsteile
In einem Mischlauf werden aus der Leitdatei Vorschlagsdatei (MBPVOR bzw. MBPVORss) und der Datei DISP-BEW für die Bedarfsteile periodengenau Deckungslücken gesucht. Wird eine Lücke gefunden, wird ein Beschaffungsvorschlag (abhängig von der Kennung "Einkaufsteil“) abgestellt. Dabei werden alle Dispositionen in den beiden Dateien berücksichtigt, soweit sie als gültig erkannt werden (Status, Termin, Menge ...). Auch ein etwa vorhandener Ausschussfaktor wird berücksichtigt. Die Planung erfolgt bis zum Horizont für jede Dispositionsstufe bzw. Auflösungsstufe getrennt. Nach der Planung einer Stufe wird ggf. in der nächsten Phase noch das Material für die Fertigungsaufträge reserviert.
  • Aktualisierung des Ablaufparameters (Start = „M“ = 13)
  • Aufsetzen in der Vorschlagsdatei
  • Schleife über alle Teile für die Vorschläge (ggf. Platzhalter) vorhanden sind „lLesmbp“ mit
  • Lesen Teil „L_teil_lesen“
  • Selektion Teil (nur AP-NBE) „L_SelektionAPTeiledaten“
  • wenn Teil gültig und Bedarfsteil „lTeil_feh = 0 und lTSSdart = 2 und lTeil_ok = 1“, Planen Bedarfsteil „L_nbe_plan_bedarf“
  • Abfrage auf Abbruch
  • für die Planung von nächstem Teil
  • wenn das Teil nicht geplant wurde; Lesen Vorschlag für nächstes Teil „L_nbe_plan_bedarf_next_teil“
  • wenn der letzte gelesene Vorschlag für einen neuen Teil war, verwenden der Daten des Vorschlags für nächstes Teil „L_mbp_daten“
  • Abfrage auf Abbruch
  • ggf. früherer Abbruch der Schleife, wenn AP-NBE
  • Aktualisierung des Ablaufparameters: Ende der NBE ohne DS: Wird kein Fertigungsvorschlag „lFakopf = 0“ erstellt, ist die NBE fertig. Sonst muss noch die Materialreservierung durchgeführt werden („lFakopf“ wird auch abgestellt) und danach wird wieder mit der NBE der nächsten Stufe fortgesetzt. Ende der NBE mit DS erst nach Reservierungen. (Ende = „N“ = 14 und bzw. wenn NBE Abgeschlossen = „Z“ = 26 oder bei "445 Lieferterminprüfung" Start Verbrauchsteile = „U“ = 21)
  • Rückkehr zum Aufsetzlabel „L_eing1“
„L_stueli“    Materialreservierung
Stückliste und/oder Arbeitsplan für FA-Kopfsätze aus der Vorschlagsdatei auflösen, Reservierungen eintragen. Für die geplanten Fertigungsaufträge der letzten Stufe wird das Material laut Stücklisten und/oder Arbeitsplänen reserviert. Dazu wird je Position ein Reservierungssatz in der Vorschlagsdatei (MBPVOR bzw. MBPVORss) abgestellt. Dabei wird die höchste (wertmäßig höchste) Dispositionsstufe gemerkt.
  • Aktualisierung des Ablaufparameters (Start = „Q“ = 17)
  • Aufsetzen in der Vorschlagsdatei „L_mbp_lesen“
  • Schleife über alle Teile für die Vorschläge (ggf. Platzhalter) vorhanden sind „lLesmbp“ mit
  • Suchen Fertigungsauftrag - Vorschlag
  • Vorschlag aktualisieren (Eintrag, dass aufgelöst) „L_mbp_upd“
  • Materialreservierung „L_reservierung“
  • Abfrage auf Abbruch
  • Lesen nächsten Vorschlag „L_mbp_lesen“
  • Abfrage auf Abbruch
„L_stue_ende“ Ende der Reservierung
  • Verarbeitungsstufe um 1 erhöhen (führt ggf. zum Ende der Planung, wenn ohne DS und Stufe > 99)
  • Aktualisierung des Ablaufparameters: Ist die höchste (mögliche) Stufe erreicht, ist die NBE fertig. Sonst muss wieder mit der NBE der nächsten Stufe fortgesetzt werden. (Ende = „R“ = 18 und bzw. wenn NBE Abgeschlossen = „Z“ = 26 oder bei Lieferterminprüfung (445) Start Verbrauchsteile = „U“ = 21) „L_stue_ende“
  • Rückkehr zum Aufsetzlabel „L_eing1“
„L_verbra_445“ Planen Verbrauchsteile AP-NBE 445 und Kundenaufträge
Für AP-NBE Kundenaufträge und Lieferterminprüfung (445).
Bei der Lieferterminprüfung (445) werden die Verbrauchsteile als letzte behandelt, damit auch die Teile aus der Auflösung berücksichtigt werden und dazu nicht der gesamte Teilestamm nach Verbrauchsteilen durchgesucht werden muss.
Bei der Lieferterminprüfung (445) können die Verbrauchsteile mit der Eingabe „nur Bedarfsteile“ nicht Markiert (Verbrauchsgesteuerte Teile nur aus "R" Reservierungen und "!" - werden bei den Eingaben abgestellt) so behandelt, als ob sie Bedarfsteile wären und sind schon geplant. Dann werden nur die Termine geprüft und optimiert.
Vorschlag „!“ oder „R“ lesen „L_mbp_lesen“
Schleife über die Vorschlagsdatei „lLesmbp < 7“
  • Teil lesen „L_teil_lesen“
  • wenn Teil gültig und Verbrauchsteil (Achtung 445, siehe oben)
  • Planung des Verbrauchsteiles „L_plan_verbr“
  • Lesen Vorschlag für nächstes Teil „L_nbe_plan_bedarf_next_teil“
  • wenn Vorschlag nicht „!“ oder „R“ ist
  • Suchen Vorschlag „!“ oder „R“ „L_mbp_lesen“
  • Abfrage auf Abbruch
„L_starttermin_445“ prüfen Starttermine
Nur für Lieferterminprüfung (445), sonst „L_445ende“.
Die Lieferterminprüfung errechnet falsche Liefertermine, wenn der Starttermin eines Beschaffungsvorschlages vor dem Tagesdatum liegt (Endtermin = Tagesdatum + Anzahl Tage zur Beschaffung aller Vorschläge vor dem Tagesdatum).
Durch den Eintrag in der INI-Datei kann eine genauere, aber auch längere Berechnung erfolgen: Kann der Liefertermin nicht gehalten werden, wird durch Intervallschachtelung ein Liefertermin ermittelt, dessen Termin gehalten werden kann. (D.h. ggf. x Tage vorwärts, danach x/2 Tage rückwärts, dann wieder x/4 Tage vorwärts, usw.)
Datenbedingt, aber auch durch diverse Rechenungenauigkeiten (Prüfung ohne Dispositionsstufen; Differenz der Termine OHNE, Errechnung des Liefertermins aber MIT Berücksichtigung von Wochenenden, etc.) kann am Schluss die Situation auftreten, dass der Termin nicht gehalten werden kann, die Intervalldifferenz aber < 1 Tag wäre. In diesem Fall wird 1 Tag weitergerechnet. Kann jetzt immer noch nicht geliefert werden, wird der Suchintervall wieder erhöht.
Suchen Starttermin < Tagesdatum in "F"- oder "B"-Vorschlägen, Differenz ermitteln, neuen Liefertermin in Anzeige des Verursachers (Kundenauftragsposition oder zu prüfendes Teil) bringen.
Vorschlag „B“ oder „F“ lesen „L_mbp_lesen“
Schleife über die Vorschlagsdatei „lLesmbp < 7“
  • Teil lesen „L_teil_lesen“
  • wenn Teil gültig, Starttermin liegt vor Tagesdatum und Bedarfsteil ist
  • Verursacher suchen
  • wenn Verursacher nicht eindeutig
  • neuen Termin in allen zu prüfenden Positionen eintragen und markieren „L_neuer_termin“
  • oder wenn Verursacher eindeutig
  • neuen Termin in der verursachenden zu prüfenden Position eintragen und markieren „L_neuer_termin“
  • Suchen nächsten Vorschlag „B“ oder „F“ „L_mbp_lesen“
  • Abfrage auf Abbruch
„L_FalscheTermine_445“ Termine optimieren
Nur wenn mit Terminoptimierung, sonst „L_445ende“.
Zuerst werden die Verursacher mit korrigierten Terminen gesucht. Falls keine gefunden wurden, ist Ende „L_445ende“.
nur wenn korrigierte Termine gefunden wurden
Arbeitsdatei löschen „L_datei_loeschen2“
Schleife über zu prüfende Teile bzw. Kundenauftragspositionen in ScrollTabList
  • Bedarfssatz aus geretteten Satz (Array „strBedarfe“) wieder in den Vorschlagssatz (wie bei der Eingabe erstellt) übertragen
  • Verschiebung berechnen
  • ggf. korrigierten (verschobenen) Liefertermin eintragen
  • in Listbox eintragen „L_TerminEintragen“
  • Merker versorgen
  • Satz in die Vorschlagsdatei schreiben
Untere ListBox (Ergebnisse) löschen
Ablaufparameter aktualisieren (als ob NBE einer Stufe abgeschlossen = „N“ = 14), damit die NBE nochmals durchgeführt wird
zum Schreiben Ablaufparameter „L_445_pabl“
„L_445ende“ Ende von „L_verbra_445“
Aktualisierung des Ablaufparameters
  • wenn AP-NBE Lieferterminprüfung (445) oder AP-NBE Kundenaufträge nur Verbrauchsteile: NBE Abgeschlossen = „Z“ = 26
  • wenn AP-NBE Kundenaufträge: als ob Suchen Deckungslücken abgeschlossen = „J“ = 10, für weiter in der AP-NBE
„L_445_pabl“ Ablaufparameter aktualisieren
Ablaufparameter aktualisieren
Rückkehr zum Aufsetzlabel „L_eing1“
„L_clos“Programmende
  • Bei der AP-NBE wird der Sperrparameter gelöscht.
Unterprogramme für die Planung
Nur die Unterprogramme, die für die Planung verwendet werden, sind alphabetisch nach dem Labelnamen sortiert aufgeführt.
„L_ber_lg“ Formel für das Aufrunden auf Losgröße
„L_ber_reichweit“ Berechnen der Reichweite
Die Reichweite wird ab Tagesdatum aus der Menge, der Beschaffungszeit (ggf. Menge pro Beschaffungszeit) bzw. der Projektlaufzeit ermittelt. Für die Terminberechnung wird das allgemeine Unterprogramm „L_start_ende“ verwendet.
„L_check_disp“ Prüfung einer Disposition, Verfügbarkeitsrechnung
Vorbereitung für die Prüfung und die Verfügbarkeitsrechnung eines Dispositionssatzes. Der Merker „lMbp_lesen = 0“, dass wieder aus der Dispositionsdatei gelesen werden muss, wird gesetzt. Die relevanten Daten aus der Disposition „strDisp_...“, „dDisp_...“ werden in die Variablen für die Prüfung und Verfügbarkeit „strCheck_...“, „dCheck_...“ übertragen.
Die eigentliche Prüfung und Verfügbarkeitsrechnung ist im „L_check_disp_mbp“.
„L_check_disp_mbp“ Prüfung, Verfügbarkeitsrechnung
Test einer Disposition (DISP-BEW) oder eines Vorschlags (MBPVOR bzw. MBPVORss) mit Berechnung des verfügbaren Bestands. Die Berechnung wird nur für gültige Sätze durchgeführt, bei einem ungültigen Satz bleibt der verfügbarer Bestand unverändert. Der anfängliche verfügbare Bestand zu jedem Teil ist der aktueller Lagerbestand.
Ausgang „lCheck_end“ enthält nach der Prüfung den Zustand des Prüfungsergebnisses (dieser wird bei ungültigen Sätzen als Fehlercode angezeigt), die wichtigsten Werte sind:
0        die neue verfügbare Menge ist berechnet
1        Periodenwechsel bzw. Horizont überschritten, alte verfügbare Menge bleibt und muss ausgewertet werden
> 1     der Datensatz wurde nicht berücksichtigt (ist für die Planung ungültig), die verfügbare Menge bleibt
Der Datensatz wird auf folgende Kriterien geprüft (in der Reihenfolge der Prüfungen) und das erste Kriterium zutrifft, abgewiesen:
lCheck_end
Ursache
3
Buchungsart "!" = Platzhalter für Deckungslücke wird grundsätzlich nicht berücksichtigt
1
Periodenwechsel, dazu wird der Endtermin in die Genauigkeit des Teiles umgerechnet „L_konv_dat“ und falls der Termin größer als der aktueller Horizont (Ende der Planungsperiode) ist, zuerst abgewiesen (später wird der Satz ggf. nochmals geprüft und berechnet)
7
falsche Bestandsart (nicht in der Tabelle aus MBP37BP.CXX aus der Schleife über alle eingetragenen Bestandsarten)
2
Vorschlag ist erledigt (generiert)
4
Disposition ist nicht aktiv (z.B. erledigt)
5
Restmenge ist negativ (z.B. bei einer Überbuchung)
6
Datum ist 0 oder 999999, kann zu keiner Periode zugeordnet werden
8
falsche Buchungsart für verbrauchsgesteuerte Teile, die Disposition wird bei der Berechnung der Verfügbarkeit für verbrauchgesteuerten Teil nicht berücksichtigt
9
keine Veränderung der Verfügbarkeit (laut der Tabelle aus MBP37BP.CXX)
10
Status ist zu klein (laut Parameter PMBP oder der Tabelle aus MBP37BP.CXX)
11
Status ist zu groß (laut der Tabelle aus MBP37BP.CXX)
12
Lager ist nicht Hauptlager, wenn „alle Lager“ nein „lPARlago = 1“: es wird nur der Hauptlager berücksichtigt
Außerdem werden, falls der Satz aus der Vorschlagsdatei und eine Reservierung ist, die Ausnahmen für die Teile mit „Generierung sofort“ und „nicht generieren“ ausgewertet und die entsprechenden Mengen, für spätere Verarbeitung, gesammelt.
Es wird der aktuelle verfügbarer Bestand (vorzeichengerecht) für die Anzeige berechnet. Für das erstellen eines Beschaffungsvorschlages wird ein laufender Nettobedarf ermittelt (mit umgekehrtem Vorzeichen). Ein Vorschlag muss erstellt werden, wenn der Nettobedarf > 0 ist „lMach_vorschlag = 1“. Für den Termin des Vorschlages ist „lErst_guelt“ zuständig: falls noch kein gültiger Satz gefunden wurde, wird kein Vorschlag erstellt und die Bedarfsmenge wird aufgehoben, und führt erst mit einem gültigen Satz bei Periodenwechsel oder beim Ende des Teiles zu einem Vorschlag.
Für das Durchreichen des Verursachers (der Auftragsart, der Auftragsnummer, der Positions- und der Unterpositionsnummer) sowie der Farbe (Anwenderfeld 3), des Kunden und des Projekts werden die benötigten Variablen versorgt bzw. wenn ein Konflikt entsteht gelöscht (auf SPACE gesetzt).
Falls eine Zusammenfassung nach Projekt gewünscht ist „lPARprojB“ oder „lPARprojF“ wird die Datei (076 bzw. 081) für den Projektbezug versorgt „L_projekt_abst“.
Als letzte werden der geplante Endtermin und die Endzeit (Liefertermin für Bestellung bzw. Fertigstellungstermin für Fertigungsauftrag) ermittelt. Bei einem Fertigungsauftrag als Disposition wird die Endzeit gelesen „L_fpo_lesen“.
„L_check_mbp“ Prüfung eines Vorschlags, Verfügbarkeitsrechnung
Vorbereitung für die Prüfung und die Verfügbarkeitsrechnung eines Vorschlagssatzes. Der Merker „lMbp_lesen = 1“, dass wieder aus der Vorschlagsdatei gelesen werden muss, wird gesetzt. Die relevanten Daten aus dem Vorschlagssatz „strMbp_...“, „dMbp_...“ werden in die Variablen für die Prüfung und Verfügbarkeit „strCheck_...“, „dCheck_...“ übertragen.
Die eigentliche Prüfung und Verfügbarkeitsrechnung ist im „L_check_disp_mbp“.
„L_check_verbrauch“ Prüfung der Verfügbarkeit
Es werden nur die Dispositionen berücksichtigt, die die Verfügbarkeit der Verbrauchsteile verändern (i.A. Bestellungen und Fertigungsaufträge) und die innerhalb der Beschaffungszeit des Teils geplant sind.
Vorgeben, dass jetzt die Verfügbarkeit für Verbrauchsteile erfolgt „strBuchkenn = "V"„
Aufsetzen bei der ersten Disposition für den Teil „L_disp_lesen“
Schleife über alle Disposition des Teils „lLesdis“ bis zum vorgegebenen Horizont „lCheck_end“
  • Prüfung der Disposition, Verfügbarkeitsrechnung „L_check_disp“
  • Anzeige der Disposition „L_anz_disp“
  • Lesen nächster Disposition „L_disp_lesen“
  • Abfrage auf Abbruch
Aufheben der Verfügbarkeit für Verbrauchsteile
Die Prüfung und die Verfügbarkeitsrechnung verwendet das allgemeine Unterprogramm - mit entsprechenden Eingängen, das auch für die bedarfgesteuerte Teile verwendet wird.
„L_dauer“ nur für 445
Aus Starttermin und Tagesdatum Dauer in Tagen mit der Servicefunktion „SvcTimeOperation“ berechnen. Die Berechnung erfolgt in Stunden (Parameter „H“). Die Stunden werden dann mit der durchschnittlichen Arbeitszeit pro Tag (aus Parameter „B-KALEND“ in Tage umgerechnet.
„L_disp_daten“ Daten aus Disposition versorgen
Folgende Daten werden für die Prüfung und Verfügbarkeitsrechnung in „strDisp_...“ bzw. dDisp_...“ übertragen:
  • Verarbeitungsstatus
  • Lager und aus Kundenauftrag Lager für Zugang aus Fertigung
  • Buchungsart
  • Projekt
  • Verursacherdaten, falls kein Verursacher eingetragen ist die Daten, die als Verursacher verwendet werden
  • Kunde
  • Farbe (Anwenderfeld 3)
  • Restmenge
  • Endtermin
Ausnahme für AP-NBE Materialbeschaffung: Termine werden geprüft und wenn nicht innerhalb der Selektion, wird automatisch weiter gelesen.
Ausnahme für Lieferterminprüfung (445): Falls die gelesene Disposition eine Kundenauftragposition ist, die als Simulationsvorschlag „x“ eingetragen ist, wird die Restmenge auf 0 gesetzt, damit die Menge nicht 2-mal in die Verfügbarkeit eingerechnet wird „L_disp_patch“.
„L_disp_gruwe“ Prüfen eines Gruppenwechsels der gelesenen Disposition
Abhängig von dem Aufruf „lAlle_disp“ wird der Gruppenwechsel auf 2 verschiedene Arten geprüft:
Wenn alle Dispositionen (zu einem Teil bzw. Lager) gelesen werden sollen „lAlle_disp =1“ (auch direktes Lesen = Aufsetzen bei 1. Disposition) wird nur die Teilenummer und ggf. die Lagernummer geprüft und bei nicht übereinstimmen der Gruppenwechsel gemeldet.
Beim gezieltem Lesen „lAlle_disp = 0“ wird zusätzlich das Überschreiten des Horizonts (Endtermin der Disposition liegt nach dem vorgegebenem Termin = Periodenende) als Gruppenwechsel gemeldet.
Beim Gruppenwechsel wird zusätzlich „Check_end = 1“ gesetzt (siehe „L_check_disp_mbp“).
„L_disp_lesen“ Lesen einer Disposition
Lesen der Dispositionen ohne Sperren direkt „lLesdis = 0“ bzw. sequentiell „lLesdis > 0“. Das Lesen geht abhängig von dem Parameter „lPARlago“ über den Pfad 8 (wenn ohne Lager) oder Pfad 9 (mit Lager). Beim direkten Lesen mit „strTeil“ und ggf. „strLager“. Wenn „lAlle_disp = 0“ ist wird geprüft, ob ein Gruppenwechsel („L_disp_gruwe“: Teil, Lager und Horizont) vorkommt. Falls die Disposition gültig ist „lLesdis < 4“, werden die benötigten Daten ausgewertet und in die entsprechenden Variablen übertragen „L_disp_daten“.
„L_disp_patch“ Nur für Lieferterminprüfung (445)
Wenn der gelesene Satz aus den Dispositionen einer in M445 übernommenen K-Zeile für die Simulation entspricht („x“ in der Vorschlagsdatei), dann wird die Restmenge in dem Satz auf 0 gesetzt und somit „ungültig“ gemacht. Das ist notwendig, damit die Menge nicht doppelt in der Verfügbarkeit eingerechnet wird.
„L_fpo_lesen“ aus Fertigungsauftrag Startzeit lesen
Falls der Satz gefunden wurde und die gelesene Startzeit kleiner als die Endzeit ist, wird diese für den Fertigungsvorschlag verwendet.
„L_konv_dat“ Datum in Form laut Genauigkeit konvertieren
Laut der vorgegebenen Genauigkeit (Parameter für Bestellvorschläge bzw. Fertigungsvorschläge bzw. aus Teil) wird das Datum (Termin) für die Zusammenfassung konvertiert in:
0        „99999999“, über alle Termine
1        bleibt, tagesgenau
2        JJJJWW, wochengenau
3        JJJJMM, monatsgenau
„L_kopap“ Reservierungen aus einem Arbeitsplan erzeugen
Die Reservierungen werden aus der Materialdatei des Arbeitsplan generiert. Sie können aus den „Standard“ oder den „Extra“ Arbeitsplan sein.
Die 1. Position des AP lesen
Schleife über alle AP-Positionen des Teiles aus dem Fertigungsvorschlag
  • wenn die Position eine gültige Komponente ist
  • Teil lesen „L_teil_lesen“
  • Teil-MWI lesen „L_mwi_lesen“
  • „generieren“ aus Teil einsetzen
  • Bedarfsmenge (Reservierungsmenge) berechnen, Starttermin aus Fertigungsvorschlag einsetzen
  • Reservierungsmenge aufrunden (Funktion „aufrunden“)
  • Reservierung erzeugen und eintragen „L_vorschlag_neu“
  • vermerken, dass neue Reservierungen erzeugt wurden und die Planung fortgesetzt werden soll „lFapos = 2“
  • nächste Position lesen
  • Abfrage auf Abbruch
„L_kopsl“ Reservierungen aus einer Stückliste erzeugen
Die Reservierungen werden aus der Strukturauflösung (wg. Scheinbaugruppen) wie im FST531 mit "FST531ST.CPP" erzeugt. Dabei wird das Gültigkeitsdatum der Stücklistenposition zu dem geplanten Starttermin des Auftrags ausgewertet.
Schleife über die Struktur
  • Stücklistensatz holen „L_struktur“
  • Gültigkeitsdatum prüfen
  • Wenn eine gültige Position gefunden wurde
  • Scheinbaukasten prüfen und vermerken
  • abhängig von der Strukturstufe Basismenge ermitteln, ggf. Teil der Komponente lesen „L_teil_lesen“
  • Bedarfsmenge (Reservierungsmenge) berechnen und vermerken (ggf. für nächste Stufe bei Scheinbaukasten)
  • Reservierungsmenge aufrunden (Funktion „aufrunden“)
  • wenn Scheinbaukasten
  • Scheinbaukasten vermerken
  • oder wenn gültige Komponente
  • Teil lesen „L_teil_lesen“
  • Teil-MWI lesen „L_mwi_lesen“
  • „generieren“ und „sofort“ auswerten aus der Stücklistenposition auswerten, „nicht generieren“ aus Teil hat Vorrang
  • Bereitstellungstermin mit Vorlaufzeit bzw. Endtermin mit Nachlaufzeit ermitteln
  • Reservierung erzeugen und eintragen „L_vorschlag_neu“
  • oder wenn fehlerhafte Auflösung
  • Melden
  • Entscheidung, ob der Fehler die Auflösung beendet oder die Auflösung fortgesetzt werden kann
  • Abfrage auf Abbruch
„L_lager_daten“ Übernahme der relevanten Daten aus dem Satz
Das ist ein Unterprogramm zu „L_lager_lesen“ und „L_lager_lesen_alle“.          
Für den gelesenen Lager werden folgende Werte übernommen:
  • Meldebestand (MB)
  • Sicherheitsbestand (SB)
  • Lagerbestand
Wenn die Verarbeitung mit Anzeigen erfolgt, werden die Lagerdaten, ggf. mit Dialogaufbau, angezeigt „L_lager_anz“.
„L_lager_lesen“ Einen Lager eines Teiles lesen
Der Lager laut „strTeil“ und „strLager“ wird gelesen. Fehler und Pseudoteil werden ausgewertet. Die Lagerdaten werden mit „L_lager_daten“ versorgt. Falls das Teil ein Pseudoteil ist, wird kein Lagerstammsatz gelesen und die Werte werden aus dem „leeren“ Datensatz versorgt (0 oder SPACE).
„L_lager_lesen_alle“              Alle Lager eines Teiles lesen
Beim ersten Aufruf wird der 1. Lager, bei folge Aufrufen der nächste nicht gesperrte Lager sequentiell gelesen. Der 1. Lagerstammsatz wird mit „L_lager_lesen“ gelesen, die folgenden Lager mit „L_lager_next“. Wenn ein gesperrter Lager gelesen wurde, wird automatisch der nächste gelesen. Die Lagerdaten werden mit „L_lager_daten“ versorgt.
„L_lager_next“ Sequentielles lesen des nächsten Lagers
Es werden nur Systemfehler abgefangen. Auswertung im „L_lager_lesen_alle“
„L_lager_plus_1“ Lagernummer erhöhen
Die Lagernummer wird nicht arithmetisch erhöht (ist alphanumerisch), sondern es wird der ASCI-Wert der letzten Stelle der Nummer um 1 erhöht.
„L_liefertermin“ nur für 445
Aus Plantermin und Dauer neuen Liefertermin berechnen. Die Berechnung ist ohne B-Kalender, da auch Differenz zu Tagesdatum ohne B-Kalender berechnet wurde.
„L_mbp_aufsetzen“ Auf dem letzten gelesenem Vorschlagssatz aufsetzen
Nach dem Schreiben wird mit der gesicherten ISN aufgesetzt.
„L_mbp_daten“ Daten aus gelesenem Vorschlagssatz versorgen
Das ist ein Teil des Unterprogramms „Lesen Vorschlag“
Folgende Daten werden für die Prüfung und Verfügbarkeitsrechnung in „strMbp_...“, „lMbp...“ bzw. dMbp_...“ übertragen:
  • ISN für Aufsetzen, Sperren und Update
  • Verarbeitungsstatus
  • Lager und aus Kundenauftrag Lager für Zugang aus Fertigung
  • Buchungsart
  • Projekt
  • Verursacherdaten, falls kein Verursacher eingetragen ist die Daten, die als Verursacher verwendet werden
  • Kunde
  • Farbe (Anwenderfeld 3)
  • Restmenge
  • Endtermin
  • „nicht generieren“ und „sofort“
Die Daten - außer der ISN - werden nur übertragen, wenn mit dem Vorschlag kein Gruppenwechsel stattfindet.
Ausnahme für AP-NBE Materialbeschaffung: Termine werden geprüft und wenn nicht innerhalb der Selektion, wird automatisch weiter gelesen.
„L_mbp_gruwe“ Prüfen eines Gruppenwechsels des gelesenen Vorschlags
Das ist ein Teil des Unterprogramms „Lesen Vorschlag“
Abhängig von dem Aufruf „lAlle_mbp“ wird der Gruppenwechsel auf 3 verschiedene Arten geprüft:
Wenn alle Vorschläge (zu einem Teil bzw. Lager) gelesen werden sollen „lAlle_mbp = 1“ oder „lAlle_mbp = 2“ (auch direktes Lesen = Aufsetzen beim 1. Vorschlag) wird nur die Teilenummer und ggf. die Lagernummer geprüft und bei nicht übereinstimmen der Gruppenwechsel gemeldet.
Für das Prüfen (Erkennen) von dem Ende einer Dispositionsstufe, wenn die Planung mit Dispositionsstufen erfolgt „lMit_stufe = 1“, wird auch die Dispostufe aus dem Vorschlag mit der aktuell bearbeiteten Dispositionsstufe verglichen („lAlle_mbp = 0“ oder „lAlle_mbp = 2“).
Beim gezieltem Lesen „lAlle_mbp = 0“ wird zusätzlich das Überschreiten des Horizonts (Endtermin der Disposition liegt nach dem vorgegebenem Termin = Periodenende) als Gruppenwechsel gemeldet.
Beim Gruppenwechsel wird zusätzlich „Check_end = 1“ gesetzt (siehe „L_check_disp_mbp“).
Zusätzlich für Lieferterminprüfung (445):
„lAlle_mbp = 0“
Beim Gruppenwechsel wegen Horizontüberschreitung wird, wenn Gruppenwechsel wegen Horizontüberschreitung der Disposition besteht, der Horizont auf den Termin des Vorschlags gesetzt und noch mal der Gruppenwechsel der letzten Disposition geprüft „L_disp_gruwe“. Falls die Disposition jetzt innerhalb der Periode liegt, werden die Dispositionsdaten versorgt „L_disp_daten“.
„lAlle_mbp = 4“
Suchen Beschaffungsvorschlag „B“ oder „F“: Es wird solange gelesen, bis ein Beschaffungsvorschlag gefunden wird.
„lAlle_mbp = 5“
Suchen Platzhalter „!“ oder Reservierung „R“: Es wird solange gelesen, bis ein entsprechender Satz gefunden wird.
„L_mbp_lesen“ Lesen eines Satzes aus der Vorschlagsdatei
Lesen eines Dispositionen ohne Sperren direkt „lLesmbp = 0“ bzw. sequentiell „lLesmbp > 0“. Das Lesen geht abhängig von dem Parameter „lPARlago“ über den Pfad 1 (wenn ohne Lager) oder Pfad 2 (mit Lager). Beim direkten Lesen mit „strTeil“ und ggf. „strLager“ („L_mbp_lesd“). Wenn „lAlle_mbp = 0“ ist wird geprüft, ob ein Gruppenwechsel („L_mbp_gruwe“: Teil, Lager und Horizont und ggf. DS) vorkommt. Falls die Disposition gültig ist „lLesmbp < 4“, werden die benötigten Daten ausgewertet und in die entsprechenden Variablen übertragen „L_mbp_daten“.
„L_mbp_platz“ Platzhalter „!“ abstellen
Ein Platzhaltersatz „!“ wird in der Vorschlagsdatei abgestellt.
Die Eingangsvariablen, die nicht benötigt werden (und ggf. nicht dürfen), werden auf die Werte für den Platzhalter gestellt. Mit dem allgemeinem Unterprogramm „L_vorschlag_neu“ wird der Satz aufgebaut und geschrieben.
„L_mbp_upd“ Ändern und Schreiben eines Vorschlagssatzes
Der Satz wird gesperrt. Der Verarbeitungsstatus wird entsprechend der Verarbeitung aktualisiert, Teilenummer der Stückliste bzw. des Arbeitsplans und die Kennung des AP werden eingetragen. Der geänderte Satz wird geschrieben.
„L_mwi_daten“ Daten aus Teilestamm MWI
Die Vorschlagsmengen werden aus der Bestelleinheit in Lagermengeneinheit umgerechnet.
  • Lager: Hauptlager, WE-Lager und Fertigungslager
  • aus SIBPPS.INI werden die Rundungsvorschriften für das Aufrunden der Vorschlagsmengen (für Lager- und Bestelleinheit) versorgt
  • Vorschlagsmenge mit Mindest- und maximaler Menge (neuer Einkauf ggf. aus Teil-Lieferfant-Beziehung)
  • Sicherheits- und Meldebestand
  • Mindestbeschaffungszeit
  • Dispositionsstufe
  • eine, von der Vorbelegung abweichende Genauigkeit, wird versorgt
  • bei Kaufteil ob Bestellung oder Anfrage vorgeschlagen wird
  • Entscheidung ob aus einem Vorschlag generiert werden soll, wenn nicht generiert werden soll, muss das Teil trotzdem bearbeitet werden, falls durch die Auflösung Teile gefunden werden, die doch verarbeitet werden müssen (z.B. mit „Beschaffung sofort“)
Wird ein Pseudoteil bearbeitet, so wurde der Satz beim Lesen auf SPACE gesetzt und somit sind alle Daten 0 bzw. „leer“.
Das Unterprogramm ist ein Teil von „L_mwi_lesen“.
„L_mwi_lesen“ Lesen Teilestamm MWI
Zu dem aktuellen Teil wird die Erweiterung mit den Materialwirtschaftsdaten gelesen (und ggf. Angezeigt) und die Daten werden versorgt „L_mwi_daten“. Im Fehlerfall wird der
  • Fehlerausgang „lMwi_feh“ > 0 gesetzt
„L_nbe_ber_vorschl“ Vorschlagsmenge aufteilen, Vorschläge abstellen
Bei der Berechnung können für die gesamte Bedarfsmenge bis zu 4 Vorschläge erstellt werden. Aufteilung der Menge bei Teilen, die aus der STUELI nicht generiert werden sollen bzw. mit Termin sofort. Die Mengen sind aus „L_check_disp_mbp“ für die Beschaffung entsprechend vorbelegt:
  • „sofort“ aus „dMng_sofort“
  • „sofort“ und „nicht generieren“ aus „dMng_ngenesofort“
  • zum geplanten Termin „generieren“ aus dem verbleibenden „dNettobedarf - dMng_ngene“
  • zum geplanten Termin „nicht generieren“
Der gesamte Bedarf wird nach dem Erstellen eines Vorschlags um die tatsächliche Vorschlagsmenge (ggf. aufgerundet). Deswegen können die folgenden Vorschläge einfach aus der entsprechenden Menge erstellt werden, sondern nur aus der tatsächlich verbleibenden Bedarfsmenge.
Jeder Vorschlag wird mit „L_nbe_ber_vorsch1“ erstellt.
Zuerst werden die Vorschläge für die Mengen „sofort zu Beschaffen“ erzeugt.
Wenn das Teil auf "nicht generieren" steht (gilt für alle Bedarfe des Teiles), dann wird aus der gesamten Sofortmenge „dMng_sofort = dMng_sofort + dMng_ngenesofort“ nur ein Vorschlag erstellt.
Für die „sofort Vorschläge“ werden die Endtermine nicht aus dem Termin für den tatsächlichen Bedarf verwendet. Es wird versucht den Vorschlag auf einen früheren Termin, ausgehend von dem Tagesdatum, zu terminieren. Dazu wird der ursprünglicher Termin (aus der Verfügbarkeitsrechnung) gesichert. Der Vorschlag wird aber nur dann erstellt, wenn der neuer Termin nicht vor dem Tagesdatum liegt „lSofort“.
Aus „dMng_sofort“ einen Vorschlag erstellen.   
Falls ein Vorschlag erstellt wurde, wird die restliche Bedarfsmenge um die Vorschlagsmenge vermindert. Falls durch den Vorschlag auch der gesamter Bedarf voll abgedeckt wurde, werden die restlichen Mengen für „nicht generieren“ und „sofort“ auf 0 gesetzt.
Für einen Teil mit „generieren“ und aus Stückliste kommt „nicht generieren“ (gilt nur für die Bedarfsmenge, die aus diesen Stücklistenpositionen kommen) wird für „sofort“ ein Vorschlag mit der Menge „dMng_ngenesofort“ erstellt.      
Falls ein Vorschlag erstellt wurde wie oben.
Danach wird/werden noch der/die Vorschlag/Vorschläge für die restliche Bedarfsmenge, die nicht „sofort“ beschafft wurde, erstellt. Falls oben keine Vorschläge zu erstellen sind, geht der gesamte Bedarf in die unteren Vorschläge ein.
Wenn beim Teil „generieren“ eingetragen ist, dann für den zu generierenden Bedarf „dNettobedarf - dMng_ngene“ und dann noch für den ggf. verbliebenen Bedarf „nicht generieren“ aus Stücklisten.     
Oder wenn alles „nicht generieren“ ist, nur noch der Vorschlag für den ggf. verbliebenen nicht generierbaren Bedarf.
Wird auch bei projektbezogenen Planung verwendet. Dabei werden die Projektbedarfe als die „normalen“ Bedarfe vorgegeben und die tatsächlichen Projektbedarfe zusätzlich aktualisiert.
„L_nbe_ber_vorschl1“ Vorschlagsmenge und Starttermin berechnen und Vorschlag abstellen
Die Menge für den einzelnen Vorschlag wird berechnet (aufgerundet) „L_rund_menge“ und aus dem Endtermin wird der Starttermin berechnet „L_start_ende“.
Jetzt wird endlich der Vorschlagssatz aufbereitet und geschrieben „L_vorschlag_neu“. Danach wird noch die verbliebene Bedarfsmenge um die tatsächliche Vorschlagsmenge vermindert. Mit der neuen Bedarfsmenge wird dann ggf. noch ein weiterer Vorschlag erstellt (Menge > 0) und die Verfügbarkeit weiter gerechnet.
„L_nbe_plan_bedarf“ Planen einen Bedarfsteil
Für jeden Bedarfsteil werden alle Deckungslücken (für jede Periode bis zum Horizont) mit den dort vorkommenden Fehlmengen gesucht. Wird eine Deckungslücke gefunden, wird ein, der Beschaffungsart entsprechender, Beschaffungsvorschlag erstellt. Der Vorschlag wird zum dem Termin, der sich aus der 1. Disposition bzw. aus dem 1. Vorschlag der Periode ergibt, eingeplant. Die Menge wird entsprechend der Vorschrift für den Teil gerundet.
Lesen Teilestamm-MWI „L_mwi_lesen“ ggf. mit Anzeige
Wenn ohne Fehler „lMwi_feh = 0“
  • Lagerbestand für den Lager aus dem Vorschlag ermitteln (dazu wenn nur Hauptlager Lagersatz lesen „L_lager_lesen“ oder wenn „alle Lager“ den Bestand aus TSS-MWI übernehmen - „lLager = 2“, geplant über alle Lager einzeln auch mit „L_lager_lesen“)
  • Lager für die Planung in Ordnung ?
  • Nein, Meldung
  • Lesen der Vorschläge für nächstes Teil bzw. Lager vorbereiten (lLesmbp = 6)
  • Ja, Horizont für die Verfügbarkeitsrechnung abhängig von dem Parameter „lPARhoriN“ ermitteln (Eingabe oder Projektlaufzeit des Teiles „L_ber_reichweit“)
    Ausnahme für Lieferterminprüfung (445): Horizont ist immer der Endtermin aus dem Vorschlag
  • falls der Endtermin des 1. Vorschlags hinter dem Horizont liegt, wird keine Prüfung vorgenommen und das Lesen der Vorschläge für nächstes Teil bzw. Lager vorbereiten (lLesmbp = 5)
  • der Lagerbestand wird ggf. als die erste Bedarfsmenge vermerkt
  • falls der Lagerbestand < 0 ist, wird vorgemerkt, dass ein Beschaffungsvorschlag notwendig ist (lMach_vorschlag = 1). Mit dem Erstellen des Vorschlags wird aber gewartet, bis eine „echte“ Deckungslücke auftritt. Weil erst durch das weitere Lesen der Dispositionen bzw. der Vorschläge geklärt wird, ob schon ein Beschaffungsvorschlag da ist, der die Deckungslücke abdeckt
  • die Mengen für den künftigen Vorschlag werden vorbereitet
  • der Termin für den 1. Terminwechsel (Ende der 1. Planungsperiode), abhängig von dem Parameter „lPARrueckz“ und der Genauigkeit des Teiles „lGenau“ ermitteln und entsprechend das Vorhandensein vermerken „lEndeda“. Der Termin kann auch erst aus dem ersten gültigen Satz, der eine Deckungslücke verursacht, entnommen werden
  • falls noch kein Termin vorbelegt wurde und der Lagerbestand < 0 ist, wird der Termin anhand der Beschaffungszeit berechnet. Dieser Termin kommt nur dann zur Anwendung, wenn kein gültiger Satz für den Teil vorkommt
  • der Verursacher wird zurückgesetzt „L_noch_kein_verurs“
    in den Dispositionen wird entsprechend dem Teil aus der Vorschlagsdatei (ggf. Platzhalter) aufgesetzt „L_disp_lesen“
    der Ausgang der Prüfung und der Verfügbarkeitsrechnung wird initialisiert „lCheck_end = 0“
    für den 1. Termin wird vermerkt, dass noch kein gültiger Satz verarbeitet wurde „lErst_guelt = 0“
  • Schleife über alle Dispositionen und alle Vorschläge des Teiles (bzw. mit Lager - geplant) mit (diese Schleife wird nur durchgelaufen, wenn mindestens ein Vorschlag - muss da sein, da Leitdatei - oder eine Disposition da ist)
  • wenn keine gültige Disposition vorhanden ist, wird der Vorschlagssatz verarbeitet (Prüfung und ggf. Verfügbarkeitsrechnung „L_check_mbp“ und als solcher gekennzeichnet „L_mbp_upd“)
  • wenn kein gültiger Vorschlag mehr vorhanden ist, wird der Dispositionssatz verarbeitet (Prüfung und ggf. Verfügbarkeitsrechnung „L_check_disp“)
  • wenn beide Sätze vorhanden sind, wird zuerst der Satz verarbeitet, der den früheren Endtermin ausweist
  • wenn es die Disposition ist „dDisp_endet < dMbp_endet“ „L_check_disp“
  • oder wenn es der Vorschlag ist „L_mbp_upd“ und „L_check_mbp“
  • wenn ein Periodenwechsel (Ende einer Periode, siehe oben) kommt
  • der Ausgang der Prüfung und der Verfügbarkeitsrechnung für die nächste Periode wird initialisiert „lCheck_end = 0“
  • wenn ein gültiger Satz gefunden wurde „lErst_guelt != 0“ und ein Vorschlag abgestellt werden soll „lMach_vorschlag != 0“ (Deckungslücke = Bedarf ist vorhanden)
  • wenn Projekte zusammengefasst werden „lProjektda“, werden die Beschaffungsvorschläge für die Projekte berechnet (der Gesamtbedarf wird auf die einzelnen Projekte entsprechend dem Projektbedarf aufgeteilt) und erstellt „L_projekt_dispo“
  • falls nicht nach Projekten geplant wurde (der Bedarf ist geblieben) oder noch ein Restbedarf verblieben ist, wird für den Rest der Bedarfsmenge ein projektneutraler Beschaffungsvorschlag erstellt „L_nbe_ber_vorschl“
  • oder werden die Mengen initialisiert, aber nicht die aktuelle verfügbare Menge. Diese geht, um die Menge der erstellten Beschaffungsvorschläge aktualisiert, in die weitere Berechnung ein
  • falls noch weitere relevante Sätze in der Vorschlagsdatei vorhanden sind, wird mit dem zuletzt gelesenen Satz aufgesetzt „L_mbp_aufsetzen“
  • falls Sätze in der Projektbezugsdatei vorhanden sind „lProjektda“, werden sie gelöscht „L_projekt_loeschen“
  • die Daten für die nächste Periode werden zurückgesetzt
  • der Verursacher wird zurückgesetzt „L_noch_kein_verurs“
  • wenn keine Deckungslücke aufgetreten ist
  • wird der letzte verarbeitete Satz (aus der Datei, die als nächste gelesen wird) angezeigt
  • wenn Vorschlagssatz „L_anz_mbp“
  • oder wenn Disposition „L_anz_disp“
  • und es wird, abhängig von dem letzten verarbeiten Satz und von dem ob noch Sätze vorhanden sind, weiter gelesen
  • wenn Vorschlagssatz „L_mbp_lesen“
  • oder wenn Disposition „L_disp_lesen“
  • Abfrage auf Abbruch
  • nach dem Ende eines Teiles (alle Vorschläge und Dispositionen verarbeitet oder es waren keine gültigen Sätze da) wird noch geprüft, ob ein Beschaffungsvorschlag erstellt werden muss (Lagerbestand war < 0), wenn ja
  • wie oben, projektabhängige Vorschläge (eigentlich nicht nötig, aber im MADRAS gibt es auch projektabhängige Teile, vielleicht kommt es noch) „L_projekt_dispo“
  • danach wie oben (das muss sein!), wenn noch Bedarf da ist
  • Beschaffungsvorschlag erstellen „L_nbe_ber_vorschl“
  • in der Vorschlagsdatei wird mit dem zuletzt gelesenen Satz aufgesetzt „L_mbp_aufsetzen“
  • löschen, falls nötig, der Projektbezugsdatei „L_projekt_loeschen“
  • bei Anzeige mit Blättern -> Weiter
  • wenn das Teil nicht zur Verarbeitung kam
  • vorbereiten für das Lesen für nächstes Teil
„L_nbe_plan_bedarf_next_teil“ Schlüssel aufbereiten und lesen nächstes Bedarfsteil
Der Schlüssel wird für das Lesen des nächsten Teils (ggf. Lagers - geplant) in der Vorschlagsdatei aufbereitet und der 1. Satz zu dem Teil wird gelesen.
Entweder die Lagernummer „L_lager_plus_1“ oder die Teilenummer „L_teil_plus_1“ erhöhen und danach lesen „L_mbp_lesen“. Bei dem Lesen wird nur die DS - falls nach DS - geprüft. Kein Gruppenwechsel möglich „lAlle_mbp = 2“.
„L_neuer_termin“ nur für 445
Neuen Liefertermin in ScrollTabList für Verursacher mit "*" eintragen
Differenz des Vorschlags zum Tagesdatum in Tagen ermitteln „L_dauer“
wenn die Differenz > 0 ist
  • aus Plantermin und Dauer neuen Liefertermin berechnen „L_liefertermin“
  • wenn der geplante Liefertermin früher ist, als der berechnete
  • neuen Liefertermin und „*“ eintragen „L_TerminEintragen“
„L_noch_kein_verurs“ Verursacher und weitere zu durchreichende Daten initialisieren
Am Anfang, beim Periodenwechsel oder Teilwechsel müssen alle Werte, die durchgereicht werden oder das Durchreichen steuern („strAuftrag“ für Verursacher), initialisiert werden.
„L_plan_verbr“ Planung eines Verbrauchsteils
Für die Planung der Verbrauchsteiles wird als Anfangsbestand immer der gesamte Lagerbestand aus dem Teilestamm verwendet.
Lesen Teilestamm-MWI „L_mwi_lesen“ ggf. mit Anzeige
Wenn ohne Fehler „lMwi_feh = 0“
  • Schleife über alle Lager des Teils (geplant, jetzt nur Hauptlager bzw. gesamt)
  • Lagerbestand und SB/MB für den zu planenden Lager ermitteln (dazu wenn nur Hauptlager Lagersatz lesen „L_lager_lesen“ oder wenn „alle Lager“ Werte aus TSS-MWI übernehmen - „lLager = 3“, geplant über alle Lager einzeln mit „L_lager_lesen_alle“)
  • Lager für die Planung in Ordnung ?
  • Nein, Meldung
  • Ja, SB/MB für die Prüfung abhängig von Parameter „lPARsbV“ bereitstellen, Fehlmenge ermitteln. Wenn Fehlmenge vorhanden ist (> 0), wird die Fehlmenge ggf. noch aufgerundet. Danach werden noch etwa vorhandene Beschaffungsvorschläge gesucht, die die Fehlmenge innerhalb der Beschaffungszeit (eingeschränkte Verfügbarkeitsrechnung bis zum berechnetem Horizont) abdecken oder auch nur zum teil abdecken „L_check_verbrauch“. Wenn auch danach noch eine Fehlmenge vorhanden ist, wird die verbleibende Menge aufgerundet „L_rund_menge“, der neue Beschaffungstermin berechnet und der Beschaffungsvorschlag abgestellt „L_vorschlag_neu“.
  • bei Anzeige mit Blättern -> Weiter
  • Abfrage auf Abbruch
„L_projekt_abst“ Projektbezug abstellen
Die Projektbezugsdatei wird nur temporär innerhalb einer Periode bzw. maximal bis zum Gruppenwechsel (Teil, Lager) benötigt und wird jedes Mal vor dem Abstellen eines projektneutralen Vorschlages verarbeitet „L_dispo_projekt“ und gelöscht „L_mpr_loeschen“.
Für die Zusammenfassung der Beschaffungsvorschläge wird ein Satz in die Projektbezugsdatei geschrieben bzw. ein vorhandener Satz aktualisiert. Ein Satz wird nur dann geschrieben, wenn eine Zusammenfassung nach Projekt gewünscht (getrennt nach Bestellungen und Fertigungsaufträgen) ist.
Satzpuffer initialisieren „L_projekt_leer“
Schlüssel Projekt eintragen
Satz lesen
wenn Satz nicht vorhanden
  • Satzpuffer initialisieren „L_projekt_leer“
  • Schlüssel Projekt, Teil und ggf. Lager eintragen
  • falls geplanter Lagerabgang, Bedarfsmenge eintragen
  • Projekt-Mengen aktualisieren „L_projekt_netto“
  • Satz schreiben „L_projekt_wrt“
wenn Satz vorhanden
  • falls geplanter Lagerabgang, Bedarfsmenge aktualisieren
  • Projekt-Mengen aktualisieren „L_projekt_netto“
  • Satz aktualisieren „L_projekt_upd“
„L_projekt_dispo“ Projekt disponieren, Vorschläge erzeugen und Abstellen
Die Planung aller Projekte, die innerhalb einer Beschaffungsperiode in der Projektbezugsdatei abgestellt wurden (siehe „L_check_disp_mbp“).
Der Projektbedarf jedes Projektes wird geprüft und falls Fehlmenge vorhanden ist, wird ein Projektvorschlag bzw. mehrere Projektvorschläge erstellt. Bei aufrunden auf Losgröße, kann der Bedarf des nächstens Projektes mit dem Vorschlag für den vorhergehenden Projekt schon abgedeckt werden.
Projektsatz initialisieren „L_projekt_leer“
Aufsetzen beim 1. Satz „L_projekt_lesen“
Mengen (Gesamtmengen „dGes_...“) für einen ggf. nötigen projektneutralen Vorschlag retten
Schleife über die Projektbezugsdatei
  • Mengen für einen Projektvorschlag aus dem Satz holen und aufbereiten, die Mengen dürfen nicht größer als die Gesamtmengen sein - kann durch Aufrunden bei folgenden Projekt auftreten (werden ggf. auf diese Mengen verringert)
  • wenn ein Vorschlag erstellt werden muss
  • Projektnummer für Vorschläge weiterleiten
  • Vorschlag berechnen und erstellen „L_nbe_ber_vorschlag“
  • die Gesamtmengen um die Vorschlagsmengen vermindern
  • nächsten Satz lesen „L_projekt_next“
    die verminderten Mengen in die laufenden Mengen eintragen
    wenn noch projektneutrale Vorschläge nötig sind
  • Merker für erstellen von Vorschlägen setzen
    Projektnummer für Vorschläge auf „kein Projekt“ setzen
    Projektbezugsdatei löschen „L_projekt_loeschen“
    Merker, dass keine Projektdaten da sind setzen
„L_projekt_netto“ Mengen für Projektbezug eintragen
Die Mengen, die für die Planung der Projekte benötigt werden, werden in den Satz eingetragen bzw. aktualisiert. Diese Mengen werden für das berechnen und erstellen der einzelnen Vorschläge verwendet.
Das sind:
  • verfügbare Menge des Projektes
und aus Reservierungen in der Vorschlagsdatei nach Auswertung der Optionen im Teilestamm bzw. Stücklistenposition:
  • Bedarfsmenge „ohne Generierung“ und „sofort“
  • Bedarfsmenge „ohne Generierung“
  • Bedarfsmenge „sofort“
„L_reservierung“ Reservierungen für einen Fertigungsvorschlag erzeugen
Materialreservierungen aus den Komponenten der Stückliste und/oder des Arbeitsplanes erzeugen und in der Vorschlagsdatei abstellen. Die Reservierungen werden für die Fertigungsvorschläge der letzten Stufe, die noch nicht verarbeitet sind, erstellt. Dabei werden auch Scheinbaugruppen berücksichtigt. Wenn nur der Hauptlager geplant wird, werden Fertigungsaufträge für einen Nebenlager nicht bearbeitet.
Teilestammsatz des Baukastens (Fertigungsauftrag) lesen „L_teil_lesen“
Den zugehörigen Teilestamm-MWI lesen „L_mwi_lesen“
ggf für Anzeige Lagerstammsatz lesen „L_lager_lesen“
ggf. Anzeigen Baukastenkopf „L_anz_mbpbk“
wenn nur Hauptlager und Fertigungsvorschlag auf einen Nebenlager ist, Merker für „nicht bearbeiten lMwi_feh“ setzen
wenn Teil gültig und Merker für Reservieren
  • Auswählen „Standard“ oder „Extra“ Arbeitsplan für die Reservierung
  • Vorbereitung auf Stücklisten- bzw. Arbeitsplanauflösung
  • wenn Reservierungen aus Stückliste (parameterabhängig)
  • Reservierungen aus Stückliste erzeugen „L_kopsl“
  • wenn Reservierungen aus Arbeitsplan
  • Reservierungen aus Arbeitsplan erzeugen „L_kopap“
  • Aufsetzen auf dem letzten gelesenen Vorschlagssatz - Fertigungsvorschlag, für den die Reservierungen durchgeführt wurden „L_mbp_aufsetzen“
  • in dem Satz das Ergebnis der Reservierung eintragen „L_mbp_upd“
  • vermerken, dass neue Reservierungen erzeugt wurden und die Planung fortgesetzt werden soll „lFapos = 1“ bzw. Melden, dass keine Komponenten gefunden wurden
  • wenn mit Blättern -> Weiter
„L_rund_menge“ Vorschlagsmenge Runden
Für Einkaufsteile wird zuerst der Ausschuss berechnet (Funktion „ausschuss“).
Die Vorschlagsmenge wird, abhängig von Parameter (getrennt für Bestellung und Fertigungsauftrag), auf die Losgröße aufgerundet „L_ber_lg“ und vermerkt. Anschließend wird die Menge, falls kleiner als die Mindestmenge, auf die Mindestmenge erhöht.
Für Fertigungsteile wird der Ausschuss berechnet.
Die Vorschlagsmenge wird entsprechend der Vorschrift (aus SIBPPS.INI, getrennt für Einkaufs- und Fertigungsteile) aufgerundet (Funktion „aufrunden“).
Für Einkaufsteile wird aus der Vorschlagsmenge die Gutmenge berechnet.
Überschreitet die Menge die maximale Menge, wird dies Protokolliert und vermerkt.
„L_sba_platz“ Erzeugen „S“ bzw. „!“
Prüfung und erstellen der Pseudovorschläge eines Bedarfsteiles für einen geplanten Verbrauch (Lagerabgang) des Sicherheits- bzw. Meldebestandes „S“ oder Platzhalters für die Disposition eines Teils „!“. Für die Planung eines Teils ist in der Vorschlagsdatei nur ein Satz notwendig, deswegen wird, auch wenn alle Kriterien zutreffen nur 1 Satz abgestellt.
Lesen Teilestamm-MWI „L_mwi_lesen“ ggf. mit Anzeige
Wenn ohne Fehler „lMwi_feh = 0“
  • Schleife über alle Lager des Teils (geplant, jetzt nur Hauptlager bzw. gesamt)
  • Lagerbestand und SB/MB für den zu prüfenden Lager ermitteln (dazu wenn nur Hauptlager Lagersatz lesen „L_lager_lesen“ oder wenn „alle Lager“ Werte aus TSS-MWI übernehmen - „lLager = 3“, geplant über alle Lager einzeln mit „L_lager_lesen_alle“)
  • Lager für die Planung in Ordnung ?
  • Nein, Meldung
  • Ja, SB/MB abhängig von Parameter „lPARsbV“ bereitstellen, Fehlmenge ist der SB/MB. Wenn Fehlmenge vorhanden ist (> 0) und der Parameter „lPARsbaN“ so eingestellt, dass der SB/MB nicht verfügbar ist, muss der Pseudovorschlag erstellt werden. Dazu wird der Termin des geplanten Abgangs ermittelt. Der Abgang kann zum Tagesdatum erfolgen „lPARsbaN = 1“ oder der Reichweite des SB/MB ab Tagesdatum (zum Ende der Projektlaufzeit „lPARsbaN = 2“ und einer ggf. vorhandenen Korrektur) „L_ber_reichweit“. Danach wird der Pseudovorschlag abgestellt „L_vorschlag_neu“.
  • Falls kein „S“-Vorschlag abgestellt wurde und der Lagerbestand < 0 ist und der Parameter „lPARohneDB“ gesetzt ist, wird ein Platzhalter abgestellt „L_mbp_platz“.
  • bei Anzeige mit Blättern -> Weiter
  • Abfrage auf Abbruch
„L_start_ende“ Start- bzw. Endtermin berechnen
Aus Starttermin Endtermin bzw. aus Endtermin Starttermin berechnen. Für die Berechnung wird die Servicefunktion „SvcTimeOperation“ für Zeitrechnung angewendet. Die Dauer (Beschaffungszeit) wird in Tagen angegeben (Kompatibilität mit FST531 ist gewährleistet).
Aufrufparameter
  • Arbeitszeit = 2
  • die Beschaffungszeit wird unter einbeziehen von der Menge, der Beschaffungszeit und der Menge pro Beschaffungszeit berechnet
  • falls die errechnete Beschaffungszeit < Mindestbeschaffungszeit ist, wird die Mindestbeschaffungszeit verwendet
  • die Dauer wird auf 2 NK-Stellen gerundet
  • Startzeit 00:00 (siehe auch Fertigungsvorschlag weiter unten)
  • Endzeit 24:00 (siehe auch Fertigungsvorschlag weiter unten)
  • ist der Verursacher ein Kundenauftrag, so wird als Endzeit 00:00 des Liefertermins angenommen, damit an diesem Tag sicher geliefert werden kann
  • Beschaffungszeit aus Arbeitsplan ermitteln wenn lPARbsz = 1, Fertigungsauftrag berechnet wird und Spiel einbezogen werden soll
Die Berechnung ist für Bestellvorschlag und für Fertigungsvorschlag verschieden.
Bestellvorschlag
  • Kalender = 1
  • die berechnete Beschaffungszeit wird um 1 Tag erhöht, da der 1. Tag der Bestelltag ist und dieser nicht in die Beschaffungszeit eingerechnet wird
  • eine, in dem Parameter „P371    “ vorgegebene Korrekturzeit, wird eingerechnet
Fertigungsvorschlag
  • Kalender = 2
  • wenn im „P371    “ „mit Spiel“ aktiviert ist, wird der Faktor aus „P500dehn“ angewandt
  • bei der Berechnung vom Endtermin wird als Startzeit die Endzeit des Vorgängers (falls vorhanden) verwendet
  • bei der Berechnung vom Starttermin wird als Endzeit die Endzeit des Nachfolgers (Verursacher) (falls vorhanden) verwendet
Wenn ein Fehler auftritt, wird das Eingangsdatum als Ausgangsdatum eingesetzt und eine Meldung ausgegeben.
„L_such_deckl“ Suchen der Deckungslücke für einen Teil
Für einen Teil wird die erste Deckungslücke (innerhalb einer Planungsperiode ist der verfügbarer Bestand < 0) gesucht.
Prüfen, ob schon ein Satz in der Vorschlagsdatei für den Teil vorhanden ist „L_mbp_suche“
wenn kein Satz für den Teil vorhanden ist
  • Teil lesen „L_teil_lesen“
  • Selektion der Teile (nur AP-NBE Materialbeschaffung) „L_SelektionAPTeiledaten“
  • wenn Bedarfsteil und Teil gültig
  • -             Lesen Teilestamm-MWI „L_mwi_lesen“ ggf. mit Anzeige
  • -             wenn ohne Fehler „lMwi_feh = 0“
  • Lagerbestand für den Lager aus der Disposition ermitteln (dazu wenn nur Hauptlager Lagersatz lesen „L_lager_lesen“ oder wenn „alle Lager“ den Bestand aus TSS-MWI übernehmen - „lLager = 2“, geplant über alle Lager einzeln auch mit „L_lager_lesen“)
  • Lager für die Planung in Ordnung ?
  • Nein, Meldung
  • Ja, Horizont für das Suchen abhängig von dem Parameter „lPARhoriN“ ermitteln (Eingabe oder Projektlaufzeit des Teiles „L_ber_reichweit“)
  • falls der Endtermin der 1. Disposition hinter dem Horizont liegt, wird keine Deckungslücke gesucht
  • Schleife über die Dispositionen bis zum ersten Periodenwechsel (lCheck_end = 1) mit Deckungslücke (dFehlmenge <= 0) mit
  • Schleife über die Dispositionen bis zum Periodenwechsel (lCheck_end = 1) mit
  • Prüfung der Disposition mit Verfügbarkeitsrechnung „L_check_disp“
  • wenn kein Periodenwechsel
  • ggf. Anzeige der Disposition „L_anz_disp“
  • Lesen nächste Disposition „L_disp_lesen“
  • Abfrage auf Abbruch
  • neuen Horizont für die äußere Schleife aus der nächsten Disposition eintragen
  • Abfrage auf Abbruch
  • nach dem Ende der Schleifen, wenn Deckungslücke gefunden
  • Platzhalter für Teil mit Deckungslücke abstellen „L_mbp_platz“
  • bei Anzeige mit Blättern -> Weiter
  • wenn Teil ungültig war und „lPARlago > 1“ (geplant)
  • Teilenummer für nächstes Teil in DISP-BEW erhöhen „L_teil_plus_1“
  • wenn noch kein Ende der Dispositionen und letzte Disposition für bereits bearbeiteten Teil (Deckungslücke gefunden)
  • abhängig von „lPARlago“
  • Lagernummer für nächsten Lager in DISP-BEW erhöhen „L_lager_plus_1“
  • oder Teilenummer für nächstes Teil in DISP-BEW erhöhen „L_teil_plus_1“
  • in Dispositionen mit neuem Teil oder Lager aufsetzen „L_disp_lesen“
  • oder wenn noch kein Ende der Dispositionen und gelesene Disposition für nächsten Teil bzw. Lager (geplant)
  • Daten aus gelesener holen „L_disp_daten“
„L_teil_daten“ Teiledaten versorgen
Das ist ein Teil von „L_teil_lesen“.
Es werden folgende Daten ausgewertet und versorgt:
  • Dispositionsart „lTSSdart“: 1 = verbrauchsgesteuert, 2 = bedarfsgesteuert
  • Beschaffungsart „lTSSbaB“; 1 = Kaufteil, 0 = Fertigungsteil
  • Losgröße für Runden
  • Ausschussfaktor
  • Beschaffungszeiten mit Menge pro Beschaffungszeit zur Berechnung der Laufzeit (bei neuem Einkauf ggf. aus Teil-Lieferfant-Beziehung oder aus Lieferant)
  • letzter Lieferant (für Bestellungen)
  • Lagerbestand für Berechnung der Verfügbarkeit
  • Beistellung (ohne, soll keine Reservierung erfolgen), wird nicht ausgewertet
Für die Erstellung der Vorschläge werden versorgt:
  • neue Beschaffungsart „lNeubart“ (laut der Tabelle aus MBP37BP.CXX)
  • aus Parameter wird die Genauigkeit der Periode für die Zusammenfassung vorbelegt
  • Basismenge
Ausnahme für Lieferterminprüfung (445): Falls auch Verbrauchsteile geprüft werden, werden alle Teile wie bedarfgesteuerte Teile behandelt.
„L_teil_gesp“ Teil prüfen
Das ist ein Teil von „L_teil_lesen“.
Es wird geprüft, ob das Teil für die MBP vorgesehen ist, nur Teile die verbrauch- bzw. bedarfgesteuert sind, werden als fehlerfrei erkannt.
Das Teil darf nicht gesperrt sein (z.B. für Löschen vorgesehen). Außerdem werden Pseudoteile
„L_teil_lesen“ Teilestammsatz lesen
Das Teil laut dem „strTeil“ wird gelesen und ggf. Angezeigt. Das Teil wird geprüft „L_teil_gesp“ und alle relevante Daten werden versorgt „L_teil_daten“
  • Fehlerausgang „lTeil_feh“ > 0
  • Teil verarbeiten „lTeil_ok = 1“ wird nur gesetzt, wenn kein Fehler und das Teil für die Verarbeitung vorgesehen ist
„L_teil_next“ Lesen nächstes Teil
In einer Schleife wird so lange gelesen, bis ein Teil, der für die MBP vorgesehen ist, gefunden wird. Die Auswertungen, wie bei „L_teil_lesen“, werden durchgeführt.
„L_teil_plus_1“ Teilenummer erhöhen
Die Teilenummer wird nicht arithmetisch erhöht (kann auch Alphanumerisch sein), sondern es wird der ASCI-Wert der letzten Stelle der Nummer um 1 erhöht.
„L_vorschlag_neu“ Vorschlag erstellen
Einen Satz für die Vorschlagsdatei aufbauen und dort schreiben. Der Aufbau richtet sich nach „lNeubart“.
Zuerst wird der aktuelle Vorschlagssatz gerettet. Danach wird der Satz initialisiert. Alle benötigten Felder werden abhängig von der neuen Buchungsart versorgt. Der Lagerort wird abhängig von der Buchungsart (Bestellung bzw. Fertigungsauftrag) eingetragen. Der Ausschuss SOLL wird berechnet. Verursacher und ggf. Farbe werden eingetragen.
Falls eine Anfrage abgestellt werden soll, aber die Anfragen laut Parameter nicht in die Verfügbarkeit eingehen, wird statt der Anfrage ein Bestellvorschlag erzeugt.
Wenn die Anzeige der Sätze eingeschaltet ist, wird die neue verfügbare Menge berechnet und der Vorschlag angezeigt.
Der „sofort“-Merker wird zurückgesetzt.
Der Satz wird geschrieben und etwa vorkommende Hinweise bzw. Meldungen ausgegeben.
Am Ende wird noch der ursprüngliche (gerettete) Vorschlagssatz wiederhergestellt.
Funktionen (in MERUNDEN.HPP und CXX)
aufrunden Aufrunden der Vorschlagsmenge laut Vorschrift
Laut der Vorschrift wird abhängig von Einkaufs- oder Fertigungsteil die Vorschlagsmenge auf die vorgegebene Anzahl der Nachkommastellen aufgerundet. Für die Einkaufsteile wird die Rundung für die Bestelleinheit durchgeführt.
ausschuss Berechnen der Menge inklusive Ausschuss
Falls ein Ausschussfaktor bei dem Teil eingetragen ist, wird die Menge inklusive Ausschuss nach der Formel
Menge mit Ausschuss = Menge ohne Ausschuss + Menge ohne Ausschuss * Ausschussfaktor /     
            (100 - Ausschussfaktor)
berechnet.
Sonstige Unterprogramme
Sonstige Unterprogramme, die für die eigentliche Planung nicht verwendet werden, sind alphabetisch nach dem Labelnamen sortiert aufgeführt.
„L_anz_check“ Vorbereitung und Prüfung der Zeilenanzeige
Prüfen, abhängig von Anzeigeparameter, ob Zeile ausgegeben werden soll. Anzeigemerker (wird in den eigentlichen Anzeigefunktionen ausgewertet) setzen. Wenn Anzeigebereich voll ist, ggf. Blättern.
„L_anz_disp“ Aktuelle Disposition anzeigen
Prüfung, ob Anzeige erfolgen soll „L_anz_check“, keine Anzeige wenn Lieferterminprüfung (445) oder als Ergebnis aus der Prüfung.
Aufbereiten der Disposition (wird nicht zurückgeschrieben) und der Anzeigefelder im Ausgabepuffer.
„L_anz_haupt_dia“ Hauptdialog ausgeben
Die Anzeige muss wegen dem Abbruchdialog ausgeführt werden, wenn die NBE ohne Anzeige ausgeführt wird. Wenn die „CancelBox“ nicht gelöscht wird und nicht noch an einen aktiven Dialog „angehängt“ wird, geht kein Abbruch mehr.
„L_anz_mbp“ Aktuellen Vorschlagssatz anzeigen
Nicht für Materialreservierung.
Prüfung, ob Anzeige erfolgen soll „L_anz_check“, keine Anzeige wenn Ergebnis aus der Prüfung. Prüfen Starttermin „L_mbp_pruf_start“, Aufbereiten der Anzeigefelder im Ausgabepuffer.
Ausnahme Lieferterminprüfung (445): Nur Beschaffungsvorschläge (keine Reservierungen) werden in der ListBox angezeigt.
„L_anz_mbpbk“ Aktuellen Baukastenkopf (Fertigungsauftrag) anzeigen
Der Baukastenkopf (Fertigungsauftrag) bei der Materialreservierung anzeigen.
Prüfung, ob Anzeige erfolgen soll „L_anz_check“, keine Anzeige wenn Lieferterminprüfung (445) oder als Ergebnis aus der Prüfung. Prüfen Starttermin „L_mbp_pruf_start“, Aufbereiten der Anzeigefelder im Ausgabepuffer.
„L_anz_mbpko“ Aktuelle Komponente (Materialreservierung) anzeigen
Die Fertigungsauftragszeile bei der Materialreservierung anzeigen.
Prüfung, ob Anzeige erfolgen soll „L_anz_check“, keine Anzeige wenn Lieferterminprüfung (445) oder als Ergebnis aus der Prüfung. Prüfen Starttermin „L_mbp_pruf_start“, Aufbereiten der Anzeigefelder im Ausgabepuffer.
„L_lese_lagertext“ Lagerbezeichnung für Hauptlager lesen
Beim Fehler wird SPACE zurückgegeben.
„L_lif_lesen“ Lesen des letzten Lieferanten für Bestellvorschlag
Der Lieferant (alter Einkauf – bEKAalt - D26 bzw. neuer Einkauf D100) wird mit Auswertung der möglichen Fehler (nicht aktiv, Liefersperre) gelesen.
„L_loe_cancel_box“ Löschen Abbruchdialog
Der Abbruchdialog wird mit dem Merker für Abbruchdialog gelöscht.
„L_meldung“ Ausgabe der Meldungen
Fehler oder sonstige Meldungen aufbereiten und ausgeben, Protokollfenster und/oder Protokolldatei versorgen. Wird fast immer verwendet.
„L_mbp_lesd“ Direktes Lesen eines Satzes aus der Vorschlagsdatei
Ein Satz wird direkt gelesen, nur Systemfehler werden ausgewertet.
„L_mbp_pruf_start“ liegt der Starttermin eines Vorschlags vor Tagesdatum
Falls der Starttermin vor dem Tagesdatum liegt, wird „*“ in den Anzeigepuffer abgestellt. Außerdem wird „!“ für Beschaffung sofort und ein „A“ für Anfrage abgestellt.
„L_mbp_suche“ Direktes Suchen eines Satzes in der Vorschlagsdatei
Ein Satz wird direkt gelesen „L_mbp_lesen“ und bei der Übereinstimmung von Teilenummer und/oder Lagernummer wird der Erfolg gemeldet „lMbp_da = 1“. Nur Systemfehler werden ausgewertet.
„L_nach_pabl“ Aktuelle Eingaben in den Ablaufparameter abstellen
Die Eingaben und die aktuellen Einstellungen müssen für die weitere Bearbeitung gesichert werden. Insbesondere, wenn das Programm verlassen und wieder fortgesetzt werden soll. Nach dem Programmstart sind keine neue Eingaben, die die Planung beeinflussen, zulässig und auch keine geänderten Einstellungen (Parameter) wirksam.
„L_nettobedarf0“ Werte < 0.001 oder > -0.001 auf 0 Setzen
Wegen der Ungenauigkeit beim Rechnen mit MS-Basic. Wenn im C++ nicht mehr nötigt, kann es entfallen.
„L_neues_bild“ Rollbereich für Positionsanzeige löschen, Zeilenzähler zurücksetzen
„L_projekt_leer“ Projektbezugssatz initialisieren
Satzinhalt löschen (SPACE) und Kennung „P“ für Projektbezug eintragen.
„L_projekt_lesen“ Direktes Lesen eines Projektbezugssatzes
Direktes Lesen eines Satzes mit/ohne vorgegebene Sperre. ISN für Update sichern.
„L_projekt_next“ nächsten Satz aus der Projektbezugsdatei lesen
Nächsten Satz ohne Sperre lesen.
„L_projekt_upd“ schreiben eines geänderten Satzes in die Projektbezugsdatei
Der geänderte Satz wird geschrieben.
„L_projekt_wrt“ schreiben eines Satzes in die Projektbezugsdatei
Ein Satz wird geschrieben und der Merker, dass Projektdaten vorhanden sind, gesetzt.
„L_SelektionAPTeiledaten“ Selektion der Teile
Für die AP-NBE Materialbeschaffung werden die Teile laut den Eingaben im Selektionsdialog ausselektiert.
„L_TerminEintragen“ nur für 445
Neuen realisierbaren Liefertermin und „*“ in ScrollTabList für Anzeige eintragen.
„L_unter“ Abfrage auf Abbruch
Abfrage der Dialogbox für Abbruch, falls „Abbruch“ betätigt wurde, entscheiden, wie weiter vorgehen in „L_weiter“.
„L_weiter“ Blättern bzw. Abbruch
„Abbruch“ wurde betätigt bzw. Blättern, Abbruch bestätigen lassen. Im „L_endebild“ Auswahl der Anzeige, der Blätterfunktion bzw. Unterbrechen nach der laufenden Phase.
„L_wobini“ Zustand der NBE ermitteln
Aus den Merkern aufbereiten, wie weit die NBE ist. Für die Zustandsanzeige.