TBeCbStateOfConstructionMigration
Diese Klasse dient dazu, Seriennummern-, Chargen- und Bauzustand-Informationen in die Dab730, Dab735, Dab740 zu übertragen.
Eigenschaften
|
Eigenschaft |
Beschreibung |
|---|---|
|
CurrentArtNo:C |
Aktuelle Artikel Nummer (für Events OnMigrationError & OnMigrationProgress) |
|
CurrentArtNoMain:C |
Artikel Nummer des übergeordneten Bauzustands |
|
CurrentBatchNo:C |
Aktuelle Serien/Chargen Nummer (für Events OnMigrationError & OnMigrationProgress) |
|
CurrentBatchNoMain:C |
Serien/Chargen Nummer des übergeordneten Bauzustands |
|
DataModule:O |
Gibt das intern verwendete DatenModul zurück |
|
ExceptionMessage:C |
Text der letzten Exception (für Event OnMigrationError) |
|
Name:C |
|
|
RaiseException:L |
Exception nach dem Event OnMigrationError werfen oder verschlucken Default = True |
|
RecordLimit:N |
Max. Datensätze pro Bauzustand (wird die Anzahl überschritten wird ein OnMigrationError Fehler ausgelöst) |
|
Tag:N |
|
Methoden
|
Methode |
Beschreibung |
|---|---|
|
Migrate(aArtNo:C, aSerialNo:C):N |
Dab720 Bauzustände in Dab740 migrieren |
|
UpdateDab730() |
Dab730 ERSTELL_WA/ERSTELL_ID/ERSTELL_NR befüllen |
|
UpdateDab735(aRefreshExisting:L) |
Dab720 Chargen in Dab735 übertragen |
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,