6 Zum Programm
I. Grobablauf
Die Programme VAR828 und VAR829 generieren die auftragsindividuellen Stücklisten und Arbeitspläne aus den Variantenstücklisten, den Variantenarbeitsplänen und dem zugeordneten Typenblatt. Das Programm zur Generierung von Stücklisten und Arbeitsplänen verfügt über zwei Betriebsmodi, die über das Flag MKbatch% gesteuert werden.
-
Einzelgenerierung nach Auftragsposition (VAR829)In diesem Fall wird die Eingabe einer Auftragsposition erwartet. Die eingegebene Position kann nur dann abgearbeitet werden, wenn für diese ein Bedarfssatz vorhanden ist. Die Bedarfssätze verfügen über ein Feld (ID=26), welches die Generierung steuert und in welchem die Generierung Informationen ablegt:Mmarkiert für die Generierung in 828 (Batchlauf)GGenerierung bereits erfolgreich abgeschlossenLGenerierung läuft nochFAbbruch oder Fehler während der Generierung (nicht erfolgreich)" "bisher noch nicht bearbeitetEine Generierung ist immer möglich, solange das Kennzeichen NICHT "L" ist.
-
Batchlauf (VAR828)Im Batchlauf arbeitet das Programm in einer Endlosschleife die Nachrichten-Datei ab. In dieser Datei sind die einzelnen Bedarfssätze der Auftragspositionen mit Hilfe von VAR827 für die Generierung markiert. Findet das Programm einen solchen Satz, so wird er wie in a) generiert. Danach wird der nächste markierte Satz gesucht. Ist keiner mehr zu finden, so wird erst nach dem in "waittime" definierten Zeitintervall erneut zu lesen versucht.
-
StrukturabarbeitungDie Struktur wird baukastenweise abgearbeitet, d.h. es wird erst ein Baukasten generiert und danach an der neu entstandenen Stückliste tiefergegangen. Die Rücksprungadressen (=Stücklistensätze) werden auf einem zweiteiligen Stack abgelegt; die ISN auf "stckisn&()" und die Keys auf "stckkey$()". Zeigt ein Stücklistensatz auf ein Standardteil, so wird über den Stack zum übergeordneten Teil zurückgekehrt und sequentiell der nächste Satz gelesen. Die Generierung erfolgt nach der Struktur der angegebenen Variante, d.h. "erst in die Tiefe dann in die Breite". Nach jeder Variantenstücklistenauflösung wird der zugehörige Variantenarbeitsplan aufgelöst, falls er vorhanden ist.Beispiel für die Struktur:(1) AI4711 ┐├ (2) AI4711A ┬ (3) AI4711A01│ ││ └ (4) AI4711A02│├ (5) AI4711B ┬ ...│ ││ └ ...│└ AI4711C ┬ ...│└ ...
II. Generierung eines Baukastens (Stichworte)
-
Schlüsselwörter
Sollten noch mehr nötig sein, hier einfügen!-
Keyword
-
Bedeutung
-
Variable
-
gültig in
-
STATUS
-
Status
-
KWstatus$
-
RF,STL,APL
-
TEIL
-
Komponente
-
KWteil$
-
RF,STL
-
MENGE
-
Menge
-
KWmenge#
-
RF,STL
-
VLZK
-
Vorlaufzeitkorr.
-
KWvlzk#
-
RF,STL
-
VPREIS
-
Verrechnugspreis
-
KWvpreis#
-
RF,STL
-
GEWICHT
-
Gewicht
-
KWgewicht#
-
RF,STL
-
TYP
-
Prod.mitteltyp
-
KWtyp$
-
RF,APL
-
PM
-
Produktionsmittel
-
KWpm$
-
RF,APL
-
ZB
-
KZ Zeitberechnung
-
KWzb$
-
RF,APL
-
TR
-
Rüstzeit
-
KWtr#
-
RF,APL
-
TE
-
Ausführungszeit
-
KWte#
-
RF,APL
-
MC
-
Mengencode
-
KWmc$
-
RF,APL
-
SF
-
Splittfaktor
-
KWsf#
-
RF,APL
-
UELAP
-
Überlappungsfaktor
-
KWuelap#
-
RF,APL
-
KZUEGZ
-
KZ Übergangszeit
-
KWkzuegz$
-
RF,APL
-
UEGZFIX
-
Übergangszeit fix
-
KWuegzfix#
-
RF,APL
-
UEGZVAR
-
Übergangszeit var
-
KWuegzvar#
-
RF,APL
-
PERS
-
Personal
-
KWpers$
-
RF,APL
-
MST
-
Meilenstein
-
KWmst$
-
RF,APL
-
"oberste" Variante
-
KWvariante$
-
RF,STL,APL
-
VARIANTE
-
TEXT
-
Text für T,B-Zeile
-
KWtext$(n)
-
RF,STL,APL
-
FREI
-
freier Platz für weiteres Keyword
weitere Schlüsselwörter sind:-
ENDE
-
Ende Generierung
-
RF, STL, APL
-
RECHNE
-
Aufruf der Rechenfunktione$
-
(RF), STL, APL
-
SPRINGE
-
Sprunganweisung
-
RF, STL, APL
-
ABS
-
Rechne Absolutwert
-
RF
-
REST
-
Rechne Restwert (Modulo)
-
RF
-
INT
-
Integer-Division
-
RF
-
-
Für fast jedes der oberen Schlüsselwörter gibt es einen Merker (nicht für kwvariante$ und KWtext$), der anzeigt, ob ein Schlüsselwort gefüllt wurde oder nicht. Bei der Initialisierung werden die Felder mit "false%" initialisiert. Wird nun ein Schlüsselwort gefüllt, so erhält der zugehörige Merker (MKkwstatus% bei KWstatus$) den Wert true%". Alle $-Schlüsselworte werden zusätzlich mit ASCII(254) initialisiert.
-
Werden AIF-Teile angelegt (bei Variantenstücklisten), so werden die Felder "Verrechnungspreis" und "Gewicht" aus den Schlüsselwörtern "KWvpreis$" und "KWgewicht$" übernommen. Dies geschieht aber nur, wenn vorher der jeweilige Merker (MKkwvpreis%, MKkwgewicht%) gesetzt, d.h. das entsprechende Schlüsselwort gefüllt wurde.
-
Das Schlüsselwort TEXT (KWtext$) wird in VSTL für T-Zeilen und in Vapl für B-Zeilen gefüllt. TEXT kann fünfmal pro Block, d.h. für eine T-Zeile oder B-Zeile gefüllt werden. Die Text-Zeile muss die- selbe Positionsnummer besitzen wie sie E-Zeilen mit den TEXT-Zuweisungen. Ein "@" in der Text-Zeile wird durch ein vorher angegebenes Schlüsselwort (TEXT=...) ersetzt. Dabei wird das erste "@" einer T- oder B-Zeile durch die erste TEXT-Zuweisung des Blockes ersetzt. Die Variable textnr% sorgt für die richtige Zuweisung (=Einhaltung der Reihenfolge). Ist textnr% gleich NULL, so wurde kein TEXT zugewiesen. Für KWtext$ gibt es keinen Merker, diese Funktion wird von textnr% übernommen. Dem Schlüsselwort TEXT können numerische oder Character-Werte zugewiesen werden. Dies können Konstanten, Variable oder Parameter sein.Beispiel:TEXT =TEXT =TEXT =999TEXT =ParameterTEXT =R01
-
-
S-Zeile in Stückliste generieren, A-Zeile in Arbeitsplan generierenDie Felder der Variantenstückliste (-arbeitsplan) werden in die normale Stückliste (Arbeitsplan) übernommen. Von den Schlüsselworten werden nur diejenigen übernommen, deren Merker gesetzt (=true%) ist. Vorbelegte Schlüsselworte aus einem Entscheidungsblock gelten nur für eine S- bzw. A-Zeile mit derselben Positionsnummer. Werte aus Schlüsselwörtern, deren Merker gesetzt (=true%) ist, überschreiben Felder der Variantenstückliste (-arbeitsplan), sofern die PosNr der E-Zeilen gleich der der S-Zeile(A-Zeile) ist. Die Maßeinheit für die Stückliste wird aus TSS oder VTSS übernommen
-
Entscheidungsblock
-
ein Block ist durch gleiche Positionsnummern gekennzeichnet
-
neuer Block => neue PosNr (Blockende wird durch neue PosNr gekennzeichnet)
-
Kommentar ist überall möglich
-
LABEL (Sprungadresse) ist am Anfang und vor einer S- bzw. A-Zeile möglich
-
nur eine S- bzw. A-Zeile pro Block
-
E-Zeilen sind ohne S-(A-)Zeilen möglich
-
S-(A-)Zeilen sind ohne E-Zeilen möglich
-
mehrere S-(A-)Zeilen mit gleicher PosNr sind nicht möglich
-
T-(B-)Zeilen sind nur direkt nach einer S-(A-)Zeile oder einer T-(B-) Zeile möglich
-
T-Zeilen werden 1:1 in STÜLI-T übernommen, unter Beachtung von KWtext$(n)
-
B-Zeilen werden 1:1 in ARBPLN-B übernommen, unter Beachtung von KWtext$(n)
-
PositionsnummerPosNr und UPosNr aus der Variantenstückliste oder dem Variantenarbeitsplan werden 1:1 übernommen. Eine eventuelle lückenhafte Nummerierung kann in PDV121 oder PDV141 über F3=Numerieren geändert werden.
-
AIf-Teil (auftragsindividuelles Folgeteil)Für Varianten in der Stückliste eines AI-Teiles werden AIF-Teile angelegt. Es werden TSS, TSS-MWI und LAGER mit Teilenummer = aift$ angelegt. LagerNr aus Auftrag nur für das übergeordnete Teil (AI-Teil); für AIF-Teile LagerNr aus VTSS (Feld 18) holen.
-
Fehlerbehandlung beim Generieren
-
Block abbrechen, wenn Fehlernummer < 100; beim nächsten Block weitermachen
-
wenn Fehlernummer = 100 => Generierung ganz abbrechen
-
bei den Rechenfunktionen wird entsprechend verfahren; nach einer abgebrochenen Rechenfunktion wird die Generierung fortgesetzt
-
fehlende Parameter-Definitionen /-Werte
-
bei Dialogeingabe:
-
dynamisches Anlegen von Parameter und/oder Parameterwert im Eingabefenster; es wird ein Satz in der Datei Typenblatt-Parameter angelegt
-
bei Batchbetrieb:
-
Ausgabe einer Fehlermeldung in das Protokoll
-
fehlende FelderFehlende Felder werden mit "*" gefüllt; in PDV121 und PDV141 ist dies aber für Teilenummer bzw, Arbeitsplatz (Prod.mittel) nicht möglich! Deshalb wurde eine Fehlerteilenummer und ein Fehlerproduktionsmittel angelegt:Teilennummer"FEHLER"Bezeichnung"Fehler bei Generierung (STL)"Prod.mitteltyp"MG"Produktionsmittel"FEHLER"Bezeichnung"Fehler bei Generierung (APL)"Fehlernummernrc% < 100Fehler wird toleriert, d.h. Generierung / Rechenfunktion wird beim nächsten Block fortgesetzt.rc% = 100Fehler führt zum Abbruch der Generierung bzw. der Rechenfunktion0kein Fehler!1Ungültiges Zeichen2Fehlerhafter Ausdruck5Division durch NULL nicht erlaubt6Bei INT(..) und REST(..) muss -32768 < Rechenfeld < 32767 sein!7Funktion nicht erlaubt10Definition fehlt11Variable nicht erwartet12Zweite Variable vom falschen Typ13Operator nicht erlaubt14Unbekanntes Schlüsselwort15Variable nicht nummerisch16Für Zuweisung nicht erlaubt17Für Rechenfunktionszuweisung nicht erlaubt20Bedingung nicht korrekt abgeschlossen21Anweisung nicht korrekt abgeschlossen25Textkonstante zu lang30Variable nicht erlaubt35Maximale Anzahl von TEXT-Variablen erreicht50Bedingung bereits abgeschlossen51Bedingung noch nicht abgeschlossen52Bedingung noch nicht abgeschlossen (ohne Anzeige)60Parameter hat keinen Startwert61Parameter nicht definiert62Falsches Format für Parameterwert101Abbruch mit ESC (bei SPRINGE-Anweisung)102Fehler "@" beim Bearbeiten der Protokollausgabe110Lesefehler in Datei 'Rechenfunktionen'111Rechenfunktion nicht gefunden112Kopfsatz der Rechenfunktion fehlt113Label in Rechenfunktion nicht gefunden121Variantenstückliste nicht gefunden123Label in Variantenstückliste nicht gefunden125Fehler beim Schreiben der Stückliste (S-Zeile)126Fehler beim Schreiben der Stückliste (T-Zeile)130Fehler beim Lesen 'Typenblatt-Parameter'131Fehler beim Update 'Typenblatt-Parameter'132Fehler beim Schreiben von 'Typenblatt-Parameter'141Variantenarbeitsplan nicht gefunden143Label in Variantenarbeitsplan nicht gefunden145Fehler beim Schreiben des Arbeitsplanes (A-Zeile)146Fehler beim Schreiben des Arbeitsplanes (B-Zeile)
