In diesem Beitrag wird das Erstellen eines Berichtes erklärt, der das Alter von Lagerbeständen darstellt.
Da ich nicht alle Formeln in diesem Blog ausschreiben möchte habe ich den Bericht als Demo bereits erstellt. Sie können sich da anschauen, wie das in Excel umgesetzt wurde.
Zuerst muss der jeweilige Datumsbereich bestimmt werden. In meinem Beispiel nehme ich 0 Tage (Heute), die 30 Tage davor und alles was noch älter ist. Natürlich kann man das beliebig erweitern oder sogar per Spalten-Befehl dynamisch gestalten. Ich möchte es aber gern einfach halten.
Datumswerte werden in Excel intern als Zahlen gespeichert und lediglich als Datum formatiert. Man kann daher mit Datumswerten rechnen (1.1.2013 + 30 = 31.1.2013). Mit der Funktion NP(“Datumsfilter”;..) kann man sich daraus leicht einen Filtertext erstellen, den man für NL-Befehle verwenden kann.
Den Bestand eines Artikels kann man mit dem Befehl NL(“Summe”;..) berechnen. Für einen Aging-Bericht muss der Restbetrag aus den Artikelposten für einen Zeitraum summiert werden:
=NL(“Summe”;”Artikelposten”;”Restmenge”;”Artikelnr.”;”4711″;”Buchungsdatum”;”1.1.12..31.1.12″)
Für die Menge ist der Aging Report damit bereits erledigt.
Der Betrag ist nicht so leicht zu ermitteln, da Navision nur die Restmenge direkt in die Artikelposten speichert. Dem Artikelposten zugeordnet ist nur der Einstandspreis für die gesamte Menge. Die kann sich auch noch laufend verändern (Frachtkostenzuschläge, Wechselkurseinflüsse, Umbewertungen …). Man kann es aber näherunsweise ermitteln, wenn sich die Einstandspreise für Artikel innerhalb eines Intervalls nicht erheblich unterscheiden. Dazu muss man:
- Die ursprüngliche Menge summieren
- Die Einstandspreise (Erwartet und Tatsächlich) summieren
- Einen Stückpreis aus den Summen errechen (Summe Preis / Summe Menge)
- Den Stückpreis mit dem Restbestand multiplizieren
Ich empfehle die einzelnen Formeln in Hilfsspalten zu platzieren. Man kann das auch in einer Zelle, aber es wird dadurch nur sehr unübersichtlich und schlecht zu pflegen. Die Beträge können wir wieder mittels NL(“Summe”;..) berechnen lassen. Damit das Ergebnis nicht verfälscht wird, summiere ich nur die Bewegungen, die keinen Restbetrag aufweisen. Der Filter “Restbetrag”;”<>0″ macht den Bericht zwar langsamer, aber genauer:
Ursprüngliche Menge:
=NL(“Summe”;”Artikelposten”;”Menge”;”Artikelnr.”;”4711″;”Buchungsdatum”;”1.1.12..31.1.12″;”Restmenge”;”<>0″)
Die selbe Funktion verwende ich für die Felder “Einstandsbetrag (tatsächl.)” und “Einstandsbetrag (erwartet)”. Der Rest ist nur noch Excelformelei.
Es kann vorkommen, dass sie negative Bestände erhalten. Das sind z.B. Verkäufe, die noch mit keinem Zugang ausgeglichen wurden. Damit der Lagerbestand stimmt müssen Sie diese Werte mit verwenden. Ist ja auch eine praktische Nebeninformation.
Ausgeführt sieht der Bericht in meinem Beispiel dann so aus:
Die Hilfsspalten habe ich mit Excel-Gliederungen ausblenden lassen. So kann man sich das aber noch mal anschauen und kontrollieren. Natürlich kann man die Spalten auch mit dem “Ausblenden” ganz ausblenden.
Im Designmodus kann man den Aufbau erkennen.
Den Bericht können Sie hier herunterladen:
JetReports-Artikelbestand-Aging.xls
Die Formeln im Bericht sind in englischer Sprache gehalten. Auf diese Weise kann der Bericht auch auf installation in anderen Sprachen als deutsch ausgeführt werden. Das funktioniert, weil Jet Reports in den Formeln die gewählte Sprache (Caption) und alternativ den programmierten Feldnamen (Name) verwendet. Wenn Sie Ihre Navision in verschiedenen Sprachen betreiben, dann empfehle ich deswegen das Sprachmodul in den Datenquelleneinstellungen gar nicht erst zu laden. Dann braucht man die Formeln in den Berichten nicht zu übersetzen.
Andreas Koblischke
datenkultur GmbH