HomeBlog HomeGlosario SAP Business OneConsultas SQL SAP Business One
Consultas SQL SAP Business One

Las consultas SQL en SAP Business One son sentencias de lectura que extraen datos directamente de las tablas del ERP —sobre SQL Server o SAP HANA— para obtener información que los reportes estándar no dan. Con SELECT, FROM y WHERE sobre tablas como OINV u OCRD respondes cualquier pregunta de negocio.
Esta guía de consultas SQL SAP Business One te lleva de los fundamentos a ejemplos reales de ventas, compras e inventario, más las herramientas nativas para crearlas y gobernarlas.
Índice de la guía
- Qué son las consultas SQL en SAP Business One
- Arquitectura de la base de datos: tablas y objetos clave
- «Información del sistema»: descubrir tablas y campos
- Herramientas de consulta dentro de SAP Business One
- Video: Query Manager en acción
- Sintaxis básica de consultas SQL
- JOINs y relaciones entre tablas
- Catálogo de consultas típicas: ventas, compras e inventario
- Variables, parámetros y filtros dinámicos
- Optimización y buenas prácticas
- Seguridad, autorizaciones y gobierno
- Integración con Crystal Reports, Excel y tableros
- Cuándo pedir ayuda especializada
Qué son las consultas SQL en SAP Business One y para qué sirven
Una consulta SQL es una sentencia del Lenguaje de Consulta Estructurada que accede a los datos de tu base de datos. En SAP Business One se ejecutan sobre el motor que uses —Microsoft SQL Server o SAP HANA— y te dan una flexibilidad muy superior a los reportes predefinidos: filtras en tiempo real las tablas clave como OCRD (socios de negocio), OITM (artículos) y OINV (facturas de venta).
Toda consulta combina tres elementos: SELECT (qué campos mostrar), FROM (de qué tabla) y WHERE (qué condiciones aplicar). Por ejemplo, para listar las facturas de un mes por cliente con total e impuesto:
SELECT T0.CardCode, T1.CardName, T0.DocNum,
T0.DocDate, T0.DocTotal, T0.VatSum
FROM OINV T0
INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode
WHERE T0.DocDate BETWEEN '2026-06-01' AND '2026-06-30'
ORDER BY T0.DocDate;Esta consulta se ejecuta desde Herramientas → Consultas → Generador de consultas. Un punto crítico de seguridad: las consultas SQL en SAP Business One deben ser solo de lectura. Nunca ejecutes UPDATE ni DELETE sobre las tablas estándar: comprometes la integridad de los datos, la auditoría y el soporte. Si tu proceso necesita escribir datos, hazlo con la API oficial, no directo a la base de datos —lo explicamos en la guía del Service Layer de SAP Business One.
Recetario de 20 consultas SQL para SAP Business One
Descarga gratis un archivo de texto con 20 consultas comentadas y listas para copiar y pegar en el Generador de consultas: ventas por cliente, stock por almacén, facturas abiertas, antigüedad de saldos, compras pendientes y más. Sin formularios.
Descargar el recetario (.txt)Arquitectura de la base de datos: tablas y objetos clave
Para escribir buenas consultas primero hay que entender cómo se organiza la base de datos. Cada objeto de negocio (una factura, un pedido, un socio) se guarda en al menos dos tablas: una de cabecera y una de líneas.
La convención de nombres es consistente: los nombres de tabla tienen 4 caracteres, las cabeceras llevan prefijo O (OINV, ORDR, ODLN) y las líneas de detalle no lo llevan, con sufijo numérico (INV1, RDR1, DLN1).
| Área | Cabecera | Líneas / apoyo | Qué guarda |
|---|---|---|---|
| Socios de negocio | OCRD | OCPR (contactos), CRD1 (direcciones), OSLP (vendedores) | Clientes y proveedores |
| Ventas | ORDR / OINV / ODLN | RDR1 / INV1 / DLN1 | Pedido, factura, entrega |
| Compras | OPOR / OPCH | POR1 / PCH1 | Pedido y factura de proveedor |
| Inventario | OITM | OITW (stock por almacén), OINM (movimientos) | Artículos y existencias |
| Contabilidad | OJDT | JDT1 | Asientos contables |
Para el mapa completo de tablas y campos, revisa nuestro diccionario de tablas de SAP Business One, con el Excel de más de 2.000 tablas. Mantén además un diccionario interno por área (ventas, compras, inventario, finanzas) para estandarizar el desarrollo de consultas en tu empresa.

