Filtro de facturas canceladas - Fecha y hora

Hola tengo una sentencia , pero no me esta funcionando correctamente, lo que busco es filtrar facturas con una rango de fecha y hora de un día anterior , la idea que se filtro por la cancelación del documento , ya ese tema lo tengo pero no se por que cuando filtro en un rango de 13:00 de la tarde de una día anterior a las 12:00 del dia de hoy me trae todas las facturas del día anterior, les comparto mi query

select distinct t4.“Hora”,T0.“NumAtCard”,T0.“DocEntry”,T0.“DocDate”,T2.“CardName”,T3.“U_NAME”,T0.“DocTotal”
from OINV T0
Inner join INV1 T1 on T1.“DocEntry”=T0.“DocEntry”
INNER JOIN OCRD T2 ON T2.“CardCode”=T0.“CardCode”
inner join OUSR T3 ON T3.“USERID” = T0.“UserSign”
inner join (

select T0."CreateDate",T0."DocEntry",T0."ObjType",T0."CANCELED",T3."U_NAME",T0."DocTime" AS "Hora" from OINV T0
INNER JOIN NNM1 T1 ON T1."Series" = T0."Series"
inner join OUSR T3 ON T3."USERID" = T0."UserSign"
         where T1."Series"=110 and T0."CreateDate" BETWEEN [%0] AND  [%1] 

Union all

    select T0."CreateDate",T0."DocEntry",T0."ObjType",T0."CANCELED",T3."U_NAME",T0."DocTime" AS "Hora" from OINV T0
INNER JOIN NNM1 T1 ON T1."Series" = T0."Series"
inner join OUSR T3 ON T3."USERID" = T0."UserSign"
         where T1."Series"=110 and T0."DocTime"  BETWEEN [%2] AND  [%3] 

GROUP BY T0.“CreateDate”,T0.“DocEntry”,T0.“ObjType”,T0.“CANCELED”,T3.“U_NAME”,T0.“DocTime”

)T4 ON T4.“DocEntry”=T1.“TrgetEntry” AND T4.“ObjType”=T1.“TargetType”
order by T0.“NumAtCard”

Yo no me he enterado muy bien de lo que quieres obtener, ni de la consulta sql que has pegado…
Si puedes, por favor, ¿editas el mensaje, te explicas mejor y formateas el código sql adecuadamente?

El problema biene de que el campo de hora no esta en formato Fecha/Hora o solo hora, es un entero, las posibles soluciones son:

  1. unifica y convierte ambos campos (fecha creacion y hora creacion) en uno solo con formato DateTime, SAP no muestra el campo en este formato, pero en el filtro si funciona (tambien debes ajustar el campo de filtro a este formato)
  2. El filtro se hace por separado, concretamente en 3 pasos
    2.1 la fecha de inicio y la hora >= que tu filtro
    2.2 La fecha de fin y la hora <= que tu filtro
    2.3 los dias que quedan en medio del rango de fechas
(
	(A0."CreateDate" = @fechaInicio AND A0."CreateTime" >= @HoraInicio) 
	OR (A0."CreateDate" = @FechaFin AND A0."CreateTime" <= @HoraFin)
	OR (A0."CreateDate" > @fechaInicio AND A0."CreateDate" < @FechaFin)
)
/* AND {Otros Filtros}

escribe o pega el código aquí

1 me gusta

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