cancel
Showing results for 
Search instead for 
Did you mean: 

Orden de Ventas vs Facturado

former_member220991
Participant
0 Kudos

Buenas tardes

estoy realizando una consulta para comparar mis ordenes de venta VS mis facturación en producto, (no en ganancias) pero al hacer mi consulta y comparar contra el analicis de venta los datos no me coinciden. entonces no se que valosres tome en cuenta el analisis de venta que yo no este tomando en mi consulta.

por hay busque en internet y dentro del foro ya se tenia esta pregunta

https://scn.sap.com/thread/1880000

pero creo que ya no se dio solución

dejo mi consulta de igual manera espero me puedan ayudar

select DLN1.ItemCode as 'CODIGO',DLN1.Dscription as 'ARTICULO',SUM(DLN1.Quantity) as 'ORDEN DE VENTA',INV1.ItemCode as 'CODIGO',INV1.Dscription as 'ARTICULO',

sum(INV1.Quantity) as 'FACTURADO',

COALESCE(sum(INV1.Quantity) * 100 / NULLIF(SUM(DLN1.Quantity),0),0)  AS 'EFICIENCIA % DE VENTA'

from ORDR INNER JOIN RDR1 ON ORDR.DocEntry = RDR1.DocEntry /*ventas*/

INNER JOIN DLN1 ON DLN1.BaseRef = ORDR.DocNum

INNER JOIN ODLN ON ODLN.DocEntry = DLN1.DocEntry /*embarque*/

INNER JOIN INV1 ON INV1.BaseRef = ODLN.DocEntry

INNER JOIN OINV ON OINV.DocEntry = INV1.DocEntry /*facturas*/

WHERE OINV.DocNum < '1000000' AND OINV.CANCELED = 'N' and OINV.Series = '4' and OINV.DocType = 'I' AND DLN1.ItemCode = INV1.ItemCode

/*and OINV.DocDate BETWEEN @i and @f*/

GROUP BY INV1.ItemCode,DLN1.ItemCode,INV1.Dscription,DLN1.Dscription

resultado

CODIGOARTICULOORDEN DE VENTACODIGOARTICULOFACTURADOEFICIENCIA % DE VENTA
769153SG0B-ACTR PLR LWR RH PG05153306.000000769153SG0B-ACTR PLR LWR RH PG05150264.00000098.015733
769163SG0B-ACTR PLR LWR LH PG05154320.000000769163SG0B-ACTR PLR LWR LH PG05148752.00000096.391912
769173SG0B-AGARN W/H RH PG05150336.000000769173SG0B-AGARN W/H RH PG05143280.00000095.306513
769183SG0B-AGARN W/H LH PG05152736.000000769183SG0B-AGARN W/H LH PG05155280.000000101.665619

lo que tengo en mi analizáis de venta facturado de estas piezas

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Antonio,

De inicio no estás considerando las notas de crédito (tabla ORIN y RIN), entonces esto provocaría que tus números salgan más grandes que lo que te puede mostrar el Análisis de Ventas de SAP.

Otra: quiero pensar en que el Análisis de Ventas estás consultando por Artículos (no por Cliente ni por Empleado). De lo contrario, tu query estaría incorrecto ya que solo estás obteniendo documentos tipo Artículo.

Por útlimo, en el filtro de número de documento (enseguida del WHERE) no indiques como string el número, sino como número (sin la comilla).

Es lo que puedo sugerirte de momento.

Saludos,

JC.

former_member220991
Participant
0 Kudos

ok lo tomare en cuenta los campos de nota de crédito pero de hecho mis cantidades son mas pequeñas que las que muestra el análisis de venta y si es comparación por articulo pero quiero hacer un filtro por fecha y cliente.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas

Prueba lo siguiente.


SELECT DISTINCT T.ItemCode, T.ItemName,

