Skip to main content
Skip table of contents

TBeCbStateOfConstructionMigration

TBeCbStateOfConstructionMigration

Diese Klasse dient dazu, Seriennummern-, Chargen- und Bauzustand-Informationen in die Dab730, Dab735, Dab740 zu übertragen.

Eigenschaften

Eigenschaft

Beschreibung

Zugriff

DataModule:O

Gibt das intern verwendete DatenModul zurückLesen/Schreiben

CurrentArtNo:C

Aktuelle Artikel Nummer (für Events OnMigrationError & OnMigrationProgress)Lesen

CurrentBatchNo:C

Aktuelle Serien/Chargen Nummer (für Events OnMigrationError & OnMigrationProgress)Lesen

CurrentArtNoMain:C

Artikel Nummer des übergeordneten BauzustandsLesen

CurrentBatchNoMain:C

Serien/Chargen Nummer des übergeordneten BauzustandsLesen

ExceptionMessage:C

Text der letzten Exception (für Event OnMigrationError)Lesen

RaiseException:L

Exception nach dem Event OnMigrationError werfen oder verschlucken Default = TrueLesen/Schreiben

RecordLimit:N

Max. Datensätze pro Bauzustand (wird die Anzahl überschritten wird ein OnMigrationError Fehler ausgelöst) Lesen/Schreiben

Funktionen

Funktion

Beschreibung


UpdateDab730()

Dab730 ERSTELL_WA/ERSTELL_ID/ERSTELL_NR befüllen


UpdateDab735() 

Dab720 Chargen in Dab735 übertragen


Parameter

Beschreibung

aRefreshExisting:L

True = bestehende Chargen Informationen aktualisieren

Migrate()

Dab720 Bauzustände in Dab740 migrieren


Parameter 

Beschreibung  

aArtNo:C

Artikel Nummer

aBatchNo:C

Serien Nummer (leer = alle Serien Nummern)

Verfügbare Ereignisse

EreignisBeschreibung
OnMigrationErrorWenn ein Fehler auftritt (nur für Migrate())
OnMigrationProgressFür jeden Eintrag der migriert wird (für Migrate(), UpdateDab730(), UpdateDab735())

Beispiel

CODE
| oSoCMigration, dStopwatch |
 
//******************************************************************************
// Wird für jede Artikel/Seriennummer bzw. Artikel/Chargen Kombination
// aufgerufen.
//******************************************************************************
function MigrationProgress(oInfo)
   Writeln('MigrationProgress', now()),
   WriteLn('   ARTNR', oInfo.CurrentArtNo),
   WriteLn('   KOMMISS', oInfo.CurrentBatchNo),
   WriteLn('   ARTNR_BG', oInfo.CurrentArtNoMain),
   WriteLn('   KOMMISS_BG', oInfo.CurrentBatchNoMain),
   writeln(''),
end,
 
//******************************************************************************
// oInfo.RaiseException = True (Default) -> Exception wird nicht unterdrückt,
//                                          Vorgang wird ggf. abgebrochen
// oInfo.RaiseException = False -> Exception wird unterdrückt. Vorgang wird mit
//                                 nächster Dab730 Artikel/Seriennummer
//                                 Kombination fortgesetzt
//******************************************************************************
function MigrationError(oInfo)
   Writeln('MigrationError'),
   WriteLn('    ARTNR', oInfo.CurrentArtNo),
   WriteLn('    KOMMISS', oInfo.CurrentBatchNo),
   WriteLn('    Exception', oInfo.ExceptionMessage),
   WriteLn('    Raise', oInfo.RaiseException),
   writeln(''),
 
   oInfo.RaiseException := False,
end,
 
//******************************************************************************
// Einzelne ARTNR/KOMMISS Kombination migrieren
//******************************************************************************
function MigrateSingle(cArtNo, cCommiss)
   startseq
      Result := oSoCMigration.Migrate(Trim(cArtNo), Trim(cCommiss)),
   onerror
      WriteLn('Fehler: ' + GetErrorText(), 'ARTNR/KOMMISS', cArtNo, cCommiss),
   stopseq,
end,
 
