Buenos días.
Tengo un problema, necesito que al ejecutar la query pueda filtrar por fechas pero me da fallo.
SELECT DISTINCT
T0."DocEntry" AS "ID_Factura",
T0."TransId" AS "Asiento",
T0."DocNum" AS "Factura",
T0."DocDate" AS "Fecha de Factura",
(
SELECT
MAX(IFNULL(T1."ShipDate", T0."TaxDate"))
FROM
PCH1 T1
WHERE
T1."DocEntry" = T0."DocEntry"
)
AS "Fecha Operación",
T0."CardName",
T2."LicTradNum" AS "Cif",
(
T0."DocTotal" - T0."VatSum"
)
AS "Base Imponible",
ROUND (T0."VatSum", 2) AS "IVA",
(
SELECT
T3."Rate"
FROM
OVTG T3
WHERE
T3."Code" =
(
SELECT
MAX(T1."VatGroup")
FROM
PCH1 T1
WHERE
T1."DocEntry" = T0."DocEntry"
)
)
AS " % Iva",
ROUND (T0."DocTotal", 2) AS "Total"
FROM
OPCH T0
INNER JOIN
OCRD T2
ON T0."CardCode" = T2."CardCode"
WHERE
T0."DocDate" BETWEEN [ % 0] AND [ % 1]
GROUP BY
T0."DocDate",
T0."DocEntry",
T0."TransId",
T0."DocNum",
T0."CardName",
T2."LicTradNum",
T0."DocTotal",
T0."VatSum"
ORDER BY
T0."TransId"
Buen día @JuanAntonio
Ese error me reventó la cabeza durante un buen tiempo y la causa es que tienes Sub-Selects en tu consulta. Cuando tienes subconsultas, el SAP no permite utilizar parámetros. Hasta la fecha no he encontrado una solución. Yo lo que he hecho es pasar los reportes directamente a Crystal Reports cuando necesito subconsultas y parámetros.
Intenta quitar las subconsultas y verás que funciona.
Saludos.
Revisa bien esta parte de tu codigo (T0.“DocTotal” - T0.“VatSum”) AS “Base Imponible” , ahi encontraba el error lo modifique por ROUND (T0.“DocTotal”-T0.“VatSum”,2) y si se ejecuta el query.
SELECT DISTINCT
T0."DocEntry",
T0."DocNum",
T0."TransId" AS "Asiento",
T0."DocDate",
(
SELECT
MAX(IFNULL(A."ShipDate", T0."TaxDate"))
FROM
PCH1 A
WHERE
A."DocEntry" = T0."DocEntry"
)
AS "Fecha Operación",
T0."CardName",
T1."LicTradNum",
ROUND (T0."VatSum", 2) "IVA",
(
SELECT
B."Rate"
FROM
OVTG B
WHERE
B."Code" =
(
SELECT
MAX(C."VatGroup")
FROM
PCH1 C
WHERE
C."DocEntry" = T0."DocEntry"
)
)
AS " % Iva",
ROUND (T0."DocTotal", 2) total,
ROUND (T0."DocTotal" - T0."VatSum", 2) baseImponible
FROM
OPCH T0
INNER JOIN
OCRD T1
ON T0."CardCode" = T1."CardCode"
WHERE
T0."DocDate" between [ % 1] and [ % 2]
GROUP BY
T0."DocDate",
T0."TransId",
T0."DocEntry",
T0."DocNum",
T0."CardName",
T1."LicTradNum",
T0."VatSum",
T0."DocTotal"
Aparte de las comillas por [], y lo que te mencionan arriba del Round…
Intenta normalmente colocar el “Fecha >= Variable and Fecha <= Variable2” Me he encontrado con casos muy específicos (sin razón alguna), donde el query manager no reconoce los Between, pero si me acepta y sin problemas esta configuración. No es la más optima pero funciona