Tabelle aktuelle Lagerbestände

Hallo an Alle,
ich benötige die aktuellen Lagerbestände von Artikeln, ist die KHKLagerplatzbestaende die einzige Tabelle oder gibt es noch eine andere?
Es scheint nicht so einfach zu sein den tagesaktuellen Bestand zu ermitteln, das Ergebnis ist nicht immer das Gleiche...
 
Hi!

Vielleicht bringt Dich die KHKArtikelVarianten weiter. Dort stehen die Bestände je Artikel drinnen.

Was ist der genaue Anwendungsfall?

Lieber Gruß
MPollmer
 
Für die Auswertung in einem BI-Tool werden die Lagerbestände benötigt, und wenn ich die Auswertungen in der Sage nutze kommen an verschiedenen Tagen für das gleiche Datum unterschiedliche Werte heraus...
 
Hallo zusammen,

1. KHKArtikelVarianten -> Hier ist der aktuelle Gesamtbestand eines Artikels bzw. einer Artikelvariante (falls mit Varianten gearbeitet wird) zu finden. Ist ein Artikel auf mehreren Lagerplätzen eingelagert, ist in dieser Tabelle der kumulierte Bestand aller Lagerplätze einsehbar.

2. KHKLagerplatzbestaende -> In dieser Tabelle wird der Bestand eines Artikels bzw. einer Artikelvariante (falls mit Varianten gearbeitet wird) pro Lagerplatz hinterlegt. Für einen Artikel kann es also mehrere Einträge geben.

Die Dispo (zukünftige Zu- und Abgänge durch Einkauf, Verkauf und Produktion) wird in diesen beiden Tabellen nicht berücksichtigt.

Viele Grüße aus Bergisch Gladbach
Michael Koch
bizz consult GmbH
 
Ja, genau, die historische Lagerbewertungsliste wird verwendet. Wie berechnet Sage eigentlich den Wert? Ist der Inventurendbestand des letzten Jahres der Anfangsbestand und dann werden Zu- und Abgänge jedesmal neu gegenberechnet oder gibt es einen Zwischenbestand der als Basis dient? Nebenbei wird der MEK ja auch noch berechnet.
 
Hallo!
Kommst du mit der Liste
- Lagerbewertungsliste wo du auch auswählen kannst ob mit letzen EK, mittleren EK oder kalkulatorischen EK die Liste ziehen kannst,
oder der
- Lagerbestandsliste
oder der
- historischen Lagerbewertungsliste
nicht klar ?
Denke dafür musst du nicht über den SQL gehen.
 
Es geht darum in unserem BI-Tool (Qliksense) die Lagerbestände tagesgenau abrufen zu können. die Lagerbewertungsliste historisch gibt unterschiediche Ergebnisse für den gleichen Tag aus, es wurde auch gesagt, die verhaspelt sich manchmal. in welcher Tabelle in sage wird der Lagebestand so abgelegt, dass er auch für die Vergangenheit abgerufen werden kann? die KHKLagerbestandHistorie ist bei uns leer, was ich nicht verstehe, gibt es da eine Einstellung dafür? Mit der Tabelle wäre es einfacher zu realisieren. Mir wurde auch gesagt, dass Sage den Bestand ab Anfangsbestand führt, dieser entsteht durch eine Lagerbuchung (entweder Inventur, manuelle Zubuchung oder Buchung über einen lieferfähigen Beleg) - fängt Sage ab der nächsten Inventur wieder an zu rechnen oder wird da bis zur Erstanlage zurückgegangen?
 
Hallo,

vielleicht hilft Ihnen ja diese Tabellenwertfunktion weiter, die wir für einen Kunden geschrieben haben, weil die historische Lagerbewertung mit der sage 100 mehrere Stunden dauerte. Sie ermittelt den Bestand zum Stichtag samt MEK und benötigt dafür nur ein paar Sekunden maximal.

Sie können sie einfach per.

Select * from [dbo].[tvf_planB_LagerbestandHistorisch]('20201231') zum Beispiel aufrufen und erhalten den Bestand Ende 2020.
 
