[gelöst] Statistik-Verkäufe nach Produktgruppen

28. August 2009 14:25

Hallo,
versuche gerade die Debitor-Verkäufe verschiedener Perioden, bezogen auf die Produktgruppen dazustellen.
Es soll in Tabellenform ausgegeben werden (Produktgruppen, akt. Monat, akt. Jahr, letztes Jahr, vorletztes Jahr)

Die Daten hole ich aus der Wertpostentabelle und habe auf die Produktgruppen gruppiert.
Das "Sales Amount (Actual)" soll im "Value Entry, GroupFooter" ausgegeben werden.
Die Erstellung der einzelnen Datumsfilter läuft über eine Schleife und ist von der Statistik/F9 übernommen.

Wie kann ich jetzt in dieser Schleife zusätzlich noch auf die gruppierten Produktgruppen die Tabelle "Value Entry" filtern?
In meiner Version werden zwar die Werte in den Spalten berechnet aber die Zeilen sind für alle Produktgruppen gleich?

z.B.
Bild1.jpg




Code:
    IF CurrentDate <> WORKDATE THEN BEGIN
       CurrentDate := WORKDATE;
       DateFilterCalc.CreateAccountingPeriodFilter(CustDateFilter[1],CustDateName[1],CurrentDate,0);
       DateFilterCalc.CreateFiscalYearFilter(CustDateFilter[2],CustDateName[2],CurrentDate,0);
       DateFilterCalc.CreateFiscalYearFilter(CustDateFilter[3],CustDateName[3],CurrentDate,-1);
       DateFilterCalc.CreateFiscalYearFilter(CustDateFilter[4],CustDateName[4],CurrentDate,-2);
     END;                   

    FOR i := 1 TO 4 DO BEGIN

       "Value Entry".SETCURRENTKEY("Gen. Prod. Posting Group","Item Ledger Entry Type","Source No.","Posting Date");
       "Value Entry".SETRANGE("Value Entry"."Item Ledger Entry Type",1);
       SETFILTER("Value Entry"."Posting Date",CustDateFilter[i]);
       "Value Entry".CALCSUMS("Value Entry"."Sales Amount (Actual)");
       SalesAmount[i] := "Value Entry"."Sales Amount (Actual)";

                     END;


Mfg
Ogni
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Ogni am 28. August 2009 16:09, insgesamt 1-mal geändert.

Re: Statistik-Verkäufe nach Produktgruppen

28. August 2009 14:54

Hi,

Wenn ich deine Beschreibung richtig interpretiere, dann würde ich einen weiteren Filter in der Schleife ergänzen:

Code:
"Value Entry".Setrange("Gen. Prod. Posting Group", "Gen. Prod. Posting Group");


Vorraussetzung ist, dass die Wertposten einen entsprechenden Schlüssel zur Berechnung der Flowfields bereithalten.

Wichtig ist auch, nach der Schleife den Filter wieder aufzulösen, da sonst die nächste Produktbuchungsgruppe nicht gefunden wird.

Optional kann man vor Auflösung des Filter noch einen Findlast ergänzen um die unnötige Berechnung x-mal pro Produktbuchungsgruppe zu vermeiden.

Ich hoffe ich konnte Dir helfen.

Viele Grüße
Volker

Re: Statistik-Verkäufe nach Produktgruppen

28. August 2009 14:59

Du müsstest den Filter entsprechend erweiteren, allerdings würde dann das CALCFIELD auf die "Nase fallen", da das gefilterte Feld nicht im Key sein dürfte?
-->Dann wäre zu entscheiden, ob du die Tabelle um einen neuen Key erweiterst (mit entsprechenden SumIndexFeldern), oder die Verarbeitung änderst, sprich Schleife Programmieren!
(Bitte beachte, das dass erweitern der Key zu lasten der DB Größe und auch Performance gehen kann!)

Schleifenverarbeitung:
Hierzu zunächst die Tabelle Produktbuchungsgruppe aufrufen und Zeile für Zeile verarbeiten. Mit der jeweiligen Buchungsgruppe die Wertposten filtern.
Dann eine Schleife über die Wertposten und dann Zeile für Zeile den Wert kummulieren.


Beispiel mit CALCFIELDS:
Code:
"Value Entry".SETCURRENTKEY("Gen. Prod. Posting Group","Item Ledger Entry Type","Source No.","Posting Date");
"Value Entry".SETRANGE("Value Entry"."Item Ledger Entry Type",1);                         // BTW: Es sollten immer die Namen verwendet werden ;-)
ValueEntry.SETRANGE(ValueEntry."Gen. Prod. Posting Group",ProduktBuchGprnFilter);
ValueEntry.SETFILTER("Value Entry"."Posting Date",CustDateFilter[i]);

"Value Entry".CALCSUMS("Value Entry"."Sales Amount (Actual)");
SalesAmount[i] := "Value Entry"."Sales Amount (Actual)";

Re: Statistik-Verkäufe nach Produktgruppen

28. August 2009 15:25

Hallo Volker,
wenn ich Deinen Filter mit in die Schleife einbaue, wird nur eine Zeile mit der ersten Produktgruppe ausgegeben.
An welcher stelle kann ich den Filter wieder lösen und wie könnte das aussehen?

Gruß
Ogni

Re: Statistik-Verkäufe nach Produktgruppen

28. August 2009 15:49

Hi Ogni,

ich gehe davon aus, dass Du im Trigger OnAfterGetRecord zum DataItem "Value Entry" stehst und dort die Schleife implementiert ist.

Dann wäre folgende Lösung denkbar nach der Schleife:

Code:
Findlast;                                              // (optional; s.o.)
"Value Entry".Setrange("Gen. Prod. Posting Group")     // hiermit wird der Filter auf "Gen. Prod. Posting Group" wieder aufgehoben


Viele Grüße
Volker

Re: Statistik-Verkäufe nach Produktgruppen

28. August 2009 16:06

Hallo Volker,
das Filterlösen hats gebracht, es scheint zu laufen. Muss die einzelnen Wert noch mal prüfen.

Dank und Gruß Ogni

PS: das Wochenende ist gerettet :-)