Buenas comunidad
Actualmente estoy montando un query en el que se refleja el proceso de compra. Sin embargo, tengo un pequeño inconveniente: resulta que este query me trae la informacion del siguiente proceso.
Solicitud -> cotizacion -> orden -> entrada -> factura
La informacion que me muestra es la correcta. Sin embargo, el tema es que me trae todas las cotizaciones que se hayan ingresado a SAP. Por ejemplo para una solicitud pueden haber 4 cotizaciones y en realidad las que me generaron la orden de compra fueron solamente 2. Lo que necesito es quitar esas dos cotizaciones que no fueron “elegidas” por decirlo asi. Mi pregunta es, habra algun campo en la tabla OPQT o PQT1 o alguna otra forma de quitar esas cotizaciones “sobrantes”. O del todo no es posible hacer lo que necesito.
El query que estoy usando es el siguiente.
SELECT DISTINCT
/*Solicitud de compra*/
T0.DocNum AS PurchaseRequestNum ,
T0.DocDate AS PurchaseRequestDate ,
T0.DocEntry AS PurchaseRequestEntry,
T0.ObjType AS PurchaseRequestType,
ISNULL(T0.ReqName, '-') AS RequestName ,
ISNULL(T1.Project, '-' ) AS Project ,
T0.CANCELED AS PurchaseRequestCanceled ,
T0.Comments ,
CASE
WHEN T5.DocEntry <> 0 THEN 'Solicitud de compra autorizada'
WHEN T0.CANCELED = 'N' THEN 'Solicitud de compra abierta'
WHEN T0.CANCELED = 'Y' THEN 'Solicitud de compra cancelada'
WHEN T0.CANCELED IS NULL THEN '-'
END PurchaseRequestStatus ,
/*Pedido*/
T3.DocNum AS PurchaseQuotationNum ,
T3.DocEntry AS PurchaseQuotationEntry ,
T3.DocDate AS PurchaseQuotationDate ,
T3.ObjType AS PurchaseQuotationType,
CASE
WHEN T5.DocEntry <> 0 THEN 'Pedido de compra autorizada'
WHEN T5.CANCELED = 'N' THEN 'Pedido de compra abierto'
WHEN T5.CANCELED = 'Y' THEN 'Cancelada'
WHEN T5.CANCELED IS NULL THEN '-'
END PurchaseQuotationStatus,
/*Orden de compra*/
T5.DocEntry AS PurchaseOrderEntry,
T5.CANCELED AS PurchaseOrderCanceled,
T5.DocNum AS PurchaseOrderNum ,
T5.DocDate AS PurchaseOrderDate ,
CASE
WHEN T7.DocEntry <> 0 THEN 'Orden de compra autorizada'
WHEN T5.CANCELED = 'N' THEN 'Orden de compra en proceso'
WHEN T5.CANCELED = 'Y' THEN 'Orden de compra cancelada'
WHEN T5.CANCELED IS NULL THEN '-'
END PurchaseOrderStatus,
/*Entrada de mercancias*/
T7.DocNum AS GoodsReceiptNum ,
T7.DocDate AS GoodsReceiptDate ,
CASE
WHEN T9.DocEntry <> 0 THEN 'Entrada de mercadería con factura'
WHEN T7.CANCELED = 'N' THEN 'Entrada de mercadería sin factura'
WHEN T7.CANCELED = 'Y' THEN 'Entrada cancelada'
WHEN T7.CANCELED IS NULL THEN '-'
END GoodsReceiptStatus,
/*Factura*/
T9.DocNum AS InvoiceNum ,
T9.DocDate AS InvoiceDate ,
CASE
WHEN T9.DocStatus = 'O' THEN 'Factura abierta'
WHEN T9.DocStatus = 'C' THEN 'Factura cerrada'
WHEN T9.DocStatus IS NULL THEN '-'
END InvoiceStatus ,
T10.CardName AS ProviderName
FROM OPRQ T0
INNER JOIN PRQ1 T1 ON
T0.DocEntry = T1.DocEntry
INNER JOIN PQT1 T2 ON
T2.BaseEntry = T1.DocEntry
INNER JOIN OPQT T3 ON
T2.DocEntry = T3.DocEntry
LEFT OUTER JOIN POR1 T4 ON
T2.DocEntry = T4.BaseEntry AND
T2.LineNum = T4.BaseLine AND
T2.ItemCode = T4.ItemCode
LEFT OUTER JOIN OPOR T5 ON
T4.DocEntry = T5.DocEntry
LEFT OUTER JOIN PDN1 T6 ON
T6.BaseEntry = T4.DocEntry AND
T6.BaseLine = T4.LineNum AND
T6.BaseRef = T5.DocNum AND
T6.ItemCode = T4.ItemCode AND
T6.BaseType = 22
LEFT OUTER JOIN OPDN T7 ON
T6.DocEntry = T7.DocEntry
LEFT OUTER JOIN PCH1 T8 ON
T8.BaseEntry = T6.DocEntry AND
T8.BaseLine = T6.LineNum AND
T8.ItemCode = T6.ItemCode AND
T8.BaseType = 20
LEFT OUTER JOIN OPCH T9 ON
T8.DocEntry = T9.DocEntry
LEFT OUTER JOIN OCRD T10 ON
T4.BaseCard = T10.CardCode