Statistikreport: Angebote, Angebote in Auftrag, Aufträge

14. Januar 2010 14:08

Hallo!
Für unsere Statistiken brauchen wir für einen bestimmten Zeitraum (01.01.-31.12.) die Anzahl aller Angebote, Angebote in Auftrag und Aufträge. Wir haben noch ein Zusatzmodul "Service", da ist es genauso. Weiß jemand, ob es da im Standard schon irgendwie etwas gibt, um die Zahlen einfach zu sichten?

Da es ziemlich aufwendig ist, alle Zahlen manuell herausfinden, dachte ich an einen eigenen Report. Hierzu muss man ja dann die Bereiche "Sales Header", "Sales Header Archive", "Service Header" und "Posted Service Header" nacheinander auflisten und die Zeilen hochzählen. Oder so dachte ich zumindest :-( Es stellte sich heraus, dass in dem Bereich "Sales Header Archive" mit Versionsnummern ("Version No.") gearbeitet wird. Hier liegt mein Problem: Wie sage ich meinem Report, dass ich nur die letzte archivierte Version angezeigt bekommen möchte? Ich habe es bis jetzt so probiert:
Code:
SalesHeaderArchive.SETFILTER("Document Type", '%1|%2',  "Document Type"::Quote, "Document Type"::Order);
SalesHeaderArchive.SETRANGE("Version No.", 1,9999);
IF SalesHeaderArchive.FINDLAST THEN;

Aber er gibt mir immernoch alle Versionen aus. Irgendwie verstehe ich den Zusammenhang von SETRANGE und FINDLAST wohl immernoch nicht ganz. :oops:

Kann mir bitte Jemand auf die Sprünge helfen?
Danke!
Arne

Re: Statistikreport: Angebote, Angebote in Auftrag, Aufträge

14. Januar 2010 14:37

Hallo Walter,

versuche es doch einmal mit GETRANGEMAX. Dieser Befehl liefert die den höchsten Wert in deinem Range zurück und du kannst somit auf die höchste Versionsnummer zugreifen. Also in deinem Beispiel:
Code:
SalesHeaderArchive.SETFILTER("Document Type", '%1|%2',  "Document Type"::Quote, "Document Type"::Order);
SalesHeaderArchive.SETRANGE("Version No.", 1,9999);
SalesHeaderArchive.GETRANGEMAX("Version No.");

Re: Statistikreport: Angebote, Angebote in Auftrag, Aufträge

14. Januar 2010 15:13

Danke für die schnelle Antwort!

Ich habe den Code mal direkt übertragen. Wenn ich diese Zeile ergänze
Code:
SalesHeaderArchive.GETRANGEMAX("Version No.");

erhalte ich die Meldung "Der Rückgabewert sollte für diese Funktion verwendet werden." Ich habe mir daraufhin die Syntax für GETRANGEMAX nochmal angesehen und mir dann den Maximalwert so berechnen lassen:
Code:
SumDE := SalesHeaderArchive.GETRANGEMAX("Version No.");

In meinem Report sagt er aber einen Wert von 9999, also so, wie ich den Parameter (ToValue) im SETRANGE eingegeben habe. Muss ich vielleicht einen anderen Parameter wählen? Irgendeine Variable, die mit hochgezählt wird?