Neu Workaround für WMS Inventurliste

Philipp Laumen

Gesperrter Benutzer
16. Juli 2018
260
86
Hallo zusammen,

aktuell hat die WMS Inventurliste einen Bug, wodurch zum Beispiel der Lagerplatzname nicht ausgegeben wird. Das ganze wird mit diesem Ticket gelöst werden:
https://issues.jtl-software.de/issues/WAWI-32600

Um euch aber trotzdem eine Ausgabe ermöglichen habe ich ein SQL geschrieben, was euch die Werte der Inventurliste ausgibt.
Das ganze ist auf der Datenbank direkt abzusetzen, zum Beispiel über das Sql Server Management Studio.
SQL:

SQL:
SELECT tWmsInventurlog.kWmsInventur AS 'Inventurnummer',tWarenlagerplatz.cName AS Lagerplatzname,tARtikel.cArtNr AS Artikelnummer,(tWmsInventurlog.fAnzahl + (-1 * tWmsInventurlog.fDifferenz)) AS 'Ist Bestand',tWmsInventurlog.fAnzahl AS 'Soll Bestand',tWmsInventurlog.fDifferenz AS Differenz,tliefartikel.fEKNetto AS 'Netto EK',((tWmsInventurlog.fAnzahl + (-1 * tWmsInventurlog.fDifferenz)) *tliefartikel.fEKNetto ) AS 'Gesamt Netto',tBenutzer.cName AS 'Bearbeiter' ,tWmsInventur.dAngelegt AS Inventurdatum
FROM dbo.tWmsInventurlog
JOIN dbo.tWarenLagerPlatz ON tWarenLagerPlatz.kWarenlagerplatz = tWmsInventurlog.kWarenLagerPlatz
JOIN dbo.tArtikel ON dbo.tArtikel.kArtikel = tWmsInventurlog.kArtikel
JOIN dbo.tWmsInventur ON dbo.tWmsInventur.kWmsInventur = tWmsInventurlog.kWmsInventur
JOIN dbo.tBenutzer ON tBenutzer.kBenutzer = tWmsInventurlog.kBenutzer
JOIN dbo.tliefartikel ON dbo.tliefartikel.tArtikel_kArtikel = tWmsInventurlog.kArtikel AND tliefartikel.nStandard = 1 -- EK Werte auf den beim Standardlieferanten hinterlegten EK beschränkt
WHERE tWmsInventurlog.dZeitstempel BETWEEN '01.12.2019' AND '31.12.2019' -- Anpassen um den gewünschten Datumsbereich ausgeben zu lassen
ORDER BY Inventurnummer ASC
 

motodox

Aktives Mitglied
23. Oktober 2015
19
1
Für all jene, die obige Abfrage mit Zahlen benötigen, die Excel auch entsprechend verarbeiten kann:

SQL:
/****** Skript für SelectTopNRows-Befehl aus SSMS ******/
USE [eazybusiness]
SELECT tWmsInventurlog.kWmsInventur AS 'Inventurnummer',tWarenlagerplatz.cName AS Lagerplatzname,tARtikel.cArtNr AS Artikelnummer, CAST (tWmsInventurlog.fAnzahl + (-1 * tWmsInventurlog.fDifferenz) AS DECIMAL(10,2)) AS 'Ist Bestand', CAST (tWmsInventurlog.fAnzahl AS DECIMAL(10,2)) AS 'Soll Bestand', CAST (tWmsInventurlog.fDifferenz AS DECIMAL(10,2)) AS Differenz, CAST (tliefartikel.fEKNetto AS DECIMAL(10,2)) AS 'Netto EK', CAST ((tWmsInventurlog.fAnzahl + (-1 * tWmsInventurlog.fDifferenz)) *tliefartikel.fEKNetto AS DECIMAL(10,2)) AS 'Gesamt Netto',tBenutzer.cName AS 'Bearbeiter' ,tWmsInventur.dAngelegt AS Inventurdatum
FROM [eazybusiness].[dbo].[tWmsInventurlog]
JOIN dbo.tWarenLagerPlatz ON tWarenLagerPlatz.kWarenlagerplatz = tWmsInventurlog.kWarenLagerPlatz
JOIN dbo.tArtikel ON dbo.tArtikel.kArtikel = tWmsInventurlog.kArtikel
JOIN dbo.tWmsInventur ON dbo.tWmsInventur.kWmsInventur = tWmsInventurlog.kWmsInventur
JOIN dbo.tBenutzer ON tBenutzer.kBenutzer = tWmsInventurlog.kBenutzer
JOIN dbo.tliefartikel ON dbo.tliefartikel.tArtikel_kArtikel = tWmsInventurlog.kArtikel AND tliefartikel.nStandard = 1 -- EK Werte auf den beim Standardlieferanten hinterlegten EK beschränkt
WHERE tWmsInventurlog.dZeitstempel BETWEEN '01.10.2020' AND '31.12.2020' -- Anpassen um den gewünschten Datumsbereich ausgeben zu lassen
ORDER BY Inventurnummer ASC
 

