Zwei mal REPEAT

Bild Microsoft Dynamics NAV 2018

Zwei mal REPEAT

Beitragvon CronusAG » 20. November 2019 13:48

Hallo Community,

WeiĂź jemand, wie man den Code so umschreiben kann, dass nicht 2 REPEAT verwendet werden. Die Logik dahinter soll natĂĽrlich bleiben. :lol:
Code: Alles auswählen
   WarehouseEntry.SETFILTER(Quantity,'>0');
   IF WarehouseEntry.FINDSET THEN BEGIN
    REPEAT
    SourceNo := WarehouseEntry."Source No.";
    BinCode := WarehouseEntry."Bin Code";
    ItemLedgerEntry.SETFILTER("Root Document No.",'<>%1','');
      IF ItemLedgerEntry.FINDSET THEN BEGIN
        REPEAT
          IF SourceNo = ItemLedgerEntry."Root Document No." THEN BEGIN
              ItemJournalLine.RESET;
              ItemJournalLine.SETRANGE("Item No.",ItemLedgerEntry."Item No.");
              ItemJournalLine.SETRANGE("Document No.",ItemLedgerEntry."Document No.");
              IF ItemJournalLine.FINDFIRST THEN BEGIN
                ItemJournalLine."Bin Code" := BinCode;
                ItemJournalLine.MODIFY;
              END;
          END;
        UNTIL ItemLedgerEntry.NEXT = 0;
      END;
    UNTIL WarehouseEntry.NEXT = 0;
   END;
   MESSAGE('Fertig');


Danke im Voraus.
CronusAG
 
Beiträge: 81
Registriert: 16. Juli 2019 09:14

Re: Zwei mal REPEAT

Beitragvon fiddi » 20. November 2019 14:22

Hallo,

wo ist das Problem?

Außer das ich prüfen würde, welche der Repeat- Schleifen mehr Einträge ausschließt (den zu bearbeitenden Datensatz reduziert),
die IF-Abfrage in der innersten Repeat-Schleife mit einen passenden SETRANGE den davor stehenden SETFILTER zu ersetzen,
und mir die lokalen Variablen (SourceNo, BinCode) zu sparen, würde ich an den REPEAT- Schleifen selbst nichts ändern.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7096
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Zwei mal REPEAT

Beitragvon CronusAG » 20. November 2019 14:32

Code: Alles auswählen
 WarehouseEntry.SETFILTER(Quantity,'>0');
 IF WarehouseEntry.FINDSET THEN BEGIN
  REPEAT
  ItemLedgerEntry.SETRANGE("Root Document No.",WarehouseEntry."Source No.");
    IF ItemLedgerEntry.FINDSET THEN BEGIN
      REPEAT
            ItemJournalLine.RESET;
            ItemJournalLine.SETRANGE("Item No.",ItemLedgerEntry."Item No.");
            ItemJournalLine.SETRANGE("Document No.",ItemLedgerEntry."Document No.");
            IF ItemJournalLine.FINDFIRST THEN BEGIN
              ItemJournalLine."Bin Code" :=WarehouseEntry."Bin Code";
              ItemJournalLine.MODIFY;
            END;
      UNTIL ItemLedgerEntry.NEXT = 0;
    END;
  UNTIL WarehouseEntry.NEXT = 0;
 END;
 MESSAGE('Fertig');


Es dauert noch zu lange. Die Tabelle ItemJournalLine ist kleiner als die Tabelle WarehouseEntry.
CronusAG
 
Beiträge: 81
Registriert: 16. Juli 2019 09:14

Re: Zwei mal REPEAT

Beitragvon fiddi » 20. November 2019 14:39

Hallo,

wie wäre es denn, wenn du einfach mit der "ItemJournalLine" im Repeat anfängst, und dann musst du dir überlegen brauchst du alle? Ich denke nicht.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7096
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Zwei mal REPEAT

Beitragvon CronusAG » 20. November 2019 15:40

Code: Alles auswählen
     ItemLedgerEntry.SETFILTER("Remaining Quantity",'<>0');

Das Filter sehr viele Datensätze^^. Danke
CronusAG
 
Beiträge: 81
Registriert: 16. Juli 2019 09:14

Re: Zwei mal REPEAT

Beitragvon fiddi » 20. November 2019 16:09

Das meinte ich nicht:

Du hast doch eine gefĂĽllte "Item Journal Line". Dann schaust du nach allen ItemLedgerEntries die zur Journal Line passen. und dann nach den ersten oder letzenWarehouse Entry, der dazu passt.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7096
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Zwei mal REPEAT

Beitragvon jm » 21. November 2019 08:52

Hallo,

es wäre hilfreich, wenn du (ChronusAG) beschreiben würdest, was mit den beiden Schleifen erreicht werden soll.
Dann könnte man dir auch den Weg zum passenden Code aufzeigen.

Ich vermute (wie fiddi), dass es sinnvoller wäre, die Logik zu drehen.
Derzeit: Alle Warehouse Entries mit Menge -> passende ItemLegerEntries -> ItemJournalLine
Besser: Derzeit: ItemJournalLine -> passenden ItemLegerEntry -> passenden Warehouse Entry
MfG
Josef Metz
jm
Microsoft Partner
Microsoft Partner
 
Beiträge: 139
Registriert: 18. April 2005 11:32
Wohnort: WĂĽrzburg
Realer Name: Josef Metz
Arbeitsort: WĂĽrzburg
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: DOS..

Re: Zwei mal REPEAT

Beitragvon sweikelt » 6. Dezember 2019 16:13

Benutzeravatar
sweikelt
Microsoft Partner
Microsoft Partner
 
Beiträge: 1781
Registriert: 18. November 2010 10:15
Wohnort: Oschatz
Realer Name: Stephan Weikelt
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3-2018 | D365BC


ZurĂĽck zu NAV 2018

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron