Neu Seriennummer und Chargennummer in der Artikelübersicht

Philipp Laumen

Gesperrter Benutzer
16. Juli 2018
260
86
Hallo,

da die Nachfrage in einem anderen Thread kam, hier mal zwei Eigene Ansichten für Chargen und Seriennummer Artikel.

Seriennummer:

Code:
SELECT cSeriennr AS Seriennummer,
COUNT(1) AS Menge
FROM dbo.tLagerArtikel
WHERE kArtikel = @Key
AND kBestellPos = 0
GROUP BY cSeriennr

Charge:

Code:
SELECT cChargenNr  AS 'Chargen Nummer',SUM (fAnzahlAktuell) AS  'Menge aktuell'
FROM dbo.tWarenLagerEingang
WHERE kArtikel = @Key
AND cChargenNr IS NOT NULL
GROUP BY cChargenNr

Es wird jeweils nur der aktuelle Bestand angezeigt. Bitte beachtet, das die Seriennummer Artikel keine direkte Verknüpfung zum Wareneingang haben.
 
  • Gefällt mir
Reaktionen: BerndX

sjk

Sehr aktives Mitglied
16. Januar 2019
634
278
Hallo,

leider kenne ich mich in der Datenbank noch zu wenig gut aus, um das für MHDs umzusetzen.

Eine eigene Übersicht mit Artikel, Menge, MHD würde uns einige Klicks sparen. Würde mich sehr freuen, wenn du den Post noch damit ergänzen könntest!
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
Hallo Samuel,

die MHD Daten stehen auch in der Tabelle tWarenLagerEingang und lassen sich ganz analog zu den Chargennummern behandeln. Da wir sehr viele Artikel haben, die eine Chargennummer haben UND dann dazu ein MHD, habe ich die SQL Abfrage von Philip Laumen von oben einmal so abgeändert, dass sie für mich passt und vermutlich/hoffentlich auch für Dich.
SQL:
SELECT ISNULL(cChargenNr,'--') AS 'Chargen Nummer', ISNULL(CONVERT(VARCHAR(10),t1.dMHD,104),'--') AS 'MHD', t2.cName AS 'Warenlager',
 CONVERT(DECIMAL(10,2),SUM(fAnzahlAktuell)) AS 'Anzahl aktuell' FROM dbo.tWarenLagerEingang t1
 JOIN tWarenLager t2 ON t2.kWarenLager=t1.kWarenLagerPlatz
 WHERE kArtikel=@Key AND cChargenNr IS NOT NULL
 GROUP BY t2.cName, t1.dMHD, t1.cChargenNr
 HAVING SUM(fAnzahlAktuell)>0
 ORDER BY t2.cName DESC, t1.dMHD ASC, SUM(fAnzahlAktuell) ASC

Gruppiert werden die Einträge erst einmal nach Lager und dann innerhalb des Lagers nach der MHD. Ich denke, das macht so Sinn und ich habe dann noch "verfügt", dass die globale Sortierung der Lagernamen absteigend sein soll, damit das "Standardlager" nicht ganz unten am Ende gezeigt wird, während das uninteressante "Ablauflager" für meine abgelaufene MHD-Artikel immer schön im Blick ist.

Und auch wenn ein Artikel nur eines der beiden Merkmale hat, wird in der Tabelle für das fehlende Merkmal einfach ein '--' gezeigt. Die Abfrage versagt also nicht, wenn ein Wert nicht existiert oder gesetzt ist.

Gruß,
Ingmar
 
  • Gefällt mir
Reaktionen: mitscho

sjk

Sehr aktives Mitglied
16. Januar 2019
634
278
Hallo Ingmar, vielen Dank! Genau so etwas habe ich mir vorgestellt.

Weil wir keine Chargen in der Wawi führen hat es zuerst nicht funktioniert, da musste ich noch cChargenNr IS NOT NULL rauslöschen.
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
Hallo Samuel,

das cChargenNr IS NOT NULL musste nicht nur bei Dir raus, sondern das ist schlicht falsch und ich habe es nur versehentlich bei der Änderung von Philip Laumens Code stehen gelassen. Hier also noch einmal der korrekte Code, damit sich andere Leute nicht erst durch den Thread quälen müssen, um eine rundum funktionierende Version zu bekommen.
SQL:
SELECT ISNULL(cChargenNr,'--') AS 'Chargen Nummer', ISNULL(CONVERT(VARCHAR(10),t1.dMHD,104),'--') AS 'MHD', t2.cName AS 'Warenlager',
 CONVERT(DECIMAL(10,2),SUM(fAnzahlAktuell)) AS 'Anzahl aktuell' FROM dbo.tWarenLagerEingang t1
 JOIN tWarenLager t2 ON t2.kWarenLager=t1.kWarenLagerPlatz
 WHERE kArtikel=@Key
 GROUP BY t2.cName, t1.dMHD, t1.cChargenNr
 HAVING SUM(fAnzahlAktuell)>0
 ORDER BY t2.cName DESC, t1.dMHD ASC, SUM(fAnzahlAktuell) ASC

P.S. Wie hast Du die Formatierung des "cChargenNr IS NOT NULL" in Deiner Antwort hinbekommen. Das sieht gut und wie ein Inline-Zitat aus, gefällt mir.

Gruß,
Ingmar
 

Derdiedas

Aktives Mitglied
9. Oktober 2019
39
20
Super, vielen Dank. Genau das haben wir auch gebraucht. Ist es bei dieser Abfrage denn auch möglich mitzugeben welche der Charegn denn noch in Aufträgen vorliegen und welche quasi davon noch frei verfügbar sind?

Ich danke schon mal für jede Hilfe!
 

BerndX

Aktives Mitglied
22. Mai 2020
5
0
Code:
Code:
SELECT cSeriennr AS Seriennummer,
COUNT(1) AS Menge
FROM dbo.tLagerArtikel
WHERE kArtikel = @Key
AND kBestellPos = 0
GROUP BY cSeriennr

Danke, Herr Laumen, das ist toll! Es wäre noch hilfsreicher, wenn der Lagername auch mit aufgenommen werden könnte. Ich kenne mich zu wening in SQL aus, um diese Modifizierung zu machen. Was muss man in Codes noch eintragen, um die Lagernamen zu zeigen?
 

samllkartoffelpuffer

Gut bekanntes Mitglied
28. August 2018
106
6
Hallo Samuel,

die MHD Daten stehen auch in der Tabelle tWarenLagerEingang und lassen sich ganz analog zu den Chargennummern behandeln. Da wir sehr viele Artikel haben, die eine Chargennummer haben UND dann dazu ein MHD, habe ich die SQL Abfrage von Philip Laumen von oben einmal so abgeändert, dass sie für mich passt und vermutlich/hoffentlich auch für Dich.
SQL:
SELECT ISNULL(cChargenNr,'--') AS 'Chargen Nummer', ISNULL(CONVERT(VARCHAR(10),t1.dMHD,104),'--') AS 'MHD', t2.cName AS 'Warenlager',
 CONVERT(DECIMAL(10,2),SUM(fAnzahlAktuell)) AS 'Anzahl aktuell' FROM dbo.tWarenLagerEingang t1
 JOIN tWarenLager t2 ON t2.kWarenLager=t1.kWarenLagerPlatz
 WHERE kArtikel=@Key AND cChargenNr IS NOT NULL
 GROUP BY t2.cName, t1.dMHD, t1.cChargenNr
 HAVING SUM(fAnzahlAktuell)>0
 ORDER BY t2.cName DESC, t1.dMHD ASC, SUM(fAnzahlAktuell) ASC

Gruppiert werden die Einträge erst einmal nach Lager und dann innerhalb des Lagers nach der MHD. Ich denke, das macht so Sinn und ich habe dann noch "verfügt", dass die globale Sortierung der Lagernamen absteigend sein soll, damit das "Standardlager" nicht ganz unten am Ende gezeigt wird, während das uninteressante "Ablauflager" für meine abgelaufene MHD-Artikel immer schön im Blick ist.

Und auch wenn ein Artikel nur eines der beiden Merkmale hat, wird in der Tabelle für das fehlende Merkmal einfach ein '--' gezeigt. Die Abfrage versagt also nicht, wenn ein Wert nicht existiert oder gesetzt ist.

Gruß,
Ingmar
Hallo Ingmar,

bisher haben wir deinen Code im Einsatz. Aber dieser zeigt nur die Menge von Waren mit jeweiligem MHD & Charge von einem Lager. Wir haben insgesamt 3 Lager. Wie können wir die Abfrage erweitern, damit die Daten von allen Lagern angezeigt werden?

Vorab Tausend Dank!
 

Palimklimbim

Aktives Mitglied
28. Mai 2021
1
0
Moin Herr Laumann,
die Abfrage in der Artikelübersicht ist wirklich toll.
Kann man das eventuell auch auf einem Artikeletikett darstellen?
Sodass man den Bestand je Charge auf einem Ausdruck erkennt?
z.B.:
" MH23 5 Pakete
MG12 9 Pakete"
oder:
" MHD 12.06.2022 5 Stück
MHD 24.08.2024 8 Stück"

