infra:NET Expert
 
×
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:
    M
    markiert für die Generierung in 828 (Batchlauf)
    G
    Generierung bereits erfolgreich abgeschlossen
    L
    Generierung läuft noch   
    F
    Abbruch oder Fehler während der Generierung (nicht erfolgreich)
    " "
    bisher noch nicht bearbeitet   
    Eine 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.
  • Strukturabarbeitung        
    Die 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
    • 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
    •  
    •  
    Sollten noch mehr nötig sein, hier einfügen!
    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 =
    999
    TEXT =
    Parameter
    TEXT =
    R01
  •  
  • S-Zeile in Stückliste generieren, A-Zeile in Arbeitsplan generieren   
    Die 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)
  • Positionsnummer
    PosNr 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 Felder
    Fehlende 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)"
    Fehlernummern
     
    rc% < 100
    Fehler wird toleriert, d.h. Generierung / Rechenfunktion wird beim nächsten Block fortgesetzt.
    rc% = 100  
    Fehler führt zum Abbruch der Generierung bzw. der Rechenfunktion
    0
    kein Fehler!
    1
    Ungültiges Zeichen
    2
    Fehlerhafter Ausdruck
    5
    Division durch NULL nicht erlaubt
    6
    Bei INT(..) und REST(..) muss -32768 < Rechenfeld < 32767 sein!
    7
    Funktion nicht erlaubt
    10
    Definition fehlt
    11
    Variable nicht erwartet
    12
    Zweite Variable vom falschen Typ
    13
    Operator nicht erlaubt
    14
    Unbekanntes Schlüsselwort
    15
    Variable nicht nummerisch
    16
    Für Zuweisung nicht erlaubt
    17
    Für Rechenfunktionszuweisung nicht erlaubt
    20
    Bedingung nicht korrekt abgeschlossen
    21
    Anweisung nicht korrekt abgeschlossen
    25
    Textkonstante zu lang
    30
    Variable nicht erlaubt
    35
    Maximale Anzahl von TEXT-Variablen erreicht
    50
    Bedingung bereits abgeschlossen
    51
    Bedingung noch nicht abgeschlossen
    52
    Bedingung noch nicht abgeschlossen (ohne Anzeige)
    60
    Parameter hat keinen Startwert
    61
    Parameter nicht definiert
    62
    Falsches Format für Parameterwert
    101
    Abbruch mit ESC (bei SPRINGE-Anweisung)
    102
    Fehler "@" beim Bearbeiten der Protokollausgabe
    110
    Lesefehler in Datei 'Rechenfunktionen'
    111
    Rechenfunktion nicht gefunden
    112
    Kopfsatz der Rechenfunktion fehlt
    113
    Label in Rechenfunktion nicht gefunden
    121
    Variantenstückliste nicht gefunden
    123
    Label in Variantenstückliste nicht gefunden
    125
    Fehler beim Schreiben der Stückliste (S-Zeile)
    126
    Fehler beim Schreiben der Stückliste (T-Zeile)
    130
    Fehler beim Lesen 'Typenblatt-Parameter'
    131
    Fehler beim Update 'Typenblatt-Parameter'
    132
    Fehler beim Schreiben von 'Typenblatt-Parameter'
    141
    Variantenarbeitsplan nicht gefunden
    143
    Label in Variantenarbeitsplan nicht gefunden
    145
    Fehler beim Schreiben des Arbeitsplanes (A-Zeile)
    146
    Fehler beim Schreiben des Arbeitsplanes (B-Zeile)