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
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