Über eine Lösung würde ich mich sehr Freuen. Vielen Dank im Voraus.
 

nweber

Aktives Mitglied
8. Juni 2020
83
9
Hallo,

da die Nachfrage in einem anderen Thread kam, hier mal zwei Eigene Ansichten für Chargen und Seriennummer Artikel.

Seriennummer:

Code:
SELECT cSeriennr AS Seriennummer,
COUNT(1) AS Menge
FROM dbo.tLagerArtikel
WHERE kArtikel = @Key
AND kBestellPos = 0
GROUP BY cSeriennr

Charge:

Code:
SELECT cChargenNr  AS 'Chargen Nummer',SUM (fAnzahlAktuell) AS  'Menge aktuell'
FROM dbo.tWarenLagerEingang
WHERE kArtikel = @Key
AND cChargenNr IS NOT NULL
GROUP BY cChargenNr

Es wird jeweils nur der aktuelle Bestand angezeigt. Bitte beachtet, das die Seriennummer Artikel keine direkte Verknüpfung zum Wareneingang haben.
Hi!


Kann ich die Charge auch irgendwie in der Eigenen Übersicht unter Versand WMS Picklisten anzeigen lassen?
Damit ich sehen kann, welche Charge welchem Auftrag zugeordnet ist?

Bzw. wie müsste die Erweiterung zu diesem SQL aussehen, welches wir bereits benutzen?

SQL:
SELECT
 Versand.lvPicklistenposition.kPickliste AS 'Pickliste',
 Versand.lvPicklistenposition.cBestellNr AS 'Auftragsnummer',
 Versand.lvPicklistenposition.cLieferscheinNr 'Lieferscheinnummer',
 Versand.lvPicklistenposition.cAuftragArtNr AS 'Artikelnummer',
 Versand.lvPicklistenposition.cString AS 'Beschreibung',
 CAST(Versand.lvPicklistenposition.fAnzahl AS INT) AS 'Menge',
 Versand.lvPicklistenposition.nIstStueckliste AS 'Stückliste',
 Versand.lvPicklistenposition.nStatus AS 'Status',
 CONVERT(varchar,tPicklistePosStatus.dZeitstempel,121) AS 'Zeitstempel',
 tbenutzer.cName AS 'Benutzer',
 tWarenlagerPlatz.cName AS 'Lagerplatz'
FROM Versand.lvPicklistenposition
 LEFT JOIN tPicklistePosStatus ON tPicklistePosStatus.kPicklistePos = Versand.lvPicklistenposition.kPicklistePos
 LEFT JOIN tbenutzer ON tbenutzer.kBenutzer = tPicklistePosStatus.kbenutzer
 LEFT JOIN tPicklistePos ON tPicklistePos.kPicklistePos = Versand.lvPicklistenposition.kPicklistePos
 LEFT JOIN tWarenlagerPlatz ON tWarenlagerPlatz.kWarenlagerPlatz = tPicklistePos.kWarenlagerPlatz
WHERE
 Versand.lvPicklistenposition.kPickliste = @Key AND
 (tPicklistePosStatus.nStatus = '20' OR tPicklistePosStatus.nStatus = '30')
ORDER BY tPicklistePosStatus.dZeitstempel ASC;
 

nweber

Aktives Mitglied
8. Juni 2020
83
9
Hi!


Kann ich die Charge auch irgendwie in der Eigenen Übersicht unter Versand WMS Picklisten anzeigen lassen?
Damit ich sehen kann, welche Charge welchem Auftrag zugeordnet ist?

Bzw. wie müsste die Erweiterung zu diesem SQL aussehen, welches wir bereits benutzen?

SQL:
SELECT
 Versand.lvPicklistenposition.kPickliste AS 'Pickliste',
 Versand.lvPicklistenposition.cBestellNr AS 'Auftragsnummer',
 Versand.lvPicklistenposition.cLieferscheinNr 'Lieferscheinnummer',
 Versand.lvPicklistenposition.cAuftragArtNr AS 'Artikelnummer',
 Versand.lvPicklistenposition.cString AS 'Beschreibung',
 CAST(Versand.lvPicklistenposition.fAnzahl AS INT) AS 'Menge',
 Versand.lvPicklistenposition.nIstStueckliste AS 'Stückliste',
 Versand.lvPicklistenposition.nStatus AS 'Status',
 CONVERT(varchar,tPicklistePosStatus.dZeitstempel,121) AS 'Zeitstempel',
 tbenutzer.cName AS 'Benutzer',
 tWarenlagerPlatz.cName AS 'Lagerplatz'
