Statistik-Darstellung bezogen auf Artikelkat.(Produktgruppe)

20. Oktober 2007 20:26

Hallo

Ich möchte eine Statistik darstellen, welche folgende Anforderung abdecken soll.
1) Sollte dies sich auf einzelnen Kunden beziehen
2) Sie sollte best. Zeiträume abdecken (Jahr 2005, 2006, 2007 --> wobei hier nur das aktuelle Jahr und drei in die vergangenen Jahr abbilden soll)
3) Der Wert sollte den Verkaufsbetrag darstellen für die einzelnen Zeiträum und weiters sich auf die einzelnen Artikelkategorie (und falls verhanden auch die Produktgruppen) beziehen.

Diese Informationen sollten über die Debitorenkarte, mittels eines eigenen Formular darstellbar sein.

Meine Frage wäre nun : welche Tabelle hätte dies Informationen (ich würde aktuell die Tabelle Artikelposten nehmen). Weiters wie kann ich dies Werte am einfachsten errechnen. (FlowField ??)

mfg
stony

21. Oktober 2007 10:21

Naja, Du brauchst erstmal die Tabelle Debitoren, dann die Artikel, dann die Artikelposten.
Ich würde da eher an einen Report denken und nicht an eine Form...

Allerdings bekommst Du mit F9 auf dem Debitor eine Statistik...
Hier könntest Du Deine Anforderungen zusätzlich dazunehmen.
Hier bräuchtest Du auch nur die Artikelposten, das wäre in sofern richtig.

aber je nach Umfang wäre vielleicht doch ein Report das Sinnvollste...

Ich bastel mir das ml auf meinem System, vielleicht fällt mir noch was ein :)

22. Oktober 2007 19:54

Ich bräuchte diese Information in einen Formular. (So ein Art Kundenvereinbarung). Das Formular existiert bereits und jetzt sollen diese Information in einer Subform dargestellt werden.
Vielleicht könnt ihr mir eine grobe Idee geben wie ich hier am besten vorgehen.

23. Oktober 2007 08:58

Ich würde da eher die Tabelle Wertposten für die Auswertung nehmen.

Artikelpostenart: Verkauf
Herkunftsart:Debitor
Herkunftsnr.:Debitorennr.

Du hast in der Tabelle alle benötigte Informationen , wie Verkaufsbetrag, Rabattbetrag und s.w.

23. Oktober 2007 09:06

Leider habe ich in der Tabelle Wertposten keine Information über Artikelkategorie bzw. Produktgruppe. Kann ich dies irgendwie mit einer anderen Tabelle verknüpfen.

23. Oktober 2007 11:59

Ich würde die Felder in die Tabelle Wertposten einfügen:

Field Name Data Type Field Class Length Description
Item Category Code Code FlowField 10

CalcFormula:
Lookup(Item."Item Category Code" WHERE (No.=FIELD(Item No.))).

Das gleiche für die Produktgruppe.

Danach kannst du die neue Felder in deinen Abfragen benutzen.

P.S. Vergesse nicht CALCFIELDS(ValueEntry."Item Category code")

24. Oktober 2007 19:05

Was meinst du mit den Befehl CALCFIELDS. Kann ich diesen in der Codeunit bei den Formular verwenden um mit die Summe auszurechnen.

25. Oktober 2007 09:01

Die FlowFields sind virtuelle Felder, die Werten werden nicht in der Tabelle gespeichert. Mit Record.CALCFIELDS (Filed1,Filed2...) werden die Werte berechnet.

ValueEntry.CALCFIELDS("Item Category Code",...);
...
ValueEntry.SETRANGE("Item Category Code", Category1);...

25. Oktober 2007 10:50

Hallo

Genau hier habe ich mein Problem.
Ich bekomme die Fehlermeldung
Die Summe der Werte des Feldes Verkaufsbetrag (tatsächl.) kann nicht bestimmt werden, da ein Filter auf dem folgendem FlowField liegt.
Feld: Item Category Code
Tabelle: Werten

