Importante : La siguiente respuesta es generada por nuestro Robot de la comunidad de Consultoria-SAP.com denominado “CSAPBOT” usando tecnología de inteligencia artificial. Por lo tanto, puede haber datos incorrectos. No garantizamos que la información sea 100% correcta, solo consultores SAP profesionales podrían verificar la información. Muchos consultores leen nuestros foros de Ayuda SAP y lamentablemente pocos ayudan respondiendo y confirmando la información.
Si deseas aportar tus ideas para mejorar nuestros sistemas, te esperamos en este debate de la comunidad.
SAP Business One – Error al ejecutar query en Dashboard Designer (SAP B1 HANA)
Hola, muy buena tu explicación y gracias por compartir el query completo. Esto nos ayuda a identificar con precisión la causa.
Lo que te ocurre es muy común cuando se trabaja con Dashboard Designer en SAP B1 HANA: el query funciona bien en el SQL Console (porque HANA acepta muchas cosas allí), pero al pasar ese query a un dashboard o vista de cockpit, se genera un error como:
“Se produjo un error durante la ejecución de la fuente de datos”
Posibles causas del error (y cómo solucionarlas)
1. Uso de subconsultas (UNION ALL) dentro de un LEFT JOIN
El Dashboard Designer (a través de SAP HANA Semantic Layer) no permite subconsultas complejas como JOINs con UNIONs.
Específicamente, esta parte:
LEFT JOIN (
SELECT "ItemCode" FROM INV1 ...
UNION ALL
...
) AS Movimientos
ON ITM."ItemCode" = Movimientos."ItemCode"
Esto es lo que causa el error, porque Dashboard Designer no interpreta bien los alias ni las uniones múltiples dentro del JOIN.
Solución: Mover esa subconsulta a una tabla temporal o convertirla en un CTE
(Common Table Expression) si tu versión lo permite, o evitar usar JOINs con UNION en dashboards.
2. Uso de funciones como ADD_MONTHS()
Algunas funciones como ADD_MONTHS()
o CURRENT_DATE
pueden fallar dentro de vistas o dashboards, especialmente si:
- La versión de HANA es inferior a SPS05.
- El Dashboard Designer no interpreta correctamente funciones de fecha dinámicas.
Solución alternativa:
-- Sustituye ADD_MONTHS por literal o parámetro fijo de fecha
AND I."DocDate" >= '2023-10-01'
En dashboards, es mejor trabajar con fechas estáticas o pasar fechas como parámetros.
3. Campos calculados en SELECT sin alias directo
SAP B1 requiere que todos los campos calculados tengan un alias sin ambigüedad.
Tienes líneas como:
SUM(COALESCE(ONH."OnHand", 0)) * AVG(COALESCE(ONH."AvgPrice", 0)) AS "Costo Total"
Esto puede generar conflicto si se interpreta como cálculo cruzado no válido.
Solución:
- Declara ese campo en un
SELECT
externo si es posible.
- O calcula el valor fuera del SELECT principal.
Reescritura sugerida del query para Dashboard Designer
Puedes intentar dividir el query en dos partes:
- Crear una vista HANA (si tienes permisos).
- O simplificar el query solo con datos disponibles en una sola tabla o vista.
O bien, cambiar la lógica así:
SELECT
ITM."ItemCode" AS "Código Artículo",
ITM."ItemName" AS "Nombre Artículo",
WH."WhsName" AS "Nombre Almacén",
SUM(COALESCE(ONH."OnHand", 0)) AS "Stock Actual",
AVG(COALESCE(ONH."AvgPrice", 0)) AS "Costo Promedio",
SUM(COALESCE(ONH."OnHand", 0)) * AVG(COALESCE(ONH."AvgPrice", 0)) AS "Costo Total"
FROM
OITM ITM
LEFT JOIN OITW ONH ON ITM."ItemCode" = ONH."ItemCode" AND ONH."WhsCode" = '01'
LEFT JOIN OWHS WH ON ONH."WhsCode" = WH."WhsCode"
WHERE
COALESCE(ONH."OnHand", 0) > 0
AND NOT EXISTS (
SELECT 1 FROM INV1 I1
INNER JOIN OINV I ON I."DocEntry" = I1."DocEntry"
WHERE I1."ItemCode" = ITM."ItemCode"
AND I."CANCELED" = 'N'
AND I."DocDate" >= '2023-10-01'
)
GROUP BY
ITM."ItemCode", ITM."ItemName", WH."WhsName"
ORDER BY
"Stock Actual" DESC, "Costo Total" DESC;
Esto evita el UNION
, y usa NOT EXISTS
que es más compatible con SAP HANA en vistas/dashboard.
Consejos prácticos al usar Dashboard Designer con HANA
Evita subconsultas con UNION ALL
o JOINs
sobre subselects.
Usa solo campos directos o funciones simples.
Si necesitas lógicas complejas, crea una vista en HANA y consume la vista desde el dashboard.
Usa fechas fijas en lugar de funciones dinámicas como CURRENT_DATE
o ADD_MONTHS
.
Resumen Consultoria-SAP
El error en Dashboard Designer de SAP Business One HANA se debe a:
Subconsultas con UNION ALL
dentro de JOIN
Funciones dinámicas no compatibles (ADD_MONTHS
)
Cálculos cruzados complejos en el SELECT
La solución es simplificar el query para que se ejecute correctamente o crear una vista HANA Z para manejar la lógica más avanzada.
En Consultoria-SAP.com, muchos consultores recomiendan trabajar con vistas HANA predefinidas para dashboards, ya que ofrecen mejor rendimiento y menos errores de compatibilidad.
¿Quieres que te ayude a crear una vista con tu lógica para usarla directamente en el dashboard? Te puedo pasar la estructura sugerida.
¡Estamos aquí para ayudarte! 