Neu Statistik versendet"

Patrizia

Sehr aktives Mitglied
19. September 2010
480
59
Die Wawi enthält eigentlich alles, um die Produktivität von Pick&Pack zu messen.

Man bräuchte:
  1. versendete Aufträge
    1. Anzahl Pakete
    2. Anzahl Positionen
    3. Anzahl Stück
  2. daraus jeweils die Summe nach
    1. Tag
    2. KW
    3. Monat
    4. Jahr
  3. pro Tag (Zeit Versandbestätigung letzter Lieferschein minus Zeit "Erstellt am" erster Lieferschein) = aktive Pick&Packzeit
    Die Möglichkeit der Pausen zwischendrin kann man ignorieren, weil sie Teil des Versandprozeßes sind, also quasi Bruttoarbeitszeit
  4. Punkt 2. dann ergänzen um Pakete/(Tag/KW/Monat/Jahr) ebenso Positionen & Stück
Ergebnis wäre ein ziemlich genauer Überblick über die Produktiviät bei Pick&Pack.
Einschränkung: Punkt 3 kann man nur nutzen, wenn am Stück gepackt wird. Das dürfte aber bei fast jedem der Fall sein. Wer das nicht tut, hat vermutlich nur eine sehr kleine Anzahl an Versendungen und für den ist die Produktivität meist auch nicht so wichtig.


Ist das machbar? Hat jemand Lust?
😊
🙏
 
  • Gefällt mir
Reaktionen: NewBuy

fluxel

Aktives Mitglied
17. April 2019
31
10
Hückelhoven
Das widerspricht etwas der Logik der Eigenen Übersichten. In diesen geht es eigentlich darum, zu einem Objekt Daten abzurufen. Ich habe dir aber mal "schnell" zusammengetippt, wie du deine Daten trotzdem direkt aus dem SQL-Server bekommst:

Pakete je Tag/Woche/Monat/Jahr (7 Tage/Wochen/Monate/Jahre Rückblick):
SQL:
SELECT    'Pakete je Tag' AS 'Kennzahl',
        CONVERT(VARCHAR(10), CAST(dErstellt AS DATE), 104) AS 'Zeitraum',
        COUNT(1) AS 'Menge'
FROM tVersand
WHERE CAST(DATEADD(DAY, -6, GETDATE()) AS DATE) <= CAST(dErstellt AS DATE)
GROUP BY CAST(dErstellt AS DATE)
ORDER BY CAST(dErstellt AS DATE) DESC


SELECT    'Pakete je KW' AS 'Kennzahl',
        SUBSTRING(CONVERT(VARCHAR(6), DATEPART(ISO_WEEK, tVersand.dVersendet)+(DATEPART(YEAR, tVersand.dVersendet)*100)), 5, 2) AS 'Zeitraum',
        COUNT(1) AS 'Menge'
FROM tVersand
WHERE CAST(DATEADD(WEEK, -6, GETDATE()) AS DATE) <= CAST(dErstellt AS DATE)
GROUP BY DATEPART(ISO_WEEK, tVersand.dVersendet)+(DATEPART(YEAR, tVersand.dVersendet)*100)
ORDER BY DATEPART(ISO_WEEK, tVersand.dVersendet)+(DATEPART(YEAR, tVersand.dVersendet)*100) DESC


SELECT    'Pakete je Monat' AS 'Kennzahl',
        SUBSTRING(FORMAT(tVersand.dVersendet, 'yyyyMM'), 5, 2) AS 'Zeitraum',
        COUNT(1) AS 'Menge'
FROM tVersand
WHERE CAST(DATEADD(MONTH, -6, GETDATE()) AS DATE) <= CAST(dErstellt AS DATE)
GROUP BY FORMAT(tVersand.dVersendet, 'yyyyMM')
ORDER BY FORMAT(tVersand.dVersendet, 'yyyyMM') DESC


SELECT    'Pakete je Jahr' AS 'Kennzahl',
        FORMAT(tVersand.dVersendet, 'yyyy') AS 'Zeitraum',
        COUNT(1) AS 'Menge'
FROM tVersand
WHERE CAST(DATEADD(YEAR, -6, GETDATE()) AS DATE) <= CAST(dErstellt AS DATE)
GROUP BY FORMAT(tVersand.dVersendet, 'yyyy')
ORDER BY FORMAT(tVersand.dVersendet, 'yyyy') DESC

Positionen:
SQL:
SELECT    'Positionen je Tag' AS 'Kennzahl',
        CONVERT(VARCHAR(10), CAST(tVersand.dErstellt AS DATE), 104) AS 'Zeitraum',
        COUNT(1) AS 'Menge'
FROM tLieferschein
JOIN tLieferscheinPos ON tLieferscheinPos.kLieferschein = tLieferschein.kLieferschein
JOIN tVersand ON tVersand.kLieferschein = tLieferschein.kLieferschein AND tVersand.dVersendet IS NOT NULL
WHERE CAST(DATEADD(DAY, -6, GETDATE()) AS DATE) <= CAST(tVersand.dErstellt AS DATE)
GROUP BY CAST(tVersand.dErstellt AS DATE)
ORDER BY CAST(tVersand.dErstellt AS DATE) DESC