/****** Object: UserDefinedFunction [dbo].[tvf_planB_LagerbestandHistorisch] Script Date: 09.08.2021 11:01:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[tvf_planB_LagerbestandHistorisch]
(@Bestandsdatum Datetime
)
RETURNS TABLE
AS
--DECLARE @Bestandsdatum Datetime
--SET @Bestandsdatum = '20210806';
RETURN (
With Lagerplatzbuchungen AS (
Select
Mandant,Artikelnummer, HerkunftsLPKennung AS Lagerplatz, Bestandswirkung * MengeLager AS Menge, Bewegungsdatum
FROM [dbo].[KHKLagerplatzbuchungen]
WHERE HerkunftsLPKennung<>0 AND ZielLPKennung=0 AND Intern=0
UNION ALL
Select
Mandant,Artikelnummer, ZielLPKennung AS Lagerplatz, Bestandswirkung * MengeLager AS Menge ,Bewegungsdatum
FROM [dbo].[KHKLagerplatzbuchungen]
WHERE ZielLPKennung<>0 AND HerkunftsLPKennung=0 AND Intern=0
UNION ALL

Select
Mandant,Artikelnummer, HerkunftsLPKennung AS Lagerplatz, -1 * MengeLager AS Menge, Bewegungsdatum
FROM [dbo].[KHKLagerplatzbuchungen]
WHERE HerkunftsLPKennung<>0 AND ZielLPKennung<>0 AND Intern=0
UNION ALL
Select
Mandant,Artikelnummer, ZielLPKennung AS Lagerplatz, +1 * MengeLager AS Menge ,Bewegungsdatum
FROM [dbo].[KHKLagerplatzbuchungen]
WHERE HerkunftsLPKennung<>0 AND ZielLPKennung<>0 AND Intern=0
),
MEKHistorie as (
Select
Mandant,
Artikelnummer,
Max(Datum) AS Datum
FROM KHKArtikelbewertungMEKHistorie
WHERE Datum<=@Bestandsdatum
GROUP BY Mandant, Artikelnummer
),
MEKHistorisch as (
Select MH.[Mandant],MH.[Artikelnummer],MH.MittlererEK
FROM [dbo].[KHKArtikelbewertungMEKHistorie] MH
INNER JOIN MEKHistorie ON MEKHistorie.Mandant=MH.Mandant AND MEKHistorie.Artikelnummer=MH.Artikelnummer AND MEKHistorie.Datum=MH.Datum

),
Bestandhistorisch AS (
Select
LPB.Mandant,
LPB.Artikelnummer,
LPB.Lagerplatz,
Sum(LPB.Menge) AS Bestand
FROM LagerPlatzBuchungen LPB
WHERE LPB.Bewegungsdatum<=@Bestandsdatum
GROUP BY
LPB.Mandant,
LPB.Artikelnummer,
LPB.Lagerplatz
HAVING Sum(LPB.Menge)>0
),

MEK as (
Select
AV.Mandant,
AV.Artikelnummer,
Case
WHEN Isnull(MEKHistorisch.MittlererEK,0)=0 THEN AV.MittlererEK
ELSE MEKHistorisch.MittlererEK
END AS MittlererEK,
Case
WHEN Isnull(MEKHistorisch.MittlererEK,0)=0 THEN 'Artikelstamm'
ELSE 'Historie'
END AS MEKQuelle
FROM KHKArtikelVarianten AV
Left JOIN MEKHistorisch
ON AV.Mandant=MEKHistorisch.Mandant AND AV.Artikelnummer=MEKHistorisch.Artikelnummer AND AV.AuspraegungID=0
)

SELECT
@Bestandsdatum AS Bestandsdatum,
BH.Mandant,
BH.Artikelnummer,
A.HArtikelnummer AS Herstellerartikel,
A.Matchcode,
LP.Platzbezeichnung,
BH.Bestand,
A.Lagermengeneinheit,
MEK.MittlererEK AS MEK,
MEK.MEKQuelle,
BH.Bestand*MEK.MittlererEK AS Lagerwert,
BS.Prozentsatz AS Bewertungssatz,
BH.Bestand*MEK.MittlererEK*(BS.Prozentsatz/100) AS Lagerwertgewichtet

FROM Bestandhistorisch BH
LEFT JOIN MEK ON MEK.Mandant=BH.Mandant AND MEK.Artikelnummer=BH.Artikelnummer
INNER JOIN KHKArtikel A ON BH.Mandant=A.Mandant AND BH.Artikelnummer=A.Artikelnummer
INNER JOIN KHKArtikelVarianten AV ON AV.Mandant=A.Mandant AND AV.Artikelnummer=A.Artikelnummer AND AV.AuspraegungID=0
INNER JOIN KHKLagerplaetze LP ON LP.Mandant=BH.Mandant AND LP.PlatzID=BH.Lagerplatz
LEFT JOIN KHKBewertungssaetze BS ON A.Mandant = BS.Mandant AND A.Bewertungssatz = BS.Kennung
)

GO
 
Sage führt keine historischen Lagertabellen, daher muss man das selber berechnen. Eine Umstellung auf Letzter EK wäre zum Beispiel auch recht einfach zu realiseren, in dem man die KHKStatEK zum Ermitteln heranzieht.
 
In der Tabelle KHKLagerbestandHistorie werden historische Bestände geführt. Dies geschieht je nach Mandanteneinstellung entweder sofort bei jeder Lagerbuchung oder in einem Lauf vor der historischen Lagerbewertung. Bei sofortiger Aktualisierung der Bestandshistorie weist Sage darauf hin, dass sich das unter Umständen auf die Performance auswirken kann.
Siehe folgender Screenshot:
Analge1.png

Siehe auch Abschnitt "Aktualisierung historischer Lagerbestände": http://onlinehilfe.sage.de/onlinehi...nt.htm#idh_frmabfsetupmandant_lagerwirtschaft
 
Zuletzt bearbeitet:
Moin,
ich nehme alles zurück und behaupte das Gegenteil. Ehrlich gesagt, wusste ich gar nicht um diesen Schalter. :)
Vielen Dank für die Aufklärung
 
Zurück
Oben