ISNULL((SELECT SUM(Y.Quantity) FROM ORDR X INNER JOIN RDR1 Y ON Y.DocEntry=X.DocEntry WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]'),0)'Pedidos',

ISNULL((SELECT SUM(Y.Quantity) FROM ODLN X INNER JOIN DLN1 Y ON Y.DocEntry=X.DocEntry WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]'),0)'Entregas',

ISNULL((SELECT SUM(Y.Quantity) FROM ORDN X INNER JOIN RDN1 Y ON Y.DocEntry=X.DocEntry WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]'),0)'Devoluciones',

ISNULL((SELECT SUM(Y.Quantity) FROM OINV X INNER JOIN INV1 Y ON Y.DocEntry=X.DocEntry WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]'),0)'Facturado',

ISNULL((SELECT SUM(Y.Quantity) FROM ORIN X INNER JOIN RIN1 Y ON Y.DocEntry=X.DocEntry WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]'),0)'N/Credito'

FROM OITM T

GROUP BY T.ItemCode, T.ItemName

ORDER BY T.ItemCode

Saludos

former_member220991
Participant
0 Kudos

esta muy bien tu consulta tiene buenos datos, solo que me sigue mandando datos diferentes a el Análisis de Ventas de SAP.

consulta

Número de artículoDescripción del artículoPedidosEntregasDevolucionesFacturadoN/Credito
769153SG0B-ACTR PLR LWR RH PG0526,533.0028,044.0086428,332.000
769163SG0B-ACTR PLR LWR LH PG0526,569.0028,044.0086428,332.000
769173SG0B-AGARN W/H RH PG0526,761.0027,660.0066028,440.00

0

Análisis de Ventas de SAP. por factura


Número de artículoDescripción del artículoCantidad
769153SG0B-ACTR PLR LWR RH PG0525,596.00
769163SG0B-ACTR PLR LWR LH PG0525,632.00
769173SG0B-AGARN W/H RH PG0525,560.00



former_member220991
Participant
0 Kudos

buenos dias

siguiendo tu consulta

SELECT DISTINCT T.ItemCode, T.ItemName, 

ISNULL((SELECT SUM(Y.Quantity)

FROM ORDR X INNER JOIN RDR1 Y ON Y.DocEntry=X.DocEntry

WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]'),0)'Pedidos', 

ISNULL((SELECT SUM(Y.Quantity)

FROM ODLN X INNER JOIN DLN1 Y ON Y.DocEntry=X.DocEntry

WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]'),0)'Entregas', 

ISNULL((SELECT SUM(Y.Quantity)

FROM ORDN X INNER JOIN RDN1 Y ON Y.DocEntry=X.DocEntry

WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]'),0)'Devoluciones', 

ISNULL((SELECT SUM(Y.Quantity)

FROM OINV X INNER JOIN INV1 Y ON Y.DocEntry=X.DocEntry

WHERE X.CANCELED = 'N' and X.Series = '4' and X.DocType = 'I' and Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]'),0)'Facturado', 

ISNULL((SELECT SUM(Y.Quantity)

FROM ORIN X INNER JOIN RIN1 Y ON Y.DocEntry=X.DocEntry

WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]'),0)'N/Credito',

(select COALESCE(sum(INV1.Quantity) * 100 / NULLIF(SUM(RDR1.Quantity),0),0)from ORDR INNER JOIN RDR1 ON ORDR.DocEntry = RDR1.DocEntry /*ventas*/

INNER JOIN DLN1 ON DLN1.BaseRef = ORDR.DocNum

INNER JOIN ODLN ON ODLN.DocEntry = DLN1.DocEntry /*embarque*/

INNER JOIN INV1 ON INV1.BaseRef = ODLN.DocEntry

INNER JOIN OINV ON OINV.DocEntry = INV1.DocEntry /*facturas*/ where RDR1.ItemCode = T.ItemCode) AS 'Eficiencia de ventas %'

FROM OITM T 

where T.PrcrmntMtd = 'M'

GROUP BY T.ItemCode, T.ItemName 

ORDER BY T.ItemCode

Former Member
0 Kudos

Pudiera ser porque en la columna ade Eficiencia no estás filtrando las fechas. Además, por como armaste ese query, estás obteniendo solo las partidas de las órdenes de venta que ya fueron entregadas y facturadas. Suponiendo que tienes entregas y/o facturas parciales sobre la OV, estarías excluyendo aquellas que aún no entregas y/o facturas.

Yo te recomendaría que el subquery lo formaras por:

1. Un select de las órdenes de venta, y

2. Un select de las facturas.

y ahora sí, la suma de cantidades de cada SELECT que te comento son los que utilices para calcular tu eficiencia. P. ej. así:


select campos, campos, campos,

(

     (select sum(quantity) *100 from INV1 where docdate filtro fecha y otros filtros)

     /

     (select sum(quantity) from RDR1 where docdate filtro fecha y otros filtros)

) as 'Eficiencia'

from tablas...

La intención de ese ejemplo es solo mostrarte como quedaría tu subquery de eficiencia (texto en azul). La forma en que lo calcules tú la decides...

Espero haberme explicado.

Saludos,

JC.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Excluye en las subquerys los documentos cancelados

Agrega Where X.Canceled='N'

Atte.

former_member220991
Participant
0 Kudos

PUES ME QUEDO ALGO ASI

SELECT DISTINCT T.ItemCode, T.ItemName, 

ISNULL((SELECT SUM(Y.Quantity)

FROM ORDR X INNER JOIN RDR1 Y ON Y.DocEntry=X.DocEntry

WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]' and X.Canceled='N'),0)'Pedidos', 

ISNULL((SELECT SUM(Y.Quantity)

FROM ODLN X INNER JOIN DLN1 Y ON Y.DocEntry=X.DocEntry

WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]' and X.Canceled='N'),0)'Entregas', 

ISNULL((SELECT SUM(Y.Quantity)

FROM ORDN X INNER JOIN RDN1 Y ON Y.DocEntry=X.DocEntry

WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]' and X.Canceled='N'),0)'Devoluciones', 

ISNULL((SELECT SUM(Y.Quantity)

FROM OINV X INNER JOIN INV1 Y ON Y.DocEntry=X.DocEntry

WHERE X.CANCELED = 'N' and X.Series = '4' and X.DocType = 'I' and Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]'),0)'Facturado', 

ISNULL((SELECT SUM(Y.Quantity)

FROM ORIN X INNER JOIN RIN1 Y ON Y.DocEntry=X.DocEntry

WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]' and X.Canceled='N' ),0)'N/Credito',

((SELECT SUM(Y.Quantity) *100 FROM OINV X INNER JOIN INV1 Y ON Y.DocEntry=X.DocEntry

WHERE X.CANCELED = 'N' and X.Series = '4' and X.DocType = 'I' and Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]')

/ (SELECT SUM(Y.Quantity) FROM ORDR X INNER JOIN RDR1 Y ON Y.DocEntry=X.DocEntry

WHERE Y.ItemCode=T.ItemCode AND X.DocDate >='[%0]' AND X.DocDate<='[%1]' and X.Canceled='N')) AS 'Eficiencia de Ventas'

FROM OITM T 

where T.PrcrmntMtd = 'M'

GROUP BY T.ItemCode, T.ItemName 

ORDER BY T.ItemCode