FROM [dbo].[OPCH] T0
INNER JOIN [dbo].[PCH1] T1 ON T0.DocEntry = T1.DocEntry
LEFT JOIN [dbo].[PDN1] T2 ON T1.BaseEntry = T2.DocEntry AND T1.BaseType = T2.ObjType AND T1.BaseLine = T2.LineNum
LEFT JOIN [dbo].[OPDN] T5 ON T5.DocEntry = T2.DocEntry
Hice la pruebe pero no me trae las entradas que están relacionadas con la factura o no me trae ninguna entrada cuando tiene, que podría estar mal?
SELECT
T0."TransId"
, T1."ItemCode"
, T1."AcctCode"
, T3."TransId"
, T2."AcctCode"
FROM
OPCH T0
INNER JOIN PCH1 T1 ON T0."DocEntry" = T1."DocEntry"
LEFT JOIN PDN1 T2 ON T1."BaseEntry" = T2."DocEntry" AND T1."BaseType" = T2."ObjType" AND T1."BaseLine" = T2."LineNum"
LEFT JOIN OPDN T3 ON T3."DocEntry" = T2."DocEntry"
WHERE
T0."DocDate" >=[%0] AND T0."DocDate" <=[%1]
AND
T1."AcctCode" Like '%%1.1.080.40.001%%'
Si ejecuto tu query sin el Where, me trae datos sin problema, pudiera ser que en efecto no está encontrando resultados con los parámetros que utilizas.
Prueba como te comento, ejecuta sin Where para que puedas percatarte que te trae los datos que buscas, saludos.
Me sigue sucediendo lo mismo. Que podría ser? alguna relación entre las tablas?
Tengo dudas de esta relación si estará OK
LEFT JOIN PDN1 T2 ON T1.“BaseEntry” = T2.“DocEntry” AND T1.“BaseType” = T2.“ObjType” AND T1.“BaseLine” = T2.“LineNum”
Te comparto lo que tengo funcional en mis reportes, hay muchas maneras de ligar documento base con documento destino, utiliza el buscador y experimenta con alguna otra relación de tablas: https://foros.consultoria-sap.com/search?q=baseentry
Select
T0.TransId
, T1.ItemCode
, T1.AcctCode
, T3.TransId
, T2.AcctCode
FROM
OPCH T0
INNER JOIN PCH1 T1 ON T0.DocEntry = T1.DocEntry
LEFT JOIN PDN1 T2 ON T1.BaseEntry = T2.DocEntry AND T1.BaseType = T2.ObjType And T1.BaseLine = T2.LineNum
LEFT JOIN OPDN T3 ON T3.DocEntry = T2.DocEntry
Si no tienes una control estricto de que cada línea de tu entrada sea equivalente a una línea de tu factura, puedes prescindir de “T1.BaseLine = T2.LineNum”
Creo que no comprendo qué es lo que prendes con tu query. El TransId es el número de póliza, no tendría porque haber relación de número de poliza de la entrada y el número de póliza de la factura.
En caso de hacer un cambio sería el tipo de Join entre OPDN y PDN1 que por error lo he dejado como “left” cuando debería ser “Inner”:
Select
T0.TransId
, T1.ItemCode
, (Select TX.AcctName FROM OACT TX Where TX.AcctCode = T1.AcctCode)
, T3.TransId
, (Select TX.AcctName FROM OACT TX Where TX.AcctCode = T2.AcctCode)
FROM
OPCH T0
INNER JOIN PCH1 T1 ON T0.DocEntry = T1.DocEntry
LEFT JOIN PDN1 T2 ON T1.BaseEntry = T2.DocEntry AND T1.BaseType = T2.ObjType And T1.BaseLine = T2.LineNum
INNER JOIN OPDN T3 ON T3.DocEntry = T2.DocEntry
Order By T0.TransId Desc
Y para poder comparar de manera visual, he agregado el nombre de la cuenta en lugar del código interno:
Totalmente de acuerdo, el documento base cambia si se trata de factura de reserva. En este caso el compañero nunca mencionó que se trata de factura de reserva, por ello la recomendación de joins.
Hola Amigos!!!, si perdón si no lo mencioné, es una factura de reserva. Muchas gracias por su aporte, me sirve, lo único que me faltaría es relacionar la tabla OPDN con las tablas OJDT/JDT1, ya que la de PDN1, me trae la cuenta contable de factura de reserva, y tendría que ser la del asiento contable. Lo pruebo y se los comparto.