FROM Versand.lvPicklistenposition
 LEFT JOIN tPicklistePosStatus ON tPicklistePosStatus.kPicklistePos = Versand.lvPicklistenposition.kPicklistePos
 LEFT JOIN tbenutzer ON tbenutzer.kBenutzer = tPicklistePosStatus.kbenutzer
 LEFT JOIN tPicklistePos ON tPicklistePos.kPicklistePos = Versand.lvPicklistenposition.kPicklistePos
 LEFT JOIN tWarenlagerPlatz ON tWarenlagerPlatz.kWarenlagerPlatz = tPicklistePos.kWarenlagerPlatz
WHERE
 Versand.lvPicklistenposition.kPickliste = @Key AND
 (tPicklistePosStatus.nStatus = '20' OR tPicklistePosStatus.nStatus = '30')
ORDER BY tPicklistePosStatus.dZeitstempel ASC;

Für alle, die noch Bedarf an dieser Art von Ansicht* haben.

SQL:
SELECT
CAST(Versand.lvPicklistenposition.fAnzahl AS INT) AS 'Menge',
 Versand.lvPicklistenposition.cBestellNr AS 'Auftragsnummer',
Versand.lvPicklistenposition.cString AS 'Beschreibung',
CAST(tWarenLagerEingang.dMHD AS date) AS 'MHD',
tWarenLagerEingang.cChargenNr AS 'Charge'
FROM Versand.lvPicklistenposition
LEFT JOIN tPicklistePosStatus ON tPicklistePosStatus.kPicklistePos = Versand.lvPicklistenposition.kPicklistePos
LEFT JOIN tbenutzer ON tbenutzer.kBenutzer = tPicklistePosStatus.kbenutzer
LEFT JOIN tPicklistePos ON tPicklistePos.kPicklistePos = Versand.lvPicklistenposition.kPicklistePos
LEFT JOIN tWarenlagerPlatz ON tWarenlagerPlatz.kWarenlagerPlatz = tPicklistePos.kWarenlagerPlatz
LEFT JOIN tWarenLagerEingang ON tPicklistePos.kWarenLagerEingang = tWarenLagerEingang.kWarenLagerEingang
WHERE
Versand.lvPicklistenposition.kPickliste = @Key AND
(tPicklistePosStatus.nStatus = '20' OR tPicklistePosStatus.nStatus = '30') AND
Versand.lvPicklistenposition.cLieferscheinNr is NULL
ORDER BY tPicklistePosStatus.dZeitstempel ASC;



*Inhalte in der Ansicht leicht verändert zum ersten Code.
 

Maria HD

Aktives Mitglied
17. Oktober 2015
43
4
Hallo Samuel,

das cChargenNr IS NOT NULL musste nicht nur bei Dir raus, sondern das ist schlicht falsch und ich habe es nur versehentlich bei der Änderung von Philip Laumens Code stehen gelassen. Hier also noch einmal der korrekte Code, damit sich andere Leute nicht erst durch den Thread quälen müssen, um eine rundum funktionierende Version zu bekommen.
SQL:
SELECT ISNULL(cChargenNr,'--') AS 'Chargen Nummer', ISNULL(CONVERT(VARCHAR(10),t1.dMHD,104),'--') AS 'MHD', t2.cName AS 'Warenlager',
 CONVERT(DECIMAL(10,2),SUM(fAnzahlAktuell)) AS 'Anzahl aktuell' FROM dbo.tWarenLagerEingang t1
 JOIN tWarenLager t2 ON t2.kWarenLager=t1.kWarenLagerPlatz
 WHERE kArtikel=@Key
 GROUP BY t2.cName, t1.dMHD, t1.cChargenNr
 HAVING SUM(fAnzahlAktuell)>0
 ORDER BY t2.cName DESC, t1.dMHD ASC, SUM(fAnzahlAktuell) ASC

P.S. Wie hast Du die Formatierung des "cChargenNr IS NOT NULL" in Deiner Antwort hinbekommen. Das sieht gut und wie ein Inline-Zitat aus, gefällt mir.

Gruß,
Ingmar
Hallo, erst mal danke für den Code.
bei mir wird immer das Standard Lager angezeigt. Wie kann ich da ein anderes wählen?
 

Ähnliche Themen