«Información del sistema»: descubrir tablas y campos sin documentación
El primer paso práctico para construir una consulta es saber en qué tabla y campo se guarda cada dato que ves en pantalla. Para eso sirve la función Información del sistema:
- Actívala desde el menú Vista → Información del sistema.
- Con la vista activa, al posar el cursor sobre cualquier control, la barra de estado inferior muestra la
tabla.campocorrespondiente.
Ejemplos concretos:
- En una factura de venta, sobre el código de cliente verás
OINV.CardCode: esa es la llave para unirla con otras tablas. - Sobre el nombre del cliente verás
OCRD.CardName, vinculado porCardCode. - En un pedido, el folio es
ORDR.DocNumy la fechaORDR.DocDate.
Algunos campos calculados —como DocTotal o DocRate— no muestran un campo físico único porque se derivan de varios componentes; conviene entender su origen antes de usarlos.
Y si un dato no aparece en ninguna ventana estándar, probablemente vive en un campo de usuario (los que empiezan con U_): la misma técnica funciona, y el nombre completo de la tabla y el campo se muestran igual en la barra de estado.
La Información del sistema es la forma más rápida de mapear los campos: recorres la ventana con el cursor, anotas cada tabla y campo, y así llegas a escribir la consulta sin dudas sobre de dónde sale cada dato.
Herramientas de consulta dentro de SAP Business One
SAP Business One trae herramientas para trabajar consultas sin salir del cliente: el Generador de consultas (Query Generator), el Asistente de consultas (Query Wizard, paso a paso para quien no domina SQL) y las Consultas definidas por el usuario (Query Manager) donde se guardan y organizan.
El flujo básico:
- Entra a Herramientas → Consultas → Generador de consultas.
- Selecciona tablas, define uniones y filtros desde la interfaz gráfica.
- En la ventana de vista previa se muestra la sintaxis SQL generada (adaptada a SQL Server o HANA) y los resultados; puedes editarla con el ícono de lápiz y volver a ejecutarla.
- Guárdala con un nombre descriptivo y una categoría para reutilizarla desde Herramientas → Consultas → Consultas definidas por el usuario.
¿Prefieres construir la consulta sin escribir SQL, seleccionando tablas y campos con el mouse? Esa es la función del generador visual: la explicamos paso a paso en la guía del Generador de consultas de SAP Business One.
En la ventana del generador seleccionas los campos y las columnas con un clic, defines las uniones entre tablas y, al pulsar el botón de ejecutar, obtienes los resultados. Así los usuarios funcionales crean sus consultas sin escribir una sola línea de código, y las guardan por nombre para reutilizarlas.
Un consejo de gestión: acuerda con tu equipo una convención de nombres por área y grupo de usuarios («VEN — ventas del mes», «INV — stock por almacén»). Cuando el catálogo crece a decenas de consultas, esa disciplina es la diferencia entre encontrar la información en segundos o duplicar trabajo.
Video: Query Manager de SAP Business One — consultas y reportes personalizados.
Sintaxis básica de consultas SQL aplicadas a SAP Business One
SAP Business One usa sintaxis SQL estándar, con matices según el motor. En SQL Server las palabras clave no distinguen mayúsculas; en SAP HANA se recomiendan comillas dobles para nombres sensibles a mayúsculas, por ejemplo "OINV"."DocNum".
| Cláusula | Función | Ejemplo |
|---|---|---|
SELECT | Columnas a mostrar | OINV.DocNum, OCRD.CardName, OINV.DocTotal |
FROM | Tabla principal | OINV |
WHERE | Filtro de registros | OINV.DocDate >= '2026-01-01' |
GROUP BY | Agrupación | GROUP BY OINV.CardCode |
ORDER BY | Orden de resultados | ORDER BY OINV.DocDate DESC |
Sobre funciones: para fechas, SQL Server usa CONVERT/CAST y HANA usa TO_DATE/TO_VARCHAR; para texto, LEFT, SUBSTRING y UPPER ayudan a tratar códigos de artículo o grupo. Usa alias de tabla cortos y significativos (T0 para OINV, T1 para OCRD) y comentarios breves: facilitan el mantenimiento cuando otra persona edite la consulta meses después.

