infra:NET Expert
 
×
6 Alte Vorschläge und Ideen zum neuen Buchungssystem
  • Aktionen wie Vorbelegen usw. vor der Dialogeingabe nicht mehr vorsehen.
  • Buchen heißt Verarbeitung der Eingaben (ohne jede Dialogführung).
  • Alle Eingaben liegen als GV-Variable vor (Menge, Preis, Teil, Projekt usw.). Langsam aber sicher werden Sie in SVC-Buffer eingefüllt, die feste Namen haben (oder Arrays), z.B. "SVCBFdis". Folgepuffer werden wieder aus diesen Puffern gefüllt. Liegen Puffer schon vor, wie Teilestamm oder Dispo (Erfassen auch schon als BUCHUNG ?), werden Sie vor Aufruf des Buchungssystems in SVC's umgespeichert.
  • Vielleicht sollte man einfach Tables, die es zu versorgen gilt, als Oberbegriff nehmen. Ein Buchungsschlüssel (LBZFB) ist so aufgebaut, dass nacheinander die Dateien Dispo, Dispoerweiterung, Bewegung, Lagerstamm, Teilestamm, Auftragskopf usw. versorgt werden.
    Dazu gibt es Aktionen, die ganze Sätze vorinitialisieren und füllen und Aktionen je Feld (addieren, Nummernkreis, Konstanten, GV-Variable).      
    Es gibt Datenbankaktionen wie Sperren, Lesen, Schreiben usw.
  • Folgebuchungen werden nicht übers Buchungssystem abgewickelt, sondern im Programm. Umlagerung = Zugang + Abgang (wobei die entsprechenden Buchungsfolgen durchaus irgendwo abgelegt sein können).
  • Aufruf z.B.         
  • SVCBUCHEN("LBZBB", Eingang, strSVCBuffers als Struktur oder Array)      
    Jeder denkbare Puffer mit festem Index oder Namen. Oder variabel und Steuerdatei spricht über Index an.     
    Über "Eingang" könnten Dinge wie Ermittlung Nummernkreis bei Stapelbuchen gesteuert werden. Beim ersten Mal mit Neue Nummer, beim zweiten Mal nur noch Position erhöhen. Sonst eigener Buchungsparameter (schlecht!).
  • Ablage je Buchungsschlüssel in eigener Datei? Oder Sektion Buchungsschlüssel und Keywort Aktion.  
    [LBZBB] 
    ; Voraussetzungen:  Eingabe der Menge in GV_menge   .....,      
    : Satzpuffer Dispo liegt als Aufrufparameter 1 vor
    ;
    TITEL = Lagerzugang aus Bestellung
    DISPO = {  
     
    INIT =
    BUFFER1
    ; Puffer SVCdis aus 1. Aufrufparameter versorgen
     
    INIT =
    DEFAULT, Parameter
    ; Default-Routine für Datei DISPO aufrufen,
     
     
     
    ; Aufsplitten in mehrere Aktionen, wo sinnvoll
     
    INIT =
    FirmaX, Parameter 
    ; Routine für Firma x aufrufen   
     
    FELD = 12,
    =,GV(GV_datum)   
     
     
    FELD = 13,
    +,GV(GV_menge)
    ; Wegen Transparenz alle Mengenop. offenlegen
     
    FELD = 14,
    =,BUF(TEIL,20)
    ; Teilepuffer muss vorher versorgt sein
     
    SATZ =
    LOCK
     
     
    SATZ =
    UPDATE 
    ; besser eigene Update-Sektion am Ende für alle Dateien
     
    }   
     
     
    TEILE = {
     
    ......
     
     
     
     }  
     
     
    DBS = {
     
    LOCK =
    LAGER   
     
     
    UPDATE =
    DISPO
     
     
    WRITE =
    BEWEG
     
     
    }
     
     
          
Andere Lösung: 
DISPO = {    
 
INIT(BUFFER1)
 
; Puffer SVCdis aus 1. Aufrufparameter versorgen
 
ACTION(DISPO, Parameter)
; Default-Routine für Datei DISPO aufrufen, 
 
 
 
; Aufsplitten in mehrere Aktionen, wo sinnvoll 
 
ACTION(DISPO1, Parameter)
; Routine für Datei DISPO aufrufen,
 
 ACTION(FirmaX, Parameter)
; Routine für Firma x aufrufen   
 
FELD(12,=,GV(GV_datum))
 
 
FELD(13,+,GV(GV_menge))
; Wegen Transparenz alle Mengenop. offenlegen
 
FELD(14,=,BUF(TEIL,20))
; Teilepuffer muss vorher versorgt sein  
 
}
 
 
TEIL = { 
 
......
 
 
 
}
 
 
DBS = {
 
DBS(LAGER,LOCK)
 
 
DBS(DISPO,UPDATE)
 
 
DBS(BEWEG,WRITE)
 
 
}