[OFFEN]FactBox - Aller Art Abgängen last 12M

Bild Microsoft Dynamics NAV 2015 (aka "NAV 8")

[OFFEN]FactBox - Aller Art Abgängen last 12M

Beitragvon Raban » 6. Februar 2019 09:33

Guten Morgen,

ich brauche noch ein Paar Augen die auf mein Code draufschaut denn ich finde den Fehler nicht

Bin in der Page 9326 - Freigegebene FA's
Eine neue FactBox soll erstellt werden. Darin sollen alle Abgänge in einer Periode angezeigt werden. Habe 12Monate als Richtwert erstmal genommen.
Neue FactBox erstellt Source die Itemtabelle und in der Page 9326 eingebunden. Das funktioniert. Wenn ich durch die Liste mit den Cursortasten navigiere ändert sich auch die Artikelnummer.

Nun habe ich eine Funktion in der FactBox angelegt.

Item_lRec - lokale Variable auf die Item Tabelle
ItemLedgerEntry_lRec - lokale Variable auf die Item Ledger Entry Tabelle
TotalAbgang - Decimal - globale Variable

Die Abgänge in der Artikelpostentabelle sind: Sale (Verkauf), Consumption (Verbrauch) und Negative Adjmt. (Abgang)

Code: Alles auswählen
IF Item_lRec.GET("No.") THEN BEGIN
ItemLedgerEntry_lRec.RESET;
ItemLedgerEntry_lRec.SETCURRENTKEY("Item No.","Entry Type","Variant Code","Drop Shipment","Location Code","Posting Date");
ItemLedgerEntry_lRec.SETRANGE("Item No.",Item_lRec."No.");
ItemLedgerEntry_lRec.SETFILTER("Entry Type",'%1|%2|%3',ItemLedgerEntry_lRec."Entry Type"::Sale,
                                                       ItemLedgerEntry_lRec."Entry Type"::Consumption,
                                                       ItemLedgerEntry_lRec."Entry Type"::"Negative Adjmt.");
ItemLedgerEntry_lRec.SETRANGE("Posting Date",CALCDATE('-12M',WORKDATE),WORKDATE);
END;

IF ItemLedgerEntry_lRec.FINDSET THEN
   REPEAT
   TotalAbgang := ItemLedgerEntry_lRec.Quantity;
   UNTIL
   ItemLedgerEntry_lRec.NEXT = 0;


Beim kompilieren mit F11 kommt kein Syntaxfehler.
Leider bekomme ich keine Werte zurĂĽck. Bei meinem Testartikel wenn ich die Artikelpostentabelle aufrufe und die oben genannten Filter eingebe, habe ich einen Abgang von 26.600 StĂĽck

Habt ihr vielleicht eine Idee warum mein Code nicht funktioniert? Gibt es eventuell einen eleganteren bzw. einfacheren Lösungsansatz?
Herzlichen Dank fĂĽr eure Hilfe
Beste GrĂĽĂźe
ls
Zuletzt geändert von Raban am 20. Februar 2019 09:08, insgesamt 3-mal geändert.
Beste GrĂĽĂźe | Robert
Benutzeravatar
Raban
 
Beiträge: 154
Registriert: 7. Mai 2011 08:32
Realer Name: Robert Liess
Arbeitsort: Hannover
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC14.28 Build 14.0.47686.0

Re: FactBox - Aller Art Abgängen last 12M

Beitragvon Kowa » 6. Februar 2019 09:46

Unabhängig von eventuellen anderen Fehlern: FINDFIRST in Kombination mit REPEAT ist immer verkehrt, da nur FINDSET verwenden.
GruĂź, Kai

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, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: FactBox - Aller Art Abgängen last 12M

Beitragvon Raban » 6. Februar 2019 10:03

Kowa hat geschrieben:Unabhängig von eventuellen anderen Fehlern: FINDFIRST in Kombination mit REPEAT ist immer verkehrt, da nur FINDSET verwenden.


