Tabla OITW en SAP Business One (Stock de artículos por almacén)
OITW es la tabla de SAP Business One que guarda el stock de cada artículo en cada almacén: en existencia, comprometido en pedidos de cliente y pedido a proveedores. Su clave es ItemCode más WhsCode, y se une con OITM por ItemCode y con OWHS por WhsCode.
Campos clave de OITW
| Campo | Qué contiene |
|---|---|
ItemCode | Artículo. Se une con OITM.ItemCode. |
WhsCode | Almacén. Se une con OWHS.WhsCode. |
OnHand | Stock físico en este almacén. |
IsCommited | Cantidad comprometida en pedidos de cliente abiertos en este almacén. |
OnOrder | Cantidad en pedidos de compra abiertos para este almacén. |
MinStock | Nivel mínimo de stock de este artículo en este almacén. |
AvgPrice | Costo del artículo en este almacén cuando los costos se gestionan por almacén. |
Locked | Y si el artículo está bloqueado en este almacén. |
Cómo se relaciona OITW con otras tablas
OITW es hija de OITM: un artículo tiene una fila en OITW por cada almacén al que está vinculado, aunque el stock sea cero. No es una tabla de líneas de documento, así que no hay DocEntry; el par ItemCode + WhsCode identifica una fila. Las ubicaciones, cuando están activas, añaden otro nivel en OIBQ y OBIN.El almacén en sí (nombre, indicador de almacén neteable, ubicaciones) está en latabla OWHS.
Joins habituales
OITW T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode (nombre del artículo, grupo)OITW T0 INNER JOIN OWHS T2 ON T0.WhsCode = T2.WhsCode (nombre del almacén)
Cuándo se usa la tabla OITW
Lea OITW siempre que la pregunta sea "cuánto hay de este artículo en ese almacén": disponibilidad para ventas, listas de stock por sucursal, reposición por almacén y valoración del stock por almacén. El stock disponible suele ser OnHand - IsCommited + OnOrder, u OnHand - IsCommited si no cuenta los pedidos de compra abiertos.
Consulta de ejemplo: stock disponible por artículo y almacén
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 (nombres de columna entre comillas dobles)
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"
Pegue cualquiera de las dos versiones en Herramientas → Consultas → Generador de consultas. ¿Necesita el otro dialecto para su propia consulta? Use el conversor de SQL a HANA.
Stock total entre almacenes (solo neteables)
Para obtener una sola cifra de stock por artículo sobre varios almacenes, sume las filas de OITW por artículo. Una OWHS por WhsCode y conserve solo los almacenes neteables (OWHS.Nettable = 'Y', los almacenes que cuenta el MRP), así los almacenes de devoluciones o de calidad marcados como no neteables quedan fuera. El stock en almacén menos lo comprometido es lo que todavía puede prometer; sume OnOrder para la cifra disponible que cuenta los pedidos de compra abiertos.
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"
Error frecuente: IsCommited, con una sola t, y filas con stock cero
La columna de comprometido se escribe IsCommited, así que IsCommitted da un error de "invalid column" (columna no válida). OITW además guarda una fila por cada almacén vinculado aunque el stock sea cero, así que filtre OnHand <> 0 (o OnHand, IsCommited y OnOrder) para mantener la lista corta. Vea Consulta de stock por almacén con variantes.
Consultas listas que usan OITW
- Stock por almacén: Cantidad en stock, comprometida, pedida y disponible por artículo y almacén.
- Valor del inventario por almacén: Cantidad en stock multiplicada por el costo promedio del artículo, totalizada por almacén.
Preguntas sobre la tabla OITW
¿Por qué el total de OITW es distinto del OnHand del artículo en OITM?
OITM.OnHand es el stock del artículo en todos sus almacenes, mientras que OITW guarda una fila por almacén. La suma de OITW.OnHand sobre todas las filas del artículo da la misma cifra, así que una diferencia casi siempre viene de la consulta: un filtro de almacenes (solo neteables, solo activos, una sucursal) o una unión que descarta filas, por ejemplo un INNER JOIN con OWHS con una condición adicional. Compare primero las dos cifras sin ningún filtro de almacén y luego vuelva a añadir los filtros uno por uno.
Tablas relacionadas
OITM (Artículos (maestro de artículos)) · OWHS (Almacenes) · OINM (Diario de almacén (auditoría de inventario)) · ORDR (Pedido de cliente (cabecera)) · INV1 (Factura de clientes (líneas)) · buscar todas las tablas de SAP Business One
¿Listo para empezar?
Cuéntenos lo que necesita. Recibirá una respuesta técnica clara, un alcance definido y un precio fijo, normalmente en 24 horas.