//******************************************************************************
// Alle Artikel/Seriennummern Kombinationen aus der Dab730 migrieren
//******************************************************************************
function MigrateDab730()
   |oDab730|
 
   startseq
      oDab730           := CreateObject('TBeStandardTable' , 'SERIENNUMMERN'),
      oDab730.WorkArea  := waDab730,
      oDab730.IndexName := 'ERSTELLT',
      oDab730.IndexName := 'DAB731',
      oDab730.Active := True,
      oDab730.CbFirst(),
 
      dStopwatch := TimeEx(),
      Writeln('------------------------- START - Migrate ------------------------'),
      while not oDab730.CbEof do
         MigrateSingle(oDab730:ARTNR, oDab730:KOMMISS),
         oDab730.CbNext(),
      end,
      Writeln('Dauer: ', TimeEx()-dStopwatch),
      Writeln('------------------------ ENDE - Migrate ------------------------'),
      Writeln(''),
   always
      DestroyObject(oDab730),
   stopseq,
end,
 
//******************************************************************************
// Alle Artikel/Seriennummern Kombinationen aus der Dab730 migrieren
//******************************************************************************
function MigrateBySQL(cSQL)
   |oQuery|
 
   startseq
      oQuery := CreateObject('TBeAdsQuery', 'QUERY'),
      oQuery.SQL := cSQL,
      oQuery.CbExecSQL(),
      oQuery.Active := true,
      oQuery.CbFirst(),
 
      dStopwatch := TimeEx(),
      Writeln('------------------------- START - Migrate ------------------------'),
      while not oQuery.CbEof do
         MigrateSingle(oQuery:ARTNR, oQuery:KOMMISS),
         oQuery.CbNext(),
      end,
      Writeln('Dauer: ', TimeEx()-dStopwatch),
      Writeln('------------------------ ENDE - Migrate ------------------------'),
      Writeln(''),
   always
      DestroyObject(oQuery),
   stopseq,
end,
 
startseq
   startseq
      oSoCMigration := CreateObject('TBeCbStateOfConstructionMigration', 'Migration'),
      //oSoCMigration.RecordLimit := 50000,
 
      AssignEvent(oSoCMigration, 'OnMigrationProgress', 'MigrationProgress'),   // Bei vielen Daten sollte der Event aus Performance Gründen nicht zugewiesen sein
      AssignEvent(oSoCMigration, 'OnMigrationError', 'MigrationError'),
 
      // Schritt 1, Dab730 (Seriennummern) ERSTELL_WA, ERSTELL_ID, ERSTELL_NR befüllen
      if JN("Schritt 1 - Dab730 (Seriennummern) Update durchführen?", false) then
         Writeln('------------------------ START - UpdateDab730 ------------------------'),
         dStopwatch := TimeEx(),
         oSoCMigration.UpdateDab730(),
         Writeln('Dauer: ', TimeEx()-dStopwatch),
         Writeln('------------------------ ENDE - UpdateDab730 ------------------------'),
         Writeln(''),
      endif,
 
      // Schritt 2, Dab735 (Chargen) befüllen. Basis sind die Chargen Informationen
      //            aus der Dab720.
      if JN("Schritt 2 - Dab735 (Chargen) Update durchführen?", false) then
         Writeln('------------------------ START - UpdateDab735 ------------------------'),
         dStopwatch := TimeEx(),
         oSoCMigration.UpdateDab735(False),
         Writeln('Dauer: ', TimeEx()-dStopwatch),
         Writeln('------------------------ ENDE - UpdateDab735 ------------------------'),
         Writeln(''),
      endif,
 
      // Schritt 3, Dab740 (Bauzustand) befüllen. Dies kann entweder komplett oder
      //            Schrittweise für z.B. bestimmte Artikel-Gruppen durchteführt
      //            werden.
      //            Dauer pro 2500 ARTNR/KOMMISS Kombinationen ca. 10 Minuten
      if JN("Schritt 3 - Dab720 (Chargenverfolgung) Migration druchführen?", false) then
 
         // Einen einzelnen ARTNR/KOMMISS migrieren
         MigrateSingle('ARTNR', 'KOMMISS'),
 
         // oder Migration auf Basis von SQL Statement durchführen
         // MigrateBySQL('SELECT ARTNR, KOMMISS FROM "DAB730.ADT" DAB730 WHERE KOMMISS IS NOT NULL AND ARTNR IN (SELECT ARTNR FROM "DAB010.ADT" WHERE PLATZ_VER IN ( ''S'' )) ORDER BY ARTNR, KOMMISS'),
 
         // oder gesammte Dab730 migrieren
         // MigrateDab730(),
      endif,
   onerror
      WriteLn('Fehler: ' + GetErrorText()),
   stopseq,
always
   DestroyObject(oSoCMigration),
stopseq, 

Weitere Verknüpfungen


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.