motodox

Aktives Mitglied
23. Oktober 2015
19
1
Ich muss mal eben dick & fett ACHTUNG!! schreiben!
Bevor hier noch jemand ins Fettnäpfchen tritt - im ersten Beitrag und auch in meiner Antwort sind "Soll Bestand" und "Ist Bestand" vertauscht!

Wenn ihr die Differenzliste über's WMS ziehen benötigt, bitte folgenden SQL-Befehl absetzen:

SQL:
USE [eazybusiness]
SELECT tWmsInventurlog.kWmsInventur AS 'Inventurnummer',tWarenlagerplatz.cName AS Lagerplatzname,tARtikel.cArtNr AS Artikelnummer, CAST (tWmsInventurlog.fAnzahl + (-1 * tWmsInventurlog.fDifferenz) AS DECIMAL(10,2)) AS 'Soll Bestand', CAST (tWmsInventurlog.fAnzahl AS DECIMAL(10,2)) AS 'Ist Bestand', CAST (tWmsInventurlog.fDifferenz AS DECIMAL(10,2)) AS Differenz, CAST (tliefartikel.fEKNetto AS DECIMAL(10,2)) AS 'Netto EK', CAST ((tWmsInventurlog.fAnzahl + (-1 * tWmsInventurlog.fDifferenz)) *tliefartikel.fEKNetto AS DECIMAL(10,2)) AS 'Gesamt Netto',tBenutzer.cName AS 'Bearbeiter' ,tWmsInventur.dAngelegt AS Inventurdatum
FROM [eazybusiness].[dbo].[tWmsInventurlog]
JOIN dbo.tWarenLagerPlatz ON tWarenLagerPlatz.kWarenlagerplatz = tWmsInventurlog.kWarenLagerPlatz
JOIN dbo.tArtikel ON dbo.tArtikel.kArtikel = tWmsInventurlog.kArtikel
JOIN dbo.tWmsInventur ON dbo.tWmsInventur.kWmsInventur = tWmsInventurlog.kWmsInventur
JOIN dbo.tBenutzer ON tBenutzer.kBenutzer = tWmsInventurlog.kBenutzer
JOIN dbo.tliefartikel ON dbo.tliefartikel.tArtikel_kArtikel = tWmsInventurlog.kArtikel AND tliefartikel.nStandard = 1 -- EK Werte auf den beim Standardlieferanten hinterlegten EK beschränkt
WHERE tWmsInventurlog.dZeitstempel BETWEEN '01.11.2020' AND '31.12.2020' -- Anpassen um den gewünschten Datumsbereich ausgeben zu lassen
ORDER BY Inventurnummer ASC
 

TECHNEO

Offizieller Service Partner
SPBanner
30. Juni 2016
52
15
10827 Berlin
Firma
[tech]NEO GmbH
Die Abfrage ist klasse, leider benötige ich aber den EK Durchschnitt, da viele Artikel mehre Lieferanten haben.
Habe schon die Datenbank durchsucht, aber die Spalte nicht gefunden. TIPP?
 

