cancel
Showing results for 
Search instead for 
Did you mean: 

Ayuda con Query de ventas

Former Member
0 Kudos
509

Buen día Estimados expertos en SAP.

Tengo un pequeño detalle con un query para evaluar la venta de mis productos.

Necesito saber los productos que he vendido con sus cantidades y costos totales de la venta, separando o seleccionando solamente de algunas propiedades de los articulos, hasta aquí me da todo lo que necesito el informe de análisis de ventas que tiene Nativo el SAP BO que manejo, el problema se me presenta cuando requiero que el reporte me indique que productos han sido efectivamente cobrados hasta ese momento.

Tengo un query en el cual me indica la recuperación por factura, sin embargo no me dice que productos contienen los documentos.

Alguien me puede decir como se puede realizar este reporte?

Accepted Solutions (1)

Accepted Solutions (1)

gerardo_mendez
Active Contributor
0 Kudos

Hola Juan Manuel.

Porqué no nos muestras tu query y así tal vez sea mucho más rápido adecuarlo a lo que necesitas.

Saludos.

Former Member
0 Kudos

el reporte con el que saco el dato de las facturas pagadas es el siguiente.

Select T3.SlpName, T0.CardCode, T0.CardName, T0.DocNum As 'Pago', T2.DocNum As 'Factura', T2.DocTotal, T2.DocDate As 'Fecha factura', T0.DocDate As 'Fecha pago',

  Cast(T0.DocDate - T2.DocDate As Int) As 'Días transcurridos', 

  ROUND(ISNULL(R1.Aplicado,0) / R0.Aplicado * 100,0) As '% Descuento', (ISNULL(R1.Aplicado,0) / R0.Aplicado) * T1.SumApplied As 'Descuento',

  (ISNULL(R2.Aplicado,0) / R0.Aplicado) * T1.SumApplied As 'Devolución', T1.SumApplied - ((ISNULL(R2.Aplicado,0) / R0.Aplicado) * T1.SumApplied) - (ISNULL(R1.Aplicado,0) / R0.Aplicado) * T1.SumApplied As 'Pagado',

  Case T4.Commission When 0 Then 3 Else T4.Commission End As '% Comisión',

  Case T4.Commission When 0 Then 3 Else T4.Commission End / 100 * (T1.SumApplied - ((ISNULL(R2.Aplicado,0) / R0.Aplicado) * T1.SumApplied) - (ISNULL(R1.Aplicado,0) / R0.Aplicado) * T1.SumApplied) As 'Monto de comisión'

From ORCT T0

  Inner Join RCT2 T1 On T0.DocEntry = T1.DocNum

  Left Join OINV T2 On T1.DocEntry = T2.DocEntry And T1.InvType = 13

  Left Join OSLP T3 On T2.SlpCode = T3.SlpCode

  Left Join (Select T0.DocNum, SUM(T2.DocTotal) 'Total', SUM(T1.SumApplied) 'Aplicado'

  From ORCT T0

  Inner Join RCT2 T1 On T0.DocEntry = T1.DocNum

  Left Join OINV T2 On T1.DocEntry = T2.DocEntry And T1.InvType = 13

  Where T0.DocDate Between [%0] And [%1] And T1.InvType = 13

  Group By T0.DocNum) R0 On T0.DocNum = R0.DocNum

  Left Join (Select T0.DocNum, SUM(T2.DocTotal) 'Total', SUM(T1.SumApplied) 'Aplicado'

  From ORCT T0

  Inner Join RCT2 T1 On T0.DocEntry = T1.DocNum

  Left Join ORIN T2 On T1.DocEntry = T2.DocEntry And T1.InvType = 14

  Where T0.DocDate Between [%0] And [%1] And T1.InvType = 14 And T2.U_Motivo = 4

  Group By T0.DocNum) R1 On T0.DocNum = R1.DocNum

  Left Join (Select T0.DocNum, SUM(T2.DocTotal) 'Total', SUM(T1.SumApplied) 'Aplicado'

  From ORCT T0

  Inner Join RCT2 T1 On T0.DocEntry = T1.DocNum

  Left Join ORIN T2 On T1.DocEntry = T2.DocEntry And T1.InvType = 14

  Where T0.DocDate Between [%0] And [%1] And T1.InvType = 14 And (T2.U_Motivo <> 4 Or T2.U_Motivo Is Null)

  Group By T0.DocNum) R2 On T0.DocNum = R2.DocNum

  Inner Join OCRD T4 On T0.CardCode = T4.CardCode