Meine Code:


ValueEntry.CALCFIELDS(ValueEntry."Item Category Code");
ValueEntry.SETRANGE("Source Type",ValueEntry."Source Type"::Customer);
ValueEntry.SETRANGE("Source No.", "No.");
ValueEntry.SETRANGE("Item Category Code",'DIVERSES');
ValueEntry.SETRANGE("Posting Date",010107D,010507D);

ValueEntry.SETFILTER("Global Dimension 1 Code", "Global Dimension 1 Filter");
ValueEntry.SETFILTER("Global Dimension 2 Code", "Global Dimension 2 Filter");


ValueEntry.CALCSUMS("Sales Amount (Actual)");
EXIT(ValueEntry."Sales Amount (Actual)");

Geht mit einem FlowField der Befehl CALCSUMS nicht ??

25. Oktober 2007 16:49

Versuch mal damit. In dem Script wird die Temporäre Tabelle ValueEntryBuffer genau mit eine Zeile pro Debitor/ Artikelkategoriencode gefühlt.
In der Temporäre Tabelle benutze ich das Feld "Beschreibung" für die Artikelkategorie, weil man nicht direkt in das FlowField schreiben kann. Das ist bestimmt nicht die eleganteste Variante :wink:



Code:
ValueEntryBuffer.RESET;
ValueEntryBuffer.DELETEALL;
NextEntryNo := 1;

WITH ValueEntry DO BEGIN


  SETRANGE("Item Ledger Entry Type",ValueEntry."Item Ledger Entry Type"::Sale);
  SETRANGE("Source Type",ValueEntry."Source Type"::Customer);
  SETRANGE("Posting Date",010107D,010507D);
  IF FIND('-') THEN BEGIN
    REPEAT
    ValueEntry.CALCFIELDS("Item Category Code");
     
    ValueEntryBuffer.SETRANGE(Description,ValueEntry."Item Category Code");
    ValueEntryBuffer.SETRANGE("Source No.", ValueEntry."Source No.");
   

    IF NOT ValueEntryBuffer.FIND('-') THEN BEGIN
      ValueEntryBuffer.INIT;
      ValueEntryBuffer."Entry No." := NextEntryNo;
      ValueEntryBuffer."Source No." := "Source No.";
      ValueEntryBuffer.Description:= "Item Category Code";
      ValueEntryBuffer.INSERT;

      NextEntryNo := NextEntryNo + 1;
    END;

    ValueEntryBuffer."Invoiced Quantity" := ValueEntryBuffer."Invoiced Quantity" + "Invoiced Quantity";
    ValueEntryBuffer."Sales Amount (Actual)" := ValueEntryBuffer."Sales Amount (Actual)" + "Sales Amount (Actual)";
    ValueEntryBuffer."Cost Amount (Actual)" := ValueEntryBuffer."Cost Amount (Actual)" + "Cost Amount (Actual)";
    ValueEntryBuffer."Discount Amount" := ValueEntryBuffer."Discount Amount" + "Discount Amount";
    ValueEntryBuffer."Cost Amount (Non-Invtbl.)" := ValueEntryBuffer."Cost Amount (Non-Invtbl.)" + "Cost Amount (Non-Invtbl.)";
    ValueEntryBuffer.MODIFY;
 
 
  UNTIL ValueEntry.NEXT = 0;
 

  ValueEntryBuffer.SETRANGE(Description,Deine_Artikelkategory);
  ValueEntryBuffer.SETRANGE("Source No.",DebitorenNr.);
   
  IF ValueEntryBuffer.FINDFIRST THEN
    MESSAGE(FORMAT(ValueEntryBuffer."Sales Amount (Actual)"));
   

  END;
END;


Die Funktion kann man für Buchungsjahr noch erweitern.