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

CampoQué contiene
ItemCodeArtículo. Se une con OITM.ItemCode.
WhsCodeAlmacén. Se une con OWHS.WhsCode.
OnHandStock físico en este almacén.
IsCommitedCantidad comprometida en pedidos de cliente abiertos en este almacén.
OnOrderCantidad en pedidos de compra abiertos para este almacén.
MinStockNivel mínimo de stock de este artículo en este almacén.
AvgPriceCosto del artículo en este almacén cuando los costos se gestionan por almacén.
LockedY 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

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

Fuentes: Documentación y SDK de SAP Business One (referencia de tablas de base de datos de DI API), SAP Help Portal.

¿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.