Problema con layout en crystal

Buen día.
Estoy tratando de hacer un layout en crystal reports, para la solicitud de compra, pero tengo el siguiente problema:

Al querer visualizar este documento

Me duplica la información

Estoy utilizando el siguiente código:

SELECT  T0.[Comments] 'Comentarios', T0.[DocNum] 'No. Solicitud', T0.[DocDate] 'Fecha', T0.[DocTotal] 'Total', T0.[Email] 'Correo Electronico', 
		T0.[ReqName] 'Nombre del Solicitante', T0.[Requester] 'Solicitante', T0.[VatSum], T1.[Dscription] 'Descripcion', 
		T1.[ItemCode] 'Codigo', T1.[LineTotal] 'Importe', T1.[Price] 'Precio', T1.[Quantity] 'Cantidad', T2.[LineText] 'Texto', 
		T3.[InvntryUom] 'U Medida', T3.[U_CARACTERISTICA] 'Medida 1', T3.[U_CARACTERISTICA1] 'Medida 2', T4.[IsCommited] 'T Ventas', 
		T4.[OnHand] 'Existencia', T4.[OnOrder] 'T Compras', T4.[WhsCode] 'Almacen', T5.[Name] 'Departamento', T6.[TaxIdNum] 
FROM OPRQ T0  INNER JOIN 
	PRQ1 T1 ON T0.[DocEntry] = T1.[DocEntry] LEFT JOIN 
	PRQ10 T2 ON T1.[DocEntry] = T2.[DocEntry] INNER JOIN 
	OITM T3 ON T1.[ItemCode] = T3.[ItemCode] INNER JOIN 
	OITW T4 ON T3.[ItemCode] = T4.[ItemCode] INNER JOIN 
	OUDP T5 ON T0.[Department] = T5.[Code] INNER JOIN 
	OADM T6 ON T0.[RevisionPo] = T6.[RevisionPo]

Intente agregar la condición WHERE T1.[LineNum] = T2.[LineSeq], y si funcionó en este documento, pero en los documentos en donde solo hay una partida, no me muestra nada

Espero que alguien me pueda ayudar.

Gracias.

ese campo no me suena, a que hace referencia?

En los documentos de compras hay una opción que te permite partir el pedido en varios pedidos, este campo indica si se partió el pedido o no.
Además fue el único campo que encontré para relacionar esas dos tablas.
Crees que no sea necesario relacionar esas tablas?
El único campo que utilizo de la tabla OADM es el RFC.

Me parece que tu error esta en este JOIN: INNER JOIN OITW T4 ON T3.[ItemCode] = T4.[ItemCode]
Esa tabla contiene una entrada por cada relacion Item-Almacen, si te sale 2 veces es probable que ese item este en 2 almacenes, aumentale la condicion del almacen al join:

INNER JOIN OITW T4 ON T3.[ItemCode] = T4.[ItemCode] and T1.[WhsCode] = T4.[WhsCode]

Saludos,

Gracias por responder @Willy_Caldero.

Lo que hago para que no me muestre información de los demás almacenes, es directamente en Crystal, le digo que me elimine la sección cuando el código del almacén es 02, 03 y 04, es decir, que solo me muestre el almacén 01.

Aún así crees que deba hacer el cambio que me sugieres?

De nuevo gracias y que tengas un excelente día.

Buen día,
He estado haciendo varias pruebas con sus sugerencias y algunas otras ideas, pero no logro hacer que no se duplique la información.
Indagando un poco, me di cuenta de que el problema se presenta al agregar la tabla PRQ10 y la tabla OITW.

Uniendo las tablas OPRQ y PRQ1

Uniendo las tablas OPRQ, PRQ1 y PRQ10

Y uniendo las tablas OPRQ, PRQ1, OITM y OITW

Como se puede observar, al unir las tablas PRQ10 y OITW, es cuando se genera la situación de duplicar la información. Espero que alguien me pueda ayudar para poder unir todas las tablas correctamente.

Gracias.

Hola Roberto, veo que aun no probaste el cambio que te comente, eso soluciona tu problema;
INNER JOIN OITW T4 ON T3.[ItemCode] = T4.[ItemCode] and T1.[WhsCode] = T4.[WhsCode]

Saludos,

1 me gusta

Gracias @Willy_Caldero, pero como lo mencioné en mi anterior mensaje, estuve haciendo pruebas con sus sugerencias, es decir, que si probé lo que me recomendaste, pero no funcionó

