Query ENTREGAS vs PEDIDOS

Buenos dias,

Necesito una query que me aporte el nº de pedido que corresponde al nº de entrega.

¿Alguien me puede ayudar?

Gracias!

Buen Dia @IvanFor al decir numero de pedido te refieres a una orden de venta que hizo tu empresa a un cliente, o te refieres a una orden de compra y su recepción, creo poderte ayudar, solo tengo esa duda amigo.

1 me gusta

Gracias por tu respuesta.

Me refiero a una orden de venta que hizo mi empresa a un cliente. Es decir, necesito una query que me muestre las ordenes de venta que han dado lugar a una entrega. Nº de cada una de ellas.

ok, dame unos minutos y te comparto algo que creo te puede servir

1 me gusta

Buen día amigo, perdón por hacerte esperar, te anexo este pequeño código, espero te sea de utilidad.

SELECT 
	T0.BaseEntry AS 'OV',
	T0.BaseLine AS 'LN OV',
	T0.DocEntry AS 'ENTREGA',
	T0.LineNum AS 'LN ENTREGA',
	T1.CardName AS 'CLIENTE',
	T0.ItemCode AS 'ITEM', 
	T0.Dscription AS 'DESRIPCION DEL ITEM', 
	T0.Quantity AS 'QTY ENTREGADA',
	T0.DocDate 
FROM DLN1 T0 
	INNER JOIN ODLN T1 ON T1.DocEntry=T0.DocEntry
WHERE T1.CANCELED='N' --AND T0.BaseEntry =[%0]  AQUI PUEDES FILTRAR POR OV SI LO CONSIDERAS NECESARIO
ORDER BY T0.BaseEntry

Saludos!!

1 me gusta

Gracias por su respuesta.

Pero no me sirve, no me aparecen las ordenes de venta que pertenecen a una entrega, me aparecen las facturas :frowning:

ok, ya entiendo lo que pasa es que facturan y después hacen la entrega, dame unos minutos y con mucho gusto te corrijo el código, animo que si se debe de poder!!!

1 me gusta

amigo @IvanFor , podrias probar este nuevo codigo, donde laboro el flujo es diferente al tuyo, por lo que no lo puedo probar fisicamente, pero creo que te puede funcionar.

SELECT 
	t2.BaseEntry as 'ov',
	t2.BaseLine as 'ln ov',
	T0.DocEntry AS 'ENTREGA',
	T0.BaseEntry AS 'factura',
	T0.LineNum AS 'LN ENTREGA',
	T1.CardName AS 'CLIENTE',
	T0.ItemCode AS 'ITEM', 
	T0.Dscription AS 'DESRIPCION DEL ITEM', 
	T0.Quantity AS 'QTY ENTREGADA',
	T0.DocDate 
FROM DLN1 T0 
	INNER JOIN ODLN T1 ON T1.DocEntry=T0.DocEntry
	inner join INV1 t2 on t2.DocEntry=t0.BaseEntry and t2.LineNum=t0.BaseLine
WHERE T1.CANCELED='N' --AND T0.BaseEntry =[%0]  AQUI PUEDES FILTRAR POR OV SI LO CONSIDERAS NECESARIO
ORDER BY T0.BaseEntry
1 me gusta

La consulta tendria que ser:

Numero orden de venta \ Numero Entrega \ Socio de Negocio \ Fecha de entrega

Lo que necesito es basicamente saber los pedidos que forman parte de una entrega.

No necesito saber los productos, ni nada mas.

Esta ultima consulta me da error.

MUCHAS GRACIAS!!!

Hola @IvanFor es relativamente sencillo obtener tu query, con poco que sepas de hacer consultas en SAP B1.

Lo que hay que tener claro es que documentos son los que intervienen y como se relacionan.

En B1 las relaciones entre documentos van en las líneas, debido a que las relaciones entre los documentos pueden ser 1 a n.

Dicho esto, tienes que crear un query de ORDR y RDR1 (para obtener su destino), los distintos DLN1 y ODLN que se han generado a partir de dichos registros.

Podrías hacerlo al revés, desde DLN1 y ODLN saber de que ORDR y RDR1 han llegado.

Por lo que detecto quieres saber a partir de una entrega, que pedidos se han incluido en dicha entrega ¿no?.

Esta información va por líneas porque las líneas de una entrega pueden venir de distintos pedidos, entonces tu consulta base tiene que ser de DLN1 y ahí tienes que buscar el dato BaseEntry y ahí tendrás el docentry del pedido que ha venido, pero lo que comento, de cada línea tienes un docentry porque pueden venir varios pedidos a la misma entrega.

Para ayudarte con la consulta además, estaría bien que nos aportes algo del código que intentas obtener… para ver que te esfuerzas un poco en mejorar tu aprendizaje.

Por otro lado, si utilizas la búsqueda te salen consultas de este estilo ya compartidas que resuelven tu inquietud.

1 me gusta
SELECT 
	T0.Docnum as 'OV',
	T3.Docnum as 'ENTREGA',
	T0.CardName AS 'SOCIO DE NEGOCIOS',
	T3.Docdate as 'FECHA'
FROM ORDR t0
INNER JOIN RDR1 T1 on T0.DocEntry = T1.DocEntry
INNER JOIN DLN1 T2 on T2.BaseEntry = T0.DocEntry and T1.LineNum = T2.Baseline
INNER JOIN ODLN T3 on T3.DocEntry = T2.DocEntry

WHERE T0.CANCELED='N' AND T3.CANCELED='N' --AND T0.DocNum =[%0]  AQUI PUEDES FILTRAR POR OV SI LO CONSIDERAS NECESARIO

TOMANDO LAS RECOMENDACIONES DE @meqs , CREO QUE QUEDARIA DE ESTA MANERA.

1 me gusta

gracias @meqs , tus respuestas deberás que son bien detalladas, en lo personal, considero que cada respuesta que das es un aprendizaje mas que tenemos que valorar y guardar para nuestro día a día en este mundo del SAP, saludos!!!

2 Me gusta

Gracias por tu respuesta @meqs.

Efectivamente, lo que necesito es saber en una entrega que pedidos se han incluido… Estoy intentando realizar la consulta pero en alguna parte no se continuar…

Muchas gracias por tus aportes @jamh1976

He probado esta consulta pero no me aparecen las flechas de enlace.

Claro @IvanFor para que en la entrega te aparezca la flecha de enlace tienes que añadir una columna con el T3.DocEntry.

Mas o menos esto es lo que pretendes

SELECT T3.DocEntry 'Entrega', T3.Docnum as 'Entrega', T3.Docdate as 'Fecha Entrega', T0.CardName AS 'Nombre cliente', T0.Docnum as 'Pedido Cliente' FROM ORDR t0 INNER JOIN RDR1 T1 on T0.DocEntry = T1.DocEntry left JOIN DLN1 T2 on T2.BaseEntry = T0.DocEntry and T1.LineNum = T2.Baseline left JOIN ODLN T3 on T3.DocEntry = T2.DocEntry WHERE T0.CANCELED='N' AND T3.CANCELED='N' and T3.Docnum=[%0]

1 me gusta

Este tema se cerró automáticamente 7 días después de la última publicación. No se permiten nuevas respuestas.