Stock por almacén

Cantidad en stock, comprometida, pedida y disponible por artículo y almacén.

Tablas: OITW, OITMUso: Revisiones diarias de stock y disponibilidad para ventas.

Herramienta

SELECT T0.ItemCode, T1.ItemName, T0.WhsCode, 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
WHERE T0.OnHand <> 0 OR T0.IsCommited <> 0 OR T0.OnOrder <> 0
ORDER BY T0.ItemCode, T0.WhsCode
¿Necesita sus UDF en este reporte, o un dashboard? Lo adaptamos para su empresa.Personalizarla →

Qué responde esta consulta

Un vendedor está al teléfono con un cliente y necesita saber si puede comprometer un artículo y desde qué almacén. Esta consulta muestra lo que hay físicamente, lo que ya está comprometido con otros pedidos y lo que viene en camino.

Ejemplo de resultado

Valores de demostración ilustrativos. Sus columnas son las mismas; los números vienen de su empresa.

ItemCodeItemNameWhsCodeOnHandIsCommitedOnOrderAvailable
A00001Laser Printer 1420011203050140
A00001Laser Printer 142002400040
A00002Inkjet Printer 600011520105
A00003Toner Cartridge Color01082517

SQL Server vs SAP HANA

El SQL no cambia salvo por las comillas; la columna de SAP mal escrita debe ir como "IsCommited" (con una sola t) entre comillas dobles. Las condiciones OR y el cálculo de Available funcionan igual en HANA.

Variaciones

Solo almacenes netos (nettable)

SQL Server

SELECT T0.ItemCode, T0.WhsCode, T0.OnHand, T0.IsCommited, T0.OnOrder,
  T0.OnHand - T0.IsCommited + T0.OnOrder AS Available
FROM OITW T0
INNER JOIN OWHS T2 ON T0.WhsCode = T2.WhsCode
WHERE T2.Nettable = 'Y'
  AND (T0.OnHand <> 0 OR T0.IsCommited <> 0 OR T0.OnOrder <> 0)
ORDER BY T0.ItemCode, T0.WhsCode

SAP HANA

SELECT T0."ItemCode", T0."WhsCode", T0."OnHand", T0."IsCommited", T0."OnOrder",
  T0."OnHand" - T0."IsCommited" + T0."OnOrder" AS "Available"
FROM OITW T0
INNER JOIN OWHS T2 ON T0."WhsCode" = T2."WhsCode"
WHERE T2."Nettable" = 'Y'
  AND (T0."OnHand" <> 0 OR T0."IsCommited" <> 0 OR T0."OnOrder" <> 0)
ORDER BY T0."ItemCode", T0."WhsCode"

Total por artículo en todos los almacenes

SQL Server

SELECT T0.ItemCode, T1.ItemName, SUM(T0.OnHand) AS OnHand,
  SUM(T0.IsCommited) AS IsCommited, SUM(T0.OnOrder) AS OnOrder,
  SUM(T0.OnHand - T0.IsCommited + T0.OnOrder) AS Available
FROM OITW T0
INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
GROUP BY T0.ItemCode, T1.ItemName
ORDER BY T0.ItemCode

SAP HANA

SELECT T0."ItemCode", T1."ItemName", SUM(T0."OnHand") AS "OnHand",
  SUM(T0."IsCommited") AS "IsCommited", SUM(T0."OnOrder") AS "OnOrder",
  SUM(T0."OnHand" - T0."IsCommited" + T0."OnOrder") AS "Available"
FROM OITW T0
INNER JOIN OITM T1 ON T0."ItemCode" = T1."ItemCode"
GROUP BY T0."ItemCode", T1."ItemName"
ORDER BY T0."ItemCode"

Ocultar filas con stock cero

SQL Server

SELECT T0.ItemCode, T1.ItemName, T0.WhsCode, T0.OnHand
FROM OITW T0
INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
WHERE T0.OnHand > 0
ORDER BY T0.ItemCode, T0.WhsCode

SAP HANA

SELECT T0."ItemCode", T1."ItemName", T0."WhsCode", T0."OnHand"
FROM OITW T0
INNER JOIN OITM T1 ON T0."ItemCode" = T1."ItemCode"
WHERE T0."OnHand" > 0
ORDER BY T0."ItemCode", T0."WhsCode"

Stock por ubicación (ubicaciones de almacén activas)

SQL Server

SELECT T0.ItemCode, T1.WhsCode, T1.BinCode, T0.OnHandQty
FROM OIBQ T0
INNER JOIN OBIN T1 ON T0.BinAbs = T1.AbsEntry
WHERE T0.OnHandQty <> 0
ORDER BY T0.ItemCode, T1.BinCode

SAP HANA

SELECT T0."ItemCode", T1."WhsCode", T1."BinCode", T0."OnHandQty"
FROM OIBQ T0
INNER JOIN OBIN T1 ON T0."BinAbs" = T1."AbsEntry"
WHERE T0."OnHandQty" <> 0
ORDER BY T0."ItemCode", T1."BinCode"

Errores comunes y soluciones

  • El stock parece mayor de lo que el almacén puede vender: Se incluyen almacenes no netos (por ejemplo mercadería dañada o en consignación). Haga un join con OWHS y filtre Nettable = 'Y'.
  • Los totales no coinciden con OITM.OnHand por almacén: OITM.OnHand es el total de todos los almacenes. La cantidad por almacén solo está en OITW.
  • Invalid column name 'IsCommitted': SAP B1 escribe la columna de cantidad comprometida como IsCommited, con una sola t. Use T0.IsCommited.
  • Available parece demasiado alto para pedidos urgentes: Available suma OnOrder, que incluye pedidos de compra que pueden llegar semanas después. Use OnHand - IsCommited para lo que puede despacharse hoy.
  • Los artículos de servicio no aparecen en la lista: Solo los artículos de inventario tienen filas en OITW. Los artículos no inventariables y de servicio nunca aparecen, lo cual es lo esperado.
Inventario

Consultas relacionadas

Referencia de tablas: Tabla OITW (Stock de artículos por almacén) · Tabla OITM (Artículos (maestro de artículos))

Cómo funciona

Tres pasos, sin registro

1

Copie la versión correcta

Use la pestaña SQL Server para bases de datos MS SQL y la pestaña HANA para SAP B1 sobre HANA.

2

Abra el generador de consultas

En SAP Business One vaya a Herramientas → Consultas → Generador de consultas (Tools → Queries → Query Generator), pegue la consulta y haga clic en Ejecutar.

3

Guarde y comparta

Haga clic en Grabar, elija una categoría y asigne un nombre a la consulta. Su equipo podrá ejecutarla desde el gestor de consultas (Query Manager).

Preguntas

Preguntas sobre esta herramienta

¿Cómo ejecuto la consulta «Stock por almacén» en SAP Business One?

Copie la versión que corresponde a su base de datos, abra Herramientas → Consultas → Generador de consultas, péguela en el cuadro SQL y haga clic en Ejecutar. Grábela para reutilizarla después.

¿Qué tablas usa esta consulta?

Lee OITW, OITM del esquema estándar de SAP Business One. No necesita campos definidos por el usuario.

¿Se puede convertir en un dashboard o una alerta?

Sí. Convertimos consultas en reportes de Crystal Reports, reportes de Excel que se actualizan solos, alertas de SAP B1 o mensajes de WhatsApp para gerentes.

¿Lo necesita dentro de SAP Business One?

Desarrollamos add-ons, reportes e integraciones para SAP B1 en SQL Server y HANA. Cuéntenos qué necesita y reciba un precio fijo, normalmente en 24 horas.