Tabelle OITW in SAP Business One (Artikelbestand pro Lager)
OITW ist die Tabelle in SAP Business One, die den Bestand jedes Artikels in jedem Lager enthält: Lagerbestand, in Kundenaufträgen reservierte Menge und bei Lieferanten bestellte Menge. Ihr Schlüssel ist ItemCode plus WhsCode; sie wird über ItemCode mit OITM und über WhsCode mit OWHS verknüpft.
Wichtige Felder der Tabelle OITW
| Feld | Inhalt |
|---|---|
ItemCode | Artikel. Verknüpft mit OITM.ItemCode. |
WhsCode | Lager. Verknüpft mit OWHS.WhsCode. |
OnHand | Physischer Bestand in diesem Lager. |
IsCommited | In offenen Kundenaufträgen reservierte Menge in diesem Lager. |
OnOrder | Menge in offenen Bestellungen für dieses Lager. |
MinStock | Mindestbestand dieses Artikels in diesem Lager. |
AvgPrice | Artikelkosten in diesem Lager, wenn die Kosten pro Lager geführt werden. |
Locked | Y, wenn der Artikel in diesem Lager gesperrt ist. |
Wie OITW mit anderen Tabellen zusammenhängt
OITW ist eine Untertabelle von OITM: Ein Artikel hat für jedes zugeordnete Lager eine OITW-Zeile, auch wenn der Bestand null ist. Es handelt sich nicht um eine Positionstabelle eines Belegs, daher gibt es keinen DocEntry; das Paar ItemCode + WhsCode identifiziert eine Zeile. Sind Lagerplätze aktiv, kommt in OIBQ und OBIN eine weitere Ebene hinzu.Das Lager selbst (Bezeichnung, Nettingkennzeichen, Lagerplätze) steht in derTabelle OWHS.
Typische Joins
OITW T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode (Artikelbezeichnung, Gruppe)OITW T0 INNER JOIN OWHS T2 ON T0.WhsCode = T2.WhsCode (Lagerbezeichnung)
Wann Sie die Tabelle OITW verwenden
Lesen Sie OITW immer dann, wenn die Frage lautet: „Wie viel von diesem Artikel liegt in jenem Lager?“ Also für die Verfügbarkeit im Vertrieb, Bestandslisten pro Niederlassung, Nachbestellung pro Lager und die Bestandsbewertung pro Lager. Der verfügbare Bestand ist meist OnHand - IsCommited + OnOrder, oder OnHand - IsCommited, wenn Sie offene Bestellungen nicht mitzählen.
Beispielabfrage: Verfügbarer Bestand pro Artikel und Lager
SQL Server
SELECT T0.ItemCode, T1.ItemName, T0.WhsCode, T2.WhsName, T0.OnHand, T0.IsCommited, T0.OnOrder, T0.OnHand - T0.IsCommited + T0.OnOrder AS Available FROM OITW T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OWHS T2 ON T0.WhsCode = T2.WhsCode WHERE T0.OnHand <> 0 OR T0.IsCommited <> 0 ORDER BY T0.ItemCode, T0.WhsCode
SAP HANA (Spaltennamen in doppelten Anführungszeichen)
SELECT T0."ItemCode", T1."ItemName", T0."WhsCode", T2."WhsName", T0."OnHand", T0."IsCommited", T0."OnOrder", T0."OnHand" - T0."IsCommited" + T0."OnOrder" AS "Available" FROM OITW T0 INNER JOIN OITM T1 ON T0."ItemCode" = T1."ItemCode" INNER JOIN OWHS T2 ON T0."WhsCode" = T2."WhsCode" WHERE T0."OnHand" <> 0 OR T0."IsCommited" <> 0 ORDER BY T0."ItemCode", T0."WhsCode"
Fügen Sie eine der beiden Versionen unter Extras → Abfragen → Abfragegenerator ein. Sie brauchen den anderen Dialekt für Ihre eigene Abfrage? Nutzen Sie den SQL-zu-HANA-Konverter.
Gesamtbestand über mehrere Lager (nur disponierbare)
Für eine einzige Bestandszahl pro Artikel über mehrere Lager summieren Sie die OITW-Zeilen pro Artikel. Verknüpfen Sie OWHS über WhsCode und behalten Sie nur disponierbare Lager (OWHS.Nettable = 'Y', also die Lager, die die Bedarfsplanung berücksichtigt). So bleiben Retouren- oder Qualitätslager, die als nicht disponierbar markiert sind, außen vor. Lagerbestand minus reservierte Menge ist das, was Sie noch zusagen können; addieren Sie OnOrder für den verfügbaren Bestand inklusive offener Bestellungen.
SQL Server
SELECT T0.ItemCode, T1.ItemName, SUM(T0.OnHand) AS InStock, SUM(T0.IsCommited) AS Committed, SUM(T0.OnHand - T0.IsCommited) AS FreeStock, SUM(T0.OnHand - T0.IsCommited + T0.OnOrder) AS Available FROM OITW T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OWHS T2 ON T0.WhsCode = T2.WhsCode WHERE T2.Nettable = 'Y' GROUP BY T0.ItemCode, T1.ItemName ORDER BY T0.ItemCode
SAP HANA
SELECT T0."ItemCode", T1."ItemName", SUM(T0."OnHand") AS "InStock", SUM(T0."IsCommited") AS "Committed", SUM(T0."OnHand" - T0."IsCommited") AS "FreeStock", SUM(T0."OnHand" - T0."IsCommited" + T0."OnOrder") AS "Available" FROM OITW T0 INNER JOIN OITM T1 ON T0."ItemCode" = T1."ItemCode" INNER JOIN OWHS T2 ON T0."WhsCode" = T2."WhsCode" WHERE T2."Nettable" = 'Y' GROUP BY T0."ItemCode", T1."ItemName" ORDER BY T0."ItemCode"
Typischer Fallstrick: IsCommited mit einem t und Zeilen ohne Bestand
Die Spalte für die reservierte Menge heißt IsCommited, IsCommitted führt daher zum Fehler „invalid column“. Außerdem führt OITW für jedes zugeordnete Lager eine Zeile, auch ohne Bestand. Filtern Sie deshalb auf OnHand <> 0 (oder auf OnHand, IsCommited und OnOrder), damit die Liste kurz bleibt. Siehe Abfrage: Bestand pro Lager mit Varianten.
Fertige Abfragen, die OITW verwenden
- Bestand pro Lager: Lagerbestand, bestätigte, bestellte und verfügbare Menge pro Artikel und Lager.
- Lagerwert pro Lager: Bestandsmenge multipliziert mit dem Durchschnittspreis des Artikels, summiert pro Lager.
Fragen zur Tabelle OITW
Warum weicht die Summe aus OITW vom OnHand des Artikels in OITM ab?
OITM.OnHand ist der Bestand des Artikels über alle seine Lager, OITW enthält dagegen eine Zeile pro Lager. Die Summe von OITW.OnHand über alle Zeilen des Artikels ergibt denselben Wert. Eine Abweichung entsteht daher fast immer in der Abfrage: durch einen Filter auf Lager (nur disponierbare, nur aktive, nur eine Niederlassung) oder durch einen Join, der Zeilen verliert, zum Beispiel ein INNER JOIN auf OWHS mit einer zusätzlichen Bedingung. Vergleichen Sie beide Werte zuerst ganz ohne Lagerfilter und fügen Sie die Filter dann einzeln wieder hinzu.
Verwandte Tabellen
OITM (Artikel (Artikelstamm)) · OWHS (Lager) · OINM (Lagerjournal (Bestandsprüfung)) · ORDR (Kundenauftrag (Kopf)) · INV1 (Ausgangsrechnung (Positionen)) · alle SAP-Business-One-Tabellen durchsuchen
Quellen: Dokumentation und SDK zu SAP Business One (Referenz der DI-API-Datenbanktabellen), SAP Help Portal.
Bereit für den Start?
Sagen Sie uns, was Sie brauchen. Sie erhalten eine klare technische Antwort, einen festen Leistungsumfang und einen Preis, in der Regel innerhalb von 24 Stunden.
