Stock por almacén
Cantidad en stock, comprometida, pedida y disponible por artículo y almacén.
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
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"
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.
| ItemCode | ItemName | WhsCode | OnHand | IsCommited | OnOrder | Available |
|---|---|---|---|---|---|---|
| A00001 | Laser Printer 1420 | 01 | 120 | 30 | 50 | 140 |
| A00001 | Laser Printer 1420 | 02 | 40 | 0 | 0 | 40 |
| A00002 | Inkjet Printer 600 | 01 | 15 | 20 | 10 | 5 |
| A00003 | Toner Cartridge Color | 01 | 0 | 8 | 25 | 17 |
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.
Consultas relacionadas
Referencia de tablas: Tabla OITW (Stock de artículos por almacén) · Tabla OITM (Artículos (maestro de artículos))
Tres pasos, sin registro
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.
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.
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 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.
Hechas para equipos de SAP Business One
¿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.