Philipp Laumen

Gesperrter Benutzer
16. Juli 2018
260
86
@TECHNEO was lange wärt und so... Ich bin endlich dazu gekommen. Schau es dir mal an.
Ich berechne den durchschn. EK des Artikels je Lagerplatz in der Inventur.
SQL:
DECLARE @Von AS DATE;
DECLARE @Bis AS DATE;
SET @Von = '01.01.2021'
SET @Bis = '31.12.2021'
SELECT
tWmsInventurlog.kWmsInventur AS 'Inventurnummer',
tWarenlagerplatz.cName AS Lagerplatzname,
tARtikel.cArtNr AS Artikelnummer,
CAST (tWmsInventurlog.fAnzahl + (-1 * tWmsInventurlog.fDifferenz) AS DECIMAL(10,2)) AS 'Soll Bestand',
CAST (tWmsInventurlog.fAnzahl AS DECIMAL(10,2)) AS 'Ist Bestand',
CAST (tWmsInventurlog.fDifferenz AS DECIMAL(10,2)) AS Differenz,
CAST (WE.EKneu AS DECIMAL(10,2)) AS 'Netto EK (Durchschn.)',
CAST (WE.EKges AS DECIMAL(10,2)) AS 'Gesamt Netto (verbl.)',
CASE
WHEN fDifferenz > 0 THEN CAST ((tWmsInventurlog.fAnzahl + (-1 * tWmsInventurlog.fDifferenz)) * WE.EKneu AS DECIMAL(10,2))
WHEN fDifferenz < 0 THEN CAST (-1*(tWmsInventurlog.fAnzahl + (-1 * tWmsInventurlog.fDifferenz)) * WE.EKneu AS DECIMAL(10,2))
ELSE 0
END AS 'Netto Gesamt (aenderung)',
CASE
WHEN fDifferenz > 0 THEN 'Plusbuchung'
WHEN fDifferenz < 0 THEN 'Minusbuchung'
ELSE 'Keine Aenderung'
END AS 'Buchungstyp',
tBenutzer.cName AS 'Bearbeiter' ,
tWmsInventur.dAngelegt AS Inventurdatum
FROM [eazybusiness].[dbo].[tWmsInventurlog]
JOIN dbo.tWarenLagerPlatz ON tWarenLagerPlatz.kWarenlagerplatz = tWmsInventurlog.kWarenLagerPlatz
JOIN dbo.tArtikel ON dbo.tArtikel.kArtikel = tWmsInventurlog.kArtikel
JOIN dbo.tWmsInventur ON dbo.tWmsInventur.kWmsInventur = tWmsInventurlog.kWmsInventur
JOIN dbo.tBenutzer ON tBenutzer.kBenutzer = tWmsInventurlog.kBenutzer
JOIN dbo.tliefartikel ON dbo.tliefartikel.tArtikel_kArtikel = tWmsInventurlog.kArtikel AND tliefartikel.nStandard = 1 -- EK Werte auf den beim Standardlieferanten hinterlegten EK beschränkt
JOIN (SELECT (SUM(fEKEinzel*fAnzahlAktuell)/SUM(fAnzahlAktuell)) AS EKneu,SUM(fEKEinzel*fAnzahlAktuell) AS EKges,kArtikel,kWarenLagerPlatz FROM dbo.tWarenLagerEingang
WHERE fAnzahlAktuell != 0  AND dErstellt <= @Von
GROUP BY kArtikel,kWarenLagerPlatz) AS WE ON WE.kArtikel = tWmsInventurlog.kArtikel AND WE.kWarenLagerPlatz = tWmsInventurlog.kWarenlagerPlatz
WHERE tWmsInventurlog.dZeitstempel BETWEEN @Von AND @Bis -- Anpassen um den gewünschten Datumsbereich ausgeben zu lassen
ORDER BY Inventurnummer ASC
 

Ähnliche Themen