SELECT    'Positionen je KW' AS 'Kennzahl',
        SUBSTRING(CONVERT(VARCHAR(6), DATEPART(ISO_WEEK, tVersand.dVersendet)+(DATEPART(YEAR, tVersand.dVersendet)*100)), 5, 2) AS 'Zeitraum',
        COUNT(1) AS 'Menge'
FROM tLieferschein
JOIN tLieferscheinPos ON tLieferscheinPos.kLieferschein = tLieferschein.kLieferschein
JOIN tVersand ON tVersand.kLieferschein = tLieferschein.kLieferschein AND tVersand.dVersendet IS NOT NULL
WHERE CAST(DATEADD(WEEK, -6, GETDATE()) AS DATE) <= CAST(tVersand.dErstellt AS DATE)
GROUP BY DATEPART(ISO_WEEK, tVersand.dVersendet)+(DATEPART(YEAR, tVersand.dVersendet)*100)
ORDER BY DATEPART(ISO_WEEK, tVersand.dVersendet)+(DATEPART(YEAR, tVersand.dVersendet)*100) DESC


SELECT    'Positionen je Monat' AS 'Kennzahl',
        SUBSTRING(FORMAT(tVersand.dVersendet, 'yyyyMM'), 5, 2) AS 'Zeitraum',
        COUNT(1) AS 'Menge'
FROM tLieferschein
JOIN tLieferscheinPos ON tLieferscheinPos.kLieferschein = tLieferschein.kLieferschein
JOIN tVersand ON tVersand.kLieferschein = tLieferschein.kLieferschein AND tVersand.dVersendet IS NOT NULL
WHERE CAST(DATEADD(MONTH, -6, GETDATE()) AS DATE) <= CAST(tVersand.dErstellt AS DATE)
GROUP BY FORMAT(tVersand.dVersendet, 'yyyyMM')
ORDER BY FORMAT(tVersand.dVersendet, 'yyyyMM') DESC


SELECT    'Positionen je Jahr' AS 'Kennzahl',
        FORMAT(tVersand.dVersendet, 'yyyy') AS 'Zeitraum',
        COUNT(1) AS 'Menge'
FROM tLieferschein
JOIN tLieferscheinPos ON tLieferscheinPos.kLieferschein = tLieferschein.kLieferschein
JOIN tVersand ON tVersand.kLieferschein = tLieferschein.kLieferschein AND tVersand.dVersendet IS NOT NULL
WHERE CAST(DATEADD(YEAR, -6, GETDATE()) AS DATE) <= CAST(tVersand.dErstellt AS DATE)
GROUP BY FORMAT(tVersand.dVersendet, 'yyyy')
ORDER BY FORMAT(tVersand.dVersendet, 'yyyy') DESC

Anzahl Produkte:
SQL:
SELECT    'Produktanzahl je Tag' AS 'Kennzahl',
        CONVERT(VARCHAR(10), CAST(tVersand.dErstellt AS DATE), 104) AS 'Zeitraum',
        SUM(tLieferscheinPos.fAnzahl) AS 'Menge'
FROM tLieferschein
JOIN tLieferscheinPos ON tLieferscheinPos.kLieferschein = tLieferschein.kLieferschein
JOIN tVersand ON tVersand.kLieferschein = tLieferschein.kLieferschein AND tVersand.dVersendet IS NOT NULL
WHERE CAST(DATEADD(DAY, -6, GETDATE()) AS DATE) <= CAST(tVersand.dErstellt AS DATE)
GROUP BY CAST(tVersand.dErstellt AS DATE)
ORDER BY CAST(tVersand.dErstellt AS DATE) DESC


SELECT    'Produktanzahl je KW' AS 'Kennzahl',
        SUBSTRING(CONVERT(VARCHAR(6), DATEPART(ISO_WEEK, tVersand.dVersendet)+(DATEPART(YEAR, tVersand.dVersendet)*100)), 5, 2) AS 'Zeitraum',
        SUM(tLieferscheinPos.fAnzahl) AS 'Menge'
FROM tLieferschein
JOIN tLieferscheinPos ON tLieferscheinPos.kLieferschein = tLieferschein.kLieferschein
JOIN tVersand ON tVersand.kLieferschein = tLieferschein.kLieferschein AND tVersand.dVersendet IS NOT NULL
WHERE CAST(DATEADD(WEEK, -6, GETDATE()) AS DATE) <= CAST(tVersand.dErstellt AS DATE)
GROUP BY DATEPART(ISO_WEEK, tVersand.dVersendet)+(DATEPART(YEAR, tVersand.dVersendet)*100)
ORDER BY DATEPART(ISO_WEEK, tVersand.dVersendet)+(DATEPART(YEAR, tVersand.dVersendet)*100) DESC


SELECT    'Produktanzahl je Monat' AS 'Kennzahl',
        SUBSTRING(FORMAT(tVersand.dVersendet, 'yyyyMM'), 5, 2) AS 'Zeitraum',
        SUM(tLieferscheinPos.fAnzahl) AS 'Menge'
FROM tLieferschein
JOIN tLieferscheinPos ON tLieferscheinPos.kLieferschein = tLieferschein.kLieferschein
JOIN tVersand ON tVersand.kLieferschein = tLieferschein.kLieferschein AND tVersand.dVersendet IS NOT NULL
WHERE CAST(DATEADD(MONTH, -6, GETDATE()) AS DATE) <= CAST(tVersand.dErstellt AS DATE)
GROUP BY FORMAT(tVersand.dVersendet, 'yyyyMM')
ORDER BY FORMAT(tVersand.dVersendet, 'yyyyMM') DESC


SELECT    'Produktanzahl je Jahr' AS 'Kennzahl',
        FORMAT(tVersand.dVersendet, 'yyyy') AS 'Zeitraum',
        SUM(tLieferscheinPos.fAnzahl) AS 'Menge'
FROM tLieferschein
JOIN tLieferscheinPos ON tLieferscheinPos.kLieferschein = tLieferschein.kLieferschein
JOIN tVersand ON tVersand.kLieferschein = tLieferschein.kLieferschein AND tVersand.dVersendet IS NOT NULL
WHERE CAST(DATEADD(YEAR, -6, GETDATE()) AS DATE) <= CAST(tVersand.dErstellt AS DATE)
GROUP BY FORMAT(tVersand.dVersendet, 'yyyy')
ORDER BY FORMAT(tVersand.dVersendet, 'yyyy') DESC



Zu Punkt 3:
SQL:
SELECT CONVERT(VARCHAR(10), CAST(tVersand.dVersendet AS DATE), 104) AS 'Tag',
        FORMAT(DATEDIFF(MINUTE, MIN(tLieferschein.dErstellt), MAX(tVersand.dVersendet)) / CAST(60 AS DECIMAL), 'N2') AS 'Stunden'
FROM tVersand
JOIN tLieferschein ON CAST(tVersand.dVersendet AS DATE) = CAST(tLieferschein.dErstellt AS DATE)
GROUP BY CAST(tVersand.dVersendet AS DATE)
ORDER BY CAST(tVersand.dVersendet AS DATE) DESC


Alle Abfragen habe ich Rückwärts nach Datum sortiert.
 

Patrizia

Sehr aktives Mitglied
19. September 2010
480
59
WOW!
"Mal schnell zusammengetippt" - Du bist ein Mensch mit Humor ...
😂😂😂😂🤣🤣🤣🤣🙃🙃🙃
Vielen Dank - das sind super Auswertungen - aus denen kann man wirklich ein komplettes Lagerlogistikcontrollingtool machen!
Ich hatte das -testweise- mal per Hand gemacht. Da sitzt man schon eine Weile nur für einen Tag.
Ob das einer inneren Logik der Programmierer😱 folgt, ist, naja ...
👻👻👻👻
Programmierer haben meist wenig Ahnung von Vermeidung des Blindflugs eines Unternehmens durch ein ordentliches Kennzahlensystem ...
😁

Vielen herzlichen Dank!!!
 
  • Gefällt mir
Reaktionen: fluxel und hula1499

fluxel

Aktives Mitglied
17. April 2019
31
10
Hückelhoven
Ich kenne mich zum Glück (so behaupte ich es zumindest) relativ gut in den Verkaufs/Versandtabellen aus, darum ging das relativ flott.
Das Problem ist, dass meistens nicht der Programmierer bestimmt, was in eine Software kommt ;)

LG Hendrik
 
  • Haha
Reaktionen: Patrizia

Patrizia

Sehr aktives Mitglied
19. September 2010
480
59
dazu sag ich jetzt nix.
Aber gerade im Bereich der "klassischen Betriebswirtschaft" fällt es schon auf, dass die JTL Mannschaft, die bei Marketing und Absatz superfit in Sachen Funktionalität ist, schon ein paar Lücken zu sein scheinen. Schade, weil diese klasse Software so unglaubliche Möglichkeiten bietet, wie Dein Code beweist. Solche Auswertungen bezahlst Du bei praktisch allen größeren Systemen. Und zwar richtig teuer.
 

fluxel

Aktives Mitglied
17. April 2019
31
10
Hückelhoven
dazu sag ich jetzt nix.
Aber gerade im Bereich der "klassischen Betriebswirtschaft" fällt es schon auf, dass die JTL Mannschaft, die bei Marketing und Absatz superfit in Sachen Funktionalität ist, schon ein paar Lücken zu sein scheinen. Schade, weil diese klasse Software so unglaubliche Möglichkeiten bietet, wie Dein Code beweist. Solche Auswertungen bezahlst Du bei praktisch allen größeren Systemen. Und zwar richtig teuer.
Ja, dafür gibt es die Servicepartner, ob offiziell oder (wie wir) inoffiziell.
So eine Auswertung kostet dann ja auch nicht die Welt, wenn du wen gescheites findest (oder im Forum nachfragst) ;)
Die Auswertung kannst du dann in den SQL Reporting Service werfen und hast dann eine schöne, grafische Auswertung.