Cuando creo un Dashboard designer me marca error

Buen día a todos comunidad,

tengo un problema en SAP B1 v 10.00, genere un reporte por medio de un query, el cual funciona bien y si se ejecuta correctamente en el SQL Console de SAP HANA, pero al generar el Dashboard designer me marca este error : “Se produjo una error durante la ejecución de la fuente de datos”, hay posibilidades de que me puedan ayudar a ver que se puede corregir??? este es el query:

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' -- Filtra pOR almacén 01
LEFT
JOIN 
 OWHS WH
    ON ONH."WhsCode" = WH."WhsCode"
LEFT
JOIN 
 (
SELECT "ItemCode"

    FROM INV1 I1

INNER JOIN OINV I
    ON I."DocEntry" = I1."DocEntry"

    WHERE I."CANCELED" = 'N'
        AND I."DocDate" >= ADD_MONTHS(CURRENT_DATE, -6)
 

UNION
ALL
 
SELECT "ItemCode"

    FROM RIN1 R1

INNER JOIN ORIN R
    ON R."DocEntry" = R1."DocEntry"

    WHERE R."CANCELED" = 'N'
        AND R."DocDate" >= ADD_MONTHS(CURRENT_DATE, -6)
 

UNION
ALL
 
SELECT "ItemCode"

    FROM OIVL V

    WHERE V."DocDate" >= ADD_MONTHS(CURRENT_DATE, -6)
 ) AS Movimientos
ON ITM."ItemCode" = Movimientos."ItemCode"
WHERE 
 COALESCE(ONH."OnHand", 0) > 0 -- Artículos cON stock disponible
GROUP BY 
 ITM."ItemCode", ITM."ItemName", WH."WhsName"
HAVING 
 COUNT(Movimientos."ItemCode") = 0 -- Filtra los artículos sIN movimientos
ORDER BY 
 "Stock Actual" DESC, "Costo Total" DESC;

@Ahmed recuerda formatear el código sql adecuadamente.
Te lo he corregido.

Gracias @meqs por la corrección.

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.


:bar_chart: 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”


:mag: Posibles causas del error (y cómo solucionarlas)

:white_check_mark: 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.

:pushpin: Específicamente, esta parte:

LEFT JOIN (
  SELECT "ItemCode" FROM INV1 ...
  UNION ALL
  ...
) AS Movimientos
ON ITM."ItemCode" = Movimientos."ItemCode"

:no_entry_sign: Esto es lo que causa el error, porque Dashboard Designer no interpreta bien los alias ni las uniones múltiples dentro del JOIN.

:wrench: 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.


:white_check_mark: 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.

:wrench: 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.


:white_check_mark: 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.

:wrench: Solución:

  • Declara ese campo en un SELECT externo si es posible.
  • O calcula el valor fuera del SELECT principal.

:white_check_mark: Reescritura sugerida del query para Dashboard Designer

Puedes intentar dividir el query en dos partes:

  1. Crear una vista HANA (si tienes permisos).
  2. O simplificar el query solo con datos disponibles en una sola tabla o vista.

:bulb: 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.


:brain: Consejos prácticos al usar Dashboard Designer con HANA

:heavy_check_mark: Evita subconsultas con UNION ALL o JOINs sobre subselects.
:heavy_check_mark: Usa solo campos directos o funciones simples.
:heavy_check_mark: Si necesitas lógicas complejas, crea una vista en HANA y consume la vista desde el dashboard.
:heavy_check_mark: Usa fechas fijas en lugar de funciones dinámicas como CURRENT_DATE o ADD_MONTHS.


:white_check_mark: Resumen Consultoria-SAP

El error en Dashboard Designer de SAP Business One HANA se debe a:

  • :no_entry_sign: Subconsultas con UNION ALL dentro de JOIN
  • :no_entry_sign: Funciones dinámicas no compatibles (ADD_MONTHS)
  • :no_entry_sign: Cálculos cruzados complejos en el SELECT

:heavy_check_mark: 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! :rocket:

Este tema se cerró automáticamente 7 días después de la última publicación. No se permiten nuevas respuestas.