danke fĂĽr den Hinweis und den Link.
Habe geändert. Dennoch erhalte ich kein Wert zurück :(
Beste GrĂĽĂźe | Robert
Benutzeravatar
Raban
 
Beiträge: 154
Registriert: 7. Mai 2011 08:32
Realer Name: Robert Liess
Arbeitsort: Hannover
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC14.28 Build 14.0.47686.0

Re: FactBox - Aller Art Abgängen last 12M

Beitragvon Ted » 6. Februar 2019 10:32

Code: Alles auswählen
IF ItemLedgerEntry_lRec.FINDSET THEN
   REPEAT
     TotalAbgang := ItemLedgerEntry_lRec.Quantity;
   UNTIL ItemLedgerEntry_lRec.NEXT = 0;


wieso genau hast du hier ein Repeat wenn du bei jedem Schleifendurchgang den Wert von "totalAbgang" ĂĽberschreibst. "TotalAbgang" wird immer den Wert von deinem letztem gefiltertem Item Ledger Entry haben.
ich denke du suchst sowas wie

TotalAbgang := ItemLedgerEntry_lRec.Quantity + TotalAbgang ;
bzw
TotalAbgang += ItemLedgerEntry_lRec.Quantity;
GruĂź
Ted
Ted
 
Beiträge: 328
Registriert: 18. September 2014 11:16
Realer Name: Dennis Reinecke
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2015+

Re: FactBox - Aller Art Abgängen last 12M

Beitragvon fiddi » 6. Februar 2019 11:03

Hallo,

Fehler: Der ItemledgerEntry.Findset gehörte in die "IF Item_lRec.GET("No.")" If- Schleife.
Verbesserungsvorschlag:
1: Spar dir den SETCURENTKEY. Wenn man den SQL-Server selbst machen lässt, funktioniert das meist besser. (Es sei denn man benötigt die Liste in eben dieser Sortierfolge)
2: Spar dir den FINDEST/Repeat Until. Ersetzte das in diesem Fall durch CALCSUMS. In ItemLedgerEntry_lRec.Quantity steht dann das Ergebnis.

Code: Alles auswählen
IF Item_lRec.GET("No.") THEN BEGIN
  ItemLedgerEntry_lRec.RESET;
// ItemLedgerEntry_lRec.SETCURRENTKEY("Item No.","Entry Type","Variant Code","Drop Shipment","Location Code","Posting Date");
  ItemLedgerEntry_lRec.SETRANGE("Item No.",Item_lRec."No.");
  ItemLedgerEntry_lRec.SETFILTER("Entry Type",'%1|%2|%3',ItemLedgerEntry_lRec."Entry Type"::Sale,
                                                         ItemLedgerEntry_lRec."Entry Type"::Consumption,
                                                         ItemLedgerEntry_lRec."Entry Type"::"Negative Adjmt.");
  ItemLedgerEntry_lRec.SETRANGE("Posting Date",CALCDATE('-12M',WORKDATE),WORKDATE);
  ItemLedgerEntry_lRec.CALCSUMS(Quantity);
END;


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: 7091
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: FactBox - Aller Art Abgängen last 12M

Beitragvon Raban » 6. Februar 2019 12:51

Hallo zusammen,

vielen Dank für die Verbesserungsvorschläge und Anregungen.

Mein Code sieht jetzt so aus, funktioniert leider noch nicht :(

Code: Alles auswählen
IF Item_lRec.GET("No.") THEN BEGIN
  ItemLedgerEntry_lRec.RESET;
  ItemLedgerEntry_lRec.SETRANGE("Item No.",Item_lRec."No.");
  ItemLedgerEntry_lRec.SETFILTER("Entry Type",'%1|%2|%3',ItemLedgerEntry_lRec."Entry Type"::Sale,
                                                         ItemLedgerEntry_lRec."Entry Type"::Consumption,
                                                         ItemLedgerEntry_lRec."Entry Type"::"Negative Adjmt.");
  ItemLedgerEntry_lRec.SETRANGE("Posting Date",CALCDATE('-12M',WORKDATE),WORKDATE);
  ItemLedgerEntry_lRec.CALCSUMS(Quantity);
END;

TotalAbgang := ItemLedgerEntry_lRec.Quantity;


totalabgang.png


Uff.... noch Ideen
Danke
GruĂź
Robert

PS. Macht vielleicht Sinn in der FactBox als Source die Tabelle "Item Ledger Entry" statt "Item" zu nehmen?
Beste GrĂĽĂźe | Robert
Benutzeravatar
Raban
 
Beiträge: 154
Registriert: 7. Mai 2011 08:32
Realer Name: Robert Liess
Arbeitsort: Hannover
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC14.28 Build 14.0.47686.0

Re: FactBox - Aller Art Abgängen last 12M

Beitragvon fiddi » 6. Februar 2019 12:55

Und wann rufst du die Funktion auf?
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: 7091
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: FactBox - Aller Art Abgängen last 12M

Beitragvon Raban » 7. Februar 2019 10:04

fiddi hat geschrieben:Und wann rufst du die Funktion auf?


Ein Licht geht auf :)

Die Funktion in der OnAfterTrigger eingefĂĽgt.

Code: Alles auswählen
OnAfterGetRecord()
Abgaenge12M_gFnc;


Es funktioniert.
Herzlichen Dank für die hilfreichen Hinweise und die tolle Unterstützung. Ist auch nicht selbstverständlich.

Beste GrĂĽĂźe und eine erfolgreiche Woche
Robert
Beste GrĂĽĂźe | Robert
Benutzeravatar
Raban
 
Beiträge: 154
Registriert: 7. Mai 2011 08:32
Realer Name: Robert Liess
Arbeitsort: Hannover
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC14.28 Build 14.0.47686.0

Re: [OFFEN]FactBox - Aller Art Abgängen last 12M

Beitragvon Raban » 20. Februar 2019 09:28

Moin,

hab's erneut geöffnet da ich noch eine Frage dazu habe.
Die Mengenberechnung funktioniert ja. Damit gehe ich ein Jahr zurĂĽck und berechne Anfang und Ende des Monats.

Code: Alles auswählen
IF Item_lRec.GET("No.") THEN BEGIN
  ItemLedgerEntry_lRec.RESET;
  ItemLedgerEntry_lRec.SETRANGE("Item No.",Item_lRec."No.");
  ItemLedgerEntry_lRec.SETFILTER("Entry Type",'%1|%2|%3',ItemLedgerEntry_lRec."Entry Type"::Sale,
                                                         ItemLedgerEntry_lRec."Entry Type"::Consumption,
                                                         ItemLedgerEntry_lRec."Entry Type"::"Negative Adjmt.");
  ItemLedgerEntry_lRec.SETRANGE("Posting Date",CALCDATE('-LM-12M'),CALCDATE('-LM-11M'));  //Summe VJ vor 12Monate
  ItemLedgerEntry_lRec.CALCSUMS(Quantity);

END ELSE
  EXIT(0);

TotalAbgang := (ItemLedgerEntry_lRec.Quantity) * -1;



Im Field als SourceExpr trage ich dann das was ausgegeben werden soll:
Beispiel
TotalAbgang
Im feld Name: "akt. Monat - 12M"

In der Faktbox wird auch so dargestellt.
01.png
01.png (1.4 KiB) 411-mal betrachtet


Frage:
Gibt es eine Möglichkeit an dieser Stelle die Ausgabe dynamisch zu gestalten?

GewĂĽnscht wird das so:

aktueller Monat - 12M = Feb 18
aktueller Monat - 11M = Mär 18
aktueller Monat - 10M = Apr 18

usw.

Ergebnis:

2.png
2.png (2.76 KiB) 411-mal betrachtet


Vielen Dank
Beste GrĂĽĂźe
Robert

PS. habe vesucht in der Spalte "Name" mit dem FORMAT Befehl etwas zu erreichen. Funktioniert leider nicht.
Beste GrĂĽĂźe | Robert
Benutzeravatar
Raban
 
Beiträge: 154
Registriert: 7. Mai 2011 08:32
Realer Name: Robert Liess
Arbeitsort: Hannover
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC14.28 Build 14.0.47686.0

Re: [OFFEN]FactBox - Aller Art Abgängen last 12M

Beitragvon McClane » 20. Februar 2019 09:41

Code: Alles auswählen
format(DeinDatum,0,'<Month Text> <Year,2>')

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.
McClane
Moderator
Moderator
 
Beiträge: 3864
Registriert: 2. April 2008 10:00
Realer Name: Stefan
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009, 2016

Re: [OFFEN]FactBox - Aller Art Abgängen last 12M

Beitragvon Raban » 20. Februar 2019 11:07

McClane hat geschrieben:
Code: Alles auswählen
format(DeinDatum,0,'<Month Text> <Year,2>')


Danke fĂĽr den Hinweis. Das habe ich schon ausprobiert.
Als Quelle habe ich mich aus mibuso-Forum bedient.

https://forum.mibuso.com/discussion/912 ... rom-a-date

Funktioniert leider nicht

Habe mal Testweise mit dem heutigen Datum ausprobiert
Der Formel nach sollte dort Feb 19 angezeigt werden.Tut es aber nicht
11.png


Anzeige im RTC

22.png
22.png (1.82 KiB) 397-mal betrachtet


bin für weitere Vorschläge dankbar.
Beste GrĂĽĂźe
Robert
Beste GrĂĽĂźe | Robert
Benutzeravatar
Raban
 
Beiträge: 154
Registriert: 7. Mai 2011 08:32
Realer Name: Robert Liess
Arbeitsort: Hannover
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC14.28 Build 14.0.47686.0

Re: [OFFEN]FactBox - Aller Art Abgängen last 12M

Beitragvon m_schneider » 20. Februar 2019 12:22

Die Caption eines Feldes lässt sich nur sehr umständlich dynamisch ändern.

Ich wĂĽrde eine Textvariable verwenden und nur diese anzeigen.
MfG Michael
Benutzeravatar
m_schneider
 
Beiträge: 2141
Registriert: 20. Januar 2009 14:36
Realer Name: Michael Schneider
Arbeitsort: Treuen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2017


ZurĂĽck zu NAV 2015

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast