Filtro de cotizaciones en proceso de compra

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

Hola @aleal04 una opción sería que muestre solo las ofertas de compra que tienen documento destino, o también crear un UDF para indicar las que fueron aprobadas y este campo lo consideras en tu reporte.

Saludos,

1 me gusta

tendrías que cambiar este LEFT JOIN por INNER JOIN

2 Me gusta