JOINs y relaciones entre tablas: consultas SQL útiles
La mayoría de las consultas requieren unir varias tablas, porque un documento reparte su información entre cabecera, líneas, socio y artículo. Los dos JOIN más frecuentes:
- INNER JOIN — solo los registros que existen en ambas tablas (facturas que sí tienen líneas).
- LEFT JOIN — todos los registros de la tabla principal aunque no haya coincidencia (pedidos que aún no tienen entrega).
Relaciones clave que conviene dominar:
- Pedido con sus líneas:
ORDR.DocEntry = RDR1.DocEntry. - Factura con líneas y con el cliente:
OINV.DocEntry = INV1.DocEntryyOINV.CardCode = OCRD.CardCode. - Documentos encadenados con
BaseType,BaseEntryyBaseLinepara seguir el flujo Pedido → Entrega → Factura.
Un ejemplo que une el flujo completo de un mes:
SELECT
T0.DocNum AS Pedido,
T0.DocDate AS FechaPedido,
T2.DocNum AS Entrega,
T4.DocNum AS Factura
FROM ORDR T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
LEFT JOIN DLN1 T3 ON T3.BaseType = 17 AND T3.BaseEntry = T1.DocEntry
AND T3.BaseLine = T1.LineNum
LEFT JOIN ODLN T2 ON T3.DocEntry = T2.DocEntry
LEFT JOIN INV1 T5 ON T5.BaseType = 15 AND T5.BaseEntry = T3.DocEntry
AND T5.BaseLine = T3.LineNum
LEFT JOIN OINV T4 ON T5.DocEntry = T4.DocEntry
WHERE T0.DocDate BETWEEN '2026-05-01' AND '2026-05-31'
ORDER BY T0.DocDate;(BaseType 17 = pedido de cliente; BaseType 15 = entrega. La condición por BaseLine une línea con línea: sin ella, los documentos de varias líneas multiplican filas.) Cuando se mezclan rutas distintas —por ejemplo, factura directa sin entrega previa— puedes combinar ambos flujos con UNION ALL.
Catálogo de consultas SQL típicas: ventas, compras e inventario
Estas son consultas que casi toda empresa necesita. Cada una parte de las tablas de pedidos, facturas y artículos, devuelve solo los campos que necesitas y usa filtros de fecha; ajusta las fechas y los códigos a tu operación.
Cada vez que un área te pida «un reporte nuevo», revisa primero este catálogo: la mayoría de las búsquedas de información se resuelven adaptando una consulta existente en lugar de escribirla desde cero.
Ventas por cliente y periodo
Ventas por cliente, vendedor y periodo, sumando el importe de las líneas:
SELECT T1.CardCode, T2.CardName, T3.SlpName,
SUM(T0.LineTotal) AS Total
FROM INV1 T0
INNER JOIN OINV T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OCRD T2 ON T1.CardCode = T2.CardCode
LEFT JOIN OSLP T3 ON T1.SlpCode = T3.SlpCode
WHERE T1.DocDate BETWEEN '2026-01-01' AND '2026-03-31'
AND T1.CANCELED = 'N'
GROUP BY T1.CardCode, T2.CardName, T3.SlpName
ORDER BY Total DESC;Existencias por almacén (stock disponible)
Existencias por almacén, con el stock disponible (en mano menos comprometido):
SELECT T0.ItemCode, T0.ItemName,
T1.WhsCode, T1.OnHand, T1.IsCommited,
(T1.OnHand - T1.IsCommited) AS Disponible
FROM OITM T0
INNER JOIN OITW T1 ON T0.ItemCode = T1.ItemCode
WHERE T1.OnHand > 0
ORDER BY T0.ItemCode, T1.WhsCode;Pedidos de compra abiertos por fecha prometida
Pedidos de compra abiertos por fecha prometida, para control de abastecimiento:
SELECT T1.DocNum, T1.CardCode, T2.CardName,
T0.ItemCode, T0.OpenQty, T0.ShipDate
FROM POR1 T0
INNER JOIN OPOR T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OCRD T2 ON T1.CardCode = T2.CardCode
WHERE T1.DocStatus = 'O' AND T0.LineStatus = 'O'
ORDER BY T0.ShipDate;Con este patrón puedes responder desde «¿qué clientes compraron este trimestre?» hasta «¿qué artículos llevan meses sin movimiento?» cruzando OITM con OINM.
Variables, parámetros y filtros dinámicos
Una consulta se vuelve reutilizable cuando pide los valores al ejecutarse, en lugar de tener las fechas o el cliente escritos en el código. En el Generador de consultas se usan marcadores como [%0] y [%1] dentro del WHERE:
WHERE T0.CardCode = '[%0]'
AND T0.DocDate BETWEEN '[%1]' AND '[%2]'Al ejecutar, SAP Business One abre una ventana para que el usuario capture cada valor. El Asistente de consultas permite ponerle a cada parámetro un texto descriptivo («Ingrese fecha inicial», «Ingrese fecha final») para que las búsquedas sean intuitivas. Filtros que conviene parametrizar: rango de fechas (DocDate), grupo de artículos (ItmsGrpCod) y vendedor (SlpCode).
Para valores especiales, controla la división por cero con NULLIF o CASE —por ejemplo CASE WHEN INV1.Quantity = 0 THEN 0 ELSE INV1.LineTotal / INV1.Quantity END— y valida nulos con ISNULL o COALESCE según el motor.
Optimización y buenas prácticas en consultas SQL
Un mal diseño de consultas puede afectar el rendimiento del sistema productivo, sobre todo en bases de datos grandes. Reglas que marcan diferencia:
- Evita
SELECT *; nombra solo las columnas necesarias. - Filtra siempre en
WHEREpor fecha y estado para limitar el volumen. - Usa JOINs con condiciones completas; evita productos cartesianos que multiplican filas.
- Aprovecha los índices en campos de unión y filtro (
DocEntry,DocDate,CardCode,ItemCode).
| Error | Causa | Solución |
|---|---|---|
| «Divide by zero» | Calcular ratios sin validar el denominador | Usar NULLIF o CASE |
| Timeout | No filtrar por fechas o estados | Acotar el WHERE con rangos |
| Registros duplicados | Unir mal cabecera y líneas | Incluir condición por DocEntry y BaseLine |
Prueba siempre tus consultas en una copia o entorno de prueba antes de publicarlas como reportes estándar para usuarios finales.
Seguridad, autorizaciones y gobierno de consultas
Las consultas dan acceso a información sensible —costos, márgenes, datos fiscales—, así que SAP Business One ofrece control:
- Categorías de consulta (Herramientas → Consultas → Gestionar categorías): segmentan por área (Finanzas, Ventas, Operaciones) y determinan quién accede.
- Grupos de autorización (Autorizaciones generales → Informes → Generador de consultas): por ejemplo, un usuario de ventas con solo lectura en consultas comerciales y sin acceso a reportes de costos.
Cada consulta se guarda con un nombre y una categoría, y las autorizaciones definen qué usuarios pueden verla, ejecutarla o modificarla; la publicación de una consulta a producción debería pasar por una revisión. Un buen gobierno incluye revisiones periódicas de las consultas de usuario, validación técnica y funcional antes de publicarlas a todo un departamento, y un registro de quién creó, modificó y aprobó cada consulta crítica.
Integración con Crystal Reports, Excel y tableros
Las consultas SQL son la base para reportes avanzados e integraciones:
- Crystal Reports: reutiliza la lógica de una consulta para diseñar layouts de impresión de facturas, pedidos y reportes gerenciales.
- Excel: los resultados de cualquier consulta definida por el usuario se exportan directo a Excel para tablas dinámicas y gráficos.
- Automatización: las consultas alimentan alertas y aprobaciones dentro del sistema.
Un flujo típico en una empresa de distribución: la consulta de ventas por cliente alimenta un layout de Crystal Reports para la gerencia, el mismo SQL se exporta a Excel para el análisis semanal del equipo comercial, y una variante con filtro de stock mínimo dispara la alerta de compras. Una sola lógica, tres usos.
Mantén una única «fuente de verdad»: si la lógica SQL cambia, actualízala en todos los lugares que la consuman para que los números coincidan entre áreas.
Cuándo pedir ayuda especializada con tus consultas SQL
Muchas consultas básicas las puede crear un usuario avanzado con práctica, pero algunos escenarios piden experiencia técnica y funcional profunda:
- Reportes que cruzan varios módulos (ventas, compras, producción, contabilidad) con lógica compleja.
- Ajustes de rendimiento sobre bases de datos con millones de registros.
- Validaciones en tiempo real mediante procedimientos almacenados o el Service Layer.
Como especialistas en SAP Business One, en Aventi acompañamos desde el diagnóstico hasta la capacitación de tu equipo, para que aprendan a mantener y extender sus propias consultas. Documenta la pregunta de negocio (qué decisión tomarás con el dato), no solo el código, y comparte las tablas y filtros implicados.
Preguntas frecuentes sobre consultas SQL en SAP Business One
¿Qué es SQL en SAP?
SQL (Structured Query Language) es el lenguaje con el que se consulta la base de datos de SAP. En SAP Business One, SQL permite leer los datos de las tablas del ERP (facturas, pedidos, artículos) sobre el motor SQL Server o SAP HANA para construir reportes a la medida.
¿Cómo ejecutar una consulta SQL en SAP Business One?
Entra a Herramientas → Consultas → Generador de consultas, escribe o construye la sentencia SELECT, ejecútala con la vista previa y, si te sirve, guárdala con nombre y categoría en Consultas definidas por el usuario para reutilizarla.
¿Cuáles son los 4 tipos de comandos SQL?
Se agrupan en cuatro familias: DDL (definición de estructuras), DML (manipulación de datos), DCL (control de accesos) y TCL (control de transacciones). En SAP Business One el usuario funcional solo debería usar el subconjunto de lectura del DML: la sentencia SELECT.
¿Cuál es la intercalación (collation) de SQL en SAP Business One?
La intercalación determina cómo se comparan y ordenan los textos. SAP Business One la fija al crear la base de datos de la empresa según el idioma y la localización; una de las más habituales en instalaciones sobre SQL Server es SQL_Latin1_General_CP850_CI_AS. Afecta si las comparaciones distinguen mayúsculas y acentos.
¿SAP Business One utiliza SQL?
Sí. SAP Business One se ejecuta sobre una base de datos SQL —Microsoft SQL Server o SAP HANA— y toda su información vive en tablas que se pueden consultar con SQL de lectura desde las herramientas integradas del propio sistema.
¿Cómo hacer una consulta en SAP Business One sin saber SQL?
Con el Asistente de consultas (Query Wizard) o el Generador de consultas: seleccionas tablas y campos desde una interfaz gráfica y el sistema arma la sentencia por ti. Es la vía recomendada para usuarios funcionales.
¿Qué son las consultas definidas por el usuario?
Son las consultas que guardas con nombre y categoría dentro del sistema, en Herramientas → Consultas → Consultas definidas por el usuario. Cada vez que las necesitas, se ejecutan con los datos al día, sin reescribir el código, y las autorizaciones controlan qué usuarios pueden verlas.
¿Puedo usar una consulta SQL en alertas y búsquedas formateadas?
Sí. Una consulta guardada puede alimentar alertas automáticas (por ejemplo, avisar cuando un artículo baja del stock mínimo) y búsquedas formateadas que llenan campos de un documento con información de otras tablas. Son dos de los usos más potentes del SQL dentro de SAP Business One.
¿Necesitas una consulta o un reporte a la medida?
Como especialistas en SAP Business One, revisamos tus consultas actuales, optimizamos reportes y diseñamos los indicadores que tu empresa necesita —y capacitamos a tu equipo para mantenerlos.
Solicita una asesoría gratis