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ück | Lesen/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 Bauzustands | Lesen |
CurrentBatchNoMain:C | Serien/Chargen Nummer des übergeordneten Bauzustands | Lesen |
ExceptionMessage:C | Text der letzten Exception (für Event OnMigrationError) | Lesen |
RaiseException:L | Exception nach dem Event OnMigrationError werfen oder verschlucken Default = True | Lesen/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
Ereignis | Beschreibung |
---|---|
OnMigrationError | Wenn ein Fehler auftritt (nur für Migrate()) |
OnMigrationProgress | Für jeden Eintrag der migriert wird (für Migrate(), UpdateDab730(), UpdateDab735()) |
Beispiel
| 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,