Where T0.DocDate Between [%0] And [%1] And T1.InvType = 13

Sin emabrgo lo que necesito es algo mas bien parecido a lo de la siguiente screenshot. y que al final de la columna me aparezca cuando esta pendiente de pago..

gerardo_mendez
Active Contributor
0 Kudos

Se me ocurre algo más simple como esto:

SELECT T0.DocEntry, T0.DocNum, T0.DocTotal, T0.PaidToDate, T1.ItemCode, T1.Dscription, T1.Quantity, T1.Price, T1.GrssProfit, T1.LineTotal FROM OINV T0 Inner Join INV1 T1 On T0.DocEntry = T1.DocEntry Where T0.PaidToDate = T0.DocTotal AND T0.DocDate >= [%0] And T0.DocDate <= [%1]

Este query te puede servir como base, ya tu lo puedes adecuar a tus necesidades.

En espera de tus comentarios. Saludos,

Former Member
0 Kudos

Muchas gracias Gerardo.

Si me sirve, solo tendria que agregarle un  un dato, que me aparezca que que característica esta seleccionada en la ficha del producto.

tengo la idea de que seria así el reporte, pero no me lo arroja.

en el screenshot puedes ver a que características me refiero.

para agregarlo segun yo sería así.

Case When t1.QryGroup1 = 'Y' Then 'A' When t1.QryGroup2 = 'Y' Then 'B' When t1.QryGroup3 = 'Y' Then 'C' When t1.QryGroup4 = 'Y' Then 'D' When t1.QryGroup5 = 'Y' Then 'Z' When t1.QryGroup6 = 'Y' Then 'Nuevo' When t1.QryGroup7 = 'Y' Then 'Sobre pedido' When t1.QryGroup8 = 'Y' Then 'Remplazar' Else '-' End As 'Clasificación'

Te agradezco mucho tu apoyo Gerardo.

gerardo_mendez
Active Contributor
0 Kudos

De acuerdo.

Para esto debes agregar la tabla OITM que es la que contiene las propiedades de los artículos:

SELECT T0.DocEntry, T0.DocNum, T0.DocTotal, T0.PaidToDate, T1.ItemCode, T1.Dscription, T1.Quantity, T1.Price, T1.GrssProfit, T1.LineTotal,

Case When T2.QryGroup1 = 'Y' Then 'A' When T2.QryGroup2 = 'Y' Then 'B' When T2.QryGroup3 = 'Y' Then 'C' When T2.QryGroup4 = 'Y' Then 'D' When T2.QryGroup5 = 'Y' Then 'Z' When T2.QryGroup6 = 'Y' Then 'Nuevo' When T2.QryGroup7 = 'Y' Then 'Sobre pedido' When T2.QryGroup8 = 'Y' Then 'Remplazar' Else '-' End As 'Clasificación'

FROM OINV T0 Inner Join INV1 T1 On T0.DocEntry = T1.DocEntry Inner Join OITM T2 On T1.ItemCode = T2.ItemCode Where T0.PaidToDate = T0.DocTotal AND T0.DocDate >= [%0] And T0.DocDate <= [%1]

En espera de tus comentarios. Saludos.

Former Member
0 Kudos

Te agradezco Mucho, ya entiendo porque no me arrojaba el dato.

así como lo  pusiste me queda perfecta.

Te agradezco mucho por tu ayuda.

gerardo_mendez
Active Contributor
0 Kudos

No hay nada que agradecer.

Solo una cosa más, no olvides que el query te arroja todo documento que su importe aplicado sea igual al total del documento, así que, si alguna factura fue cancelada con una nota de crédito, esta también se mostrará en el listado.

Suerte Juan Manuel. Saludos.

Answers (0)