recomendacion, en lugar de usar el between usa el >= y < cuando hagas una comparacion de fechas, porque muchas veces el between se va al final del dia de comparacion, otra cosa trata de usar los parentesis en la parte del where, porque tambien existe una presedencia para los operadores dentro del where en este caso se haria esto:
Primero analiza esta sentencia:
Código SQL:
Ver originalY.ItemCode=T.ItemCode AND X.DocDate BETWEEN @FecIni AND @FecFin
Si retorna true analiza la siguiente
Código SQL:
Ver originalDocTime BETWEEN @HorIni AND @HorFin AND Y.FromWhsCod = 'MP'
en este caso quieres que se tome diferente por lo que se recomienda el uso de parentesis:
Código SQL:
Ver originalWHERE Y.ItemCode=T.ItemCode AND (X.DocDate BETWEEN @FecIni AND @FecFin AND DocTime BETWEEN @HorIni AND @HorFin) AND Y.FromWhsCod = 'MP' AND Y.WhsCode = 'WIP
Para que te respete lo que necesitas :)