Skip to main content
Skip table of contents

TBeCbStateOfConstructionResolving

TBeCbStateOfConstructionResolving

(Aktuellen) Bauzustand aus Dab740 auslesen.

Eigenschaften

Eigenschaft

Beschreibung
DataModule:OGibt das intern verwendete DatenModul zurück
ArtNo:CArtikel Nummer für welche der Bauzustand aufgelöst werden soll
BatchNo:CSerien Nummer für welche der Bauzustand aufgelöst werden soll
LegacyMode:L
Funktionen und MethodenBeschreibung
CreateMemtable()Leere Memtable erzeugen die an die Execute Funktion übergeben werden kann
Execute()Bauzustand Auflösung durchführen, Rückgabe True wenn Bauzustand Daten vorhanden sind
ParameterBeschreibung
aResultMemTable:OMemtable in welche die Daten übertragen werden
aCurrentStateOnly:LOb Bauzustand aktiv ist oder nicht

Beispiel

CODE
|oProdResLegacy, oProdRes, oMemResLegacy, oMemRes, aFieldsToCompare, cSQL |

//******************************************************************************
function LegacyStateOfConstruction(cArtNo, cBatchNo)
   Result := True,
   startseq,
      oProdResLegacy.ArtNo   := cArtNo,
      oProdResLegacy.BatchNo := cBatchNo,
      oMemResLegacy.CbEmptyTable(),
      oProdResLegacy.Execute(),
      oProdResLegacy.TransferResult(oMemResLegacy, False, True, True),
      oMemResLegacy.OrderBy := 'Ebene;Parent_ARTNR;Parent_KOMMISS;ArtNr;Kommiss;Datum;D720_ID',
   onerror,
      WriteLn(GetErrorText()),
      Result := False,
   stopseq,
end,

//******************************************************************************
function StateOfConstruction(cArtNo, cBatchNo)
   Result := False,
   oProdRes.ArtNo   := cArtNo,
   oProdRes.BatchNo := cBatchNo,
   oMemRes.CbEmptyTable(),
   Result := oProdRes.Execute(oMemRes, false),
   oMemRes.CbOrderBy('Ebene;ArtNr_BG;Kommiss_BG;ArtNr;Kommiss;Datum;D740_ID'),
end,

//******************************************************************************
function ValidateMigration(cArtNo, cBatchNo)
   |i, bContinue|

   Result := True,
   if LegacyStateOfConstruction(cArtNo, cBatchNo) and StateOfConstruction(cArtNo, cBatchNo) then
      // browse(,oMemResLegacy),
      // browse(,oMemRes),
      if oMemResLegacy.CbRecordCount = oMemRes.CbRecordCount then
         DbGoTop(oMemResLegacy),
         oMemRes.CbFirst(),
         bContinue := true,

         while not oMemRes.CbEof and bContinue do
            for i := 1 to ALen(aFieldsToCompare) do
               if bContinue then
                  if Alltrim(AsString(aFieldsToCompare[1,i], oMemResLegacy)) <> Alltrim(AsString(aFieldsToCompare[2,i], oMemRes)) then
                     WriteLn(Space(0) + 'Werte unterschiedlich Feld: <' + aFieldsToCompare[1,i] + '> Wert: ' + AsString(aFieldsToCompare[1,i], oMemResLegacy) + ' !=' +  AsString(aFieldsToCompare[2,i], oMemRes)),
                     Writeln(Space(0) + 'Alt', oMemResLegacy.RecAsArray),
                     Writeln(Space(0) + 'Neu', oMemRes.CbGetRecAsArray()),
                     bContinue := false,
                     Result := False,
                  endif,
               endif,
            next,

            oMemRes.CbNext(),
            DBSkip(oMemResLegacy),
         end,
      else
         WriteLn(Space(10) + 'Anzahl der Datensätze unterschiedlich (Alt/Neu)', oMemResLegacy.CbRecordCount, oMemRes.CbRecordCount),
         Result := False,
      endif,
   else
      WriteLn(Space(10) + 'Auflösung nicht möglich'),
      Result := False,
   endif,

//   if not Result then
//     WriteLn('ARTNR/KOMMISS',cArtNo, cBatchNo),
//     WriteLn('********************************************************************************************************************************'),
//   endif,
end,

//******************************************************************************
//
//******************************************************************************
function ValidateBySQL(cSQL)
   |oQuery|

   startseq
      oQuery := CreateObject('TBeAdsQuery', 'QUERY'),
      oQuery.SQL := cSQL,
      oQuery.CbExecSQL(),
      oQuery.Active := true,
      oQuery.CbFirst(),

      WriteLn('********************************************************************************************************************************'),
      while not oQuery.CbEof do
         startseq,
            if not ValidateMigration(AllTrim(oQuery:ARTNR), AllTrim(oQuery:KOMMISS)) then
               WriteLn('ARTNR/KOMMISS', AllTrim(oQuery:ARTNR), AllTrim(oQuery:KOMMISS)),
               WriteLn('*******************************************************************************************************************************<h3>'),
            endif,
         onerror,
            WriteLn(GetErrorText()),
         stopseq,
         oQuery.CbNext(),                 
      end,
   always
      DestroyObject(oQuery),
   stopseq,
end,


aFieldsToCompare := {{'Parent_ARTNR','Parent_KOMMISS','ArtNr','Kommiss','Opt_Ansicht','Opt_ArtNr','Opt_Kommiss','Typ','Ebene','ProdAuftr','BelegNr','Lager','Datum','Menge','PersNr','Standort','B_Pos_Lfd','BUVORG','BUART','APNUMMER','BESTPOSNR','IsNeutralized','IsUnambiguous'}, // Legacy
                     {'ArtNr_BG','Kommiss_BG','ArtNr','Kommiss','Opt_Ansicht','Opt_ArtNr','Opt_Kommiss','Typ','Ebene','ProdAuftr','BelegNr','Lager','Datum','Menge','PersNr','Standort','B_Pos_Lfd','BUVORG','BUART','APNUMMER','BESTPOSNR','IsNeutralized','IsUnambiguous'}},

startseq,
   oProdResLegacy := CreateObject('TBeCbProductResolving'),
   oProdResLegacy.CalcOnlySerialNoArticles       := False,
   oProdResLegacy.CalcUnambiguousSerialNoBooking := True,
   oMemResLegacy := oProdResLegacy.CreateMemView_Extended(oProdResLegacy),

   oProdRes := CreateObject('TBeCbStateOfConstructionResolving'),
   oProdRes.LegacyMode := True,
   oMemRes := oProdRes.CreateMemtable(),

   // Validierung per SQL
   // cSQL := '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',
   // ValidateBySQL(cSQL),

   // Einzelne ARTNR/KOMISS validieren
   WriteLn(ValidateMigration('ARTNR', 'KOMMISS')),
always,
   DestroyObject(oProdResLegacy),
   DestroyObject(oProdRes),
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.