Hola, espero se encuentren bien.
Espero me puedan ayudar u orientar sobre como generar un reporte de antigüedad de saldos.
Estoy intentando crear desde query manager en SAP Hana un reporte de antigüedad de saldos de clientes; ya que hay algunas columnas que necesito agregar al reporte nativo, como dias de crédito, limite de crédito, agente de ventas, etc.
Como no se bien por donde empezar, encontré aquí un post de una consulta pero al querer ejecutarla me encontré con algunos problemas ya que hana no reconoce los nombres de las tablas, ya lo logre solucionar colocando los nombres de las tablas en el formato que reconoce hana, pero ahora tengo problemas con las funciones como Datediff y algunas otras.
Continuando la discusión desde Query de Antigüedad de saldo SAP B1 :
select OCRD.cardcode 'Customer Code',OCRD.cardname 'Customer Name',
SUM(case when syscred <> 0 then syscred * - 1
else sysdeb
end) "Balance Due",
ISNULL(SUM(CASE when DATEDIFF(dd,JDT1.DueDate,current_timestamp) < 0
then
case
when JDT1.BalDueCred <> 0 then JDT1.BalDueCred * - 1
else JDT1.BalDueDeb
end
end),0.00) "Future Remit",
ISNULL(SUM(CASE when (DATEDIFF(dd,JDT1.DueDate,current_timestamp) >= 0
and datediff(dd,JDT1.DueDate,current_timestamp)< 30)
then
case
when JDT1.BalDueCred <> 0 then JDT1.BalDueCred * - 1
else JDT1.BalDueDeb
end
end),0.00) "0-30 days",
ISNULL(SUM(CASE when (datediff(dd,JDT1.DueDate,current_timestamp) >= 30
and datediff(dd,JDT1.DueDate,current_timestamp)< 60)
then
case
when JDT1.BalDueCred <> 0 then JDT1.BalDueCred * - 1
else JDT1.BalDueDeb
end
end),0.00) "31 to 60 days",
ISNULL(SUM(CASE when (datediff(dd,JDT1.DueDate,current_timestamp) >= 60
and datediff(dd,JDT1.DueDate,current_timestamp)< 90)
then
case
when JDT1.BalDueCred <> 0 then JDT1.BalDueCred * - 1
else JDT1.BalDueDeb
end
end),0.00) "61 to 90 days",
ISNULL(SUM(CASE when (datediff(dd,JDT1.DueDate,current_timestamp) >= 90
and datediff(dd,JDT1.DueDate,current_timestamp) < 120)
then
case
when JDT1.BalDueCred <> 0 then JDT1.BalDueCred * - 1
else JDT1.BalDueDeb
end
end),0.00) "91 to 120 days",
ISNULL(SUM(CASE when DATEDIFF(dd,JDT1.DueDate,current_timestamp) >= 120
then
case
when BalDueCred <> 0 then BalDueCred * - 1
else BalDueDeb
end
end),0.00) "120+ days"
from JDT1,OCRD
WHERE JDT1.shortname = OCRD.cardcode and OCRD.cardtype = 'c'
GROUP BY OCRD.cardcode, OCRD.cardname
--Filters Out Zero Balances
HAVING SUM(case when syscred <> 0 then syscred * - 1
else sysdeb
end) > 0 OR SUM(case when syscred <> 0 then syscred * - 1
else sysdeb
end) < 0
ORDER BY OCRD.CARDCODE
Buenas tardes, en Hana puedes ocupar lo siguiente para no tener problemas con la función datediff:
(DAYS_BETWEEN( T2."DocDate",T1."DocDueDate") < 31)
Saludos.
1 me gusta
system
Cerrado
24 Mayo, 2024 07:53
7
Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.