La solicitud de compra 173 solo tiene 2 partidas, aún añadiendo lo que propones duplica la información.

Estuve haciendo más pruebas y llegué a la conclusión que comento en mi anterior mensaje sobre las tablas PRQ10 y OITW.

Espero que si me puedan ayudar.
De antemano muchas gracias.

Hola @RobertoS puedes probar con el siguiente query:

SELECT  T0.[Comments] 'Comentarios', T0.[DocNum] 'No. Solicitud', T0.[DocDate] 'Fecha', T0.[DocTotal] 'Total', T0.[Email] 'Correo Electronico', 
		T0.[ReqName] 'Nombre del Solicitante', T0.[Requester] 'Solicitante', T0.[VatSum], T1.[Dscription] 'Descripcion', 
		T1.[ItemCode] 'Codigo', T1.[LineTotal] 'Importe', T1.[Price] 'Precio', T1.[Quantity] 'Cantidad', (SELECT A.[LineText] FROM PRQ10 A WHERE T1.[DocEntry] = A.[DocEntry]) 'Texto', 
		T3.[InvntryUom] 'U Medida', T3.[U_CARACTERISTICA] 'Medida 1', T3.[U_CARACTERISTICA1] 'Medida 2', T4.[IsCommited] 'T Ventas', 
		T4.[OnHand] 'Existencia', T4.[OnOrder] 'T Compras', T4.[WhsCode] 'Almacen', T5.[Name] 'Departamento', T6.[TaxIdNum] 
FROM OPRQ T0  INNER JOIN 
	PRQ1 T1 ON T0.[DocEntry] = T1.[DocEntry] LEFT JOIN  
	OITM T3 ON T1.[ItemCode] = T3.[ItemCode] INNER JOIN 
	OITW T4 ON T3.[ItemCode] = T4.[ItemCode] INNER JOIN 
	OUDP T5 ON T0.[Department] = T5.[Code] INNER JOIN 
	OADM T6 ON T0.[RevisionPo] = T6.[RevisionPo]

Lo que hice fue sacar el INNER JOIN de la PRQ10 y coloqué una subconsulta para traer el LineText… no puede probarlo en SAP porque ahora no tengo acceso, pero creo que podría funcionarte.

Saludos.

Buen día @JhosserRomero,
Al probar el query que sugieres me arroja el siguiente error

solicitud%20compra13

Probé el query desde SAP y desde SQL Server Management Studio, y también devolvió el mismo error.

Gracias por responder, espero que alguien más tenga alguna otra idea.

Buen día.

Por fin se pudo resolver el problema.
Con el siguiente código:

SELECT  T0.[Comments] 'Comentarios', T0.[DocNum] 'No. Solicitud', T0.[DocDate] 'Fecha', T0.[DocTotal] 'Total', 
		T0.[Email] 'Correo Electronico', T0.[ReqName] 'Nombre del Solicitante', T0.[Requester] 'Solicitante', 
		T0.[VatSum], T1.[Dscription] 'Descripcion', T1.[ItemCode] 'Codigo', T1.[LineTotal] 'Importe', 
		T1.[Price] 'Precio', T1.[Quantity] 'Cantidad', (SELECT T2.[LineText] FROM PRQ10 T2 WHERE T1.[DocEntry] = T2.[DocEntry] AND T1.[LineNum] = T2.[AftLineNum]) 'Texto', 
		T3.[InvntryUom] 'U Medida', T3.[U_CARACTERISTICA] 'Medida 1', T3.[U_CARACTERISTICA1] 'Medida 2', 
		T4.[IsCommited] 'T Ventas', T4.[OnHand] 'Existencia', T4.[OnOrder] 'T Compras', T4.[WhsCode] 'Almacen', 
		T5.[Name] 'Departamento', T6.[TaxIdNum] 

FROM OPRQ T0  INNER JOIN 
	 PRQ1 T1 ON T0.[DocEntry] = T1.[DocEntry] INNER JOIN
	 OITM T3 ON T1.[ItemCode] = T3.[ItemCode] INNER JOIN 
	 OITW T4 ON T3.[ItemCode] = T4.[ItemCode] INNER JOIN 
	 OUDP T5 ON T0.[Department] = T5.[Code],
	 OADM T6

Ya revisé varios documentos, y todo parece estar correcto.

1 me gusta