Query Explosion de Materiales

Buenas tardes comunidad…

Necesito de su ayuda para terminar un reporte de explosión de materiales. No soy un experto ni mucho menos en SQL como lo podrán ver en el código que coloco mas abajo, el reporte en sí ya funciona. Que hace?, bueno el usuario coloca ciertos productos con la cantidad que quiere producir de esos productos y el reporte le indica cuanto debe abastecer, en base a las listas de materiales.

El detalle y he aquí donde necesito de sus conocimientos. Declare 15 variables que son el máximo de producción diario, pero son el MÁXIMO, es decir, no siempre se trabaja al máximo, a veces solo se utilizaran 12 de las variables o 10 o 5, etc.

En SQL basta con poner ‘’ y corre el SP, pero en SAP me obliga a llenar siempre todas las variables… ¿Como puedo hacer para que el reporte pueda correr sin la necesidad de llenar todas las variables? o mejor dicho, que debería tener mi código…

Se los agradezco…

ALTER PROC [dbo].[sp_repAbastecimiento] (

@psProducto1  nvarchar(20),   @psProducto2 nvarchar(20),   @psProducto3 nvarchar(20),  @psProducto4 nvarchar(20),
@psProducto5  nvarchar(20),   @psProducto6 nvarchar(20),   @psProducto7 nvarchar(20),  @psProducto8 nvarchar(20),
@psProducto9  nvarchar(20),  @psProducto10 nvarchar(20),  @psProducto11 nvarchar(20), @psProducto12 nvarchar(20), 
@psProducto13 nvarchar(20),  @psProducto14 nvarchar(20),  @psProducto15 nvarchar(20),
 
@psCantidad1  int,  @psCantidad2 int,  @psCantidad3 int,  @psCantidad4 int,  @psCantidad5 int, 
@psCantidad6  int,  @psCantidad7 int,  @psCantidad8 int,  @psCantidad9 int,  @psCantidad10 int, 
@psCantidad11 int,  @psCantidad12 int, @psCantidad13 int, @psCantidad14 int, @psCantidad15 int)

AS BEGIN 
select ItemCode, SUM(OnHand) Disponible, SUM(OnOrder) Ordenes, SUM(IsCommited) Comprometido, 
       (SUM(OnHand) + SUM(OnOrder)) - SUM(IsCommited) AS Existencia 
	   INTO #TEMP_ABA01
from OITW where  
WhsCode IN ('MG','TALLERES') 
group by  ItemCode 

select R0.Father, R0.Code, R0.Quantity, R1.Existencia
INTO #TEMP_ABA02
FROM ITT1 R0 INNER JOIN #TEMP_ABA01 R1 ON R0.Code = R1.ItemCode  
WHERE R0.Father IN (@psProducto1 ,@psProducto2, @psProducto3, @psProducto4, @psProducto5,
                    @psProducto6, @psProducto7, @psProducto8, @psProducto9, @psProducto10,
					@psProducto11,@psProducto12,@psProducto13,@psProducto14,@psProducto15)
ORDER BY R0.Father

SELECT Father, Code, Quantity 'Cantidad Necesaria x Pieza', Existencia,  
       case  when Father = @psProducto1 THEN @psCantidad1 * Quantity 
	     When Father = @psProducto2 THEN @psCantidad2 * Quantity When Father = @psProducto3 THEN @psCantidad3 * Quantity
		 When Father = @psProducto4 THEN @psCantidad4 * Quantity When Father = @psProducto5 THEN @psCantidad5 * Quantity
		 When Father = @psProducto6 THEN @psCantidad7 * Quantity When Father = @psProducto7 THEN @psCantidad3 * Quantity
		 When Father =  @psProducto8 THEN @psCantidad8 * Quantity When Father = @psProducto9 THEN @psCantidad9 * Quantity
		 When Father = @psProducto10 THEN @psCantidad10 * Quantity When Father = @psProducto11 THEN @psCantidad11 * Quantity 
		 When Father = @psProducto12 THEN @psCantidad12 * Quantity When Father = @psProducto13 THEN @psCantidad13 * Quantity 
		 When Father = @psProducto14 THEN @psCantidad14 * Quantity When Father = @psProducto15 THEN @psCantidad15 * Quantity 
		 END AS 'Cantidad Total'
		 INTO #TEMP_ABA03
	   FROM #TEMP_ABA02
ORDER BY Father


SELECT Father 'Articulo Superior', Code 'Detalle de Receta', [Cantidad Necesaria x Pieza], Existencia, 
[Cantidad Total], [Cantidad Total] - Existencia AS 'Cantidad a Abastecer'
INTO #TEMP_ABA04
FROM #TEMP_ABA03
ORDER BY Father

SELECT  [Detalle de Receta] 'Producto', Existencia, SUM([Cantidad a Abastecer]) 'Cantidad a Abastecer' 
        FROM #TEMP_ABA04
        GROUP BY [Detalle de Receta], Existencia 

END
GO

Hola @Diego_RS, voy a reclasificar tu tema, se refiere a SAP Business One, no a SAP BO (esto es SAP Business Object).
Para ayudarte mejor muéstranos como estas llamando al SP desde SAP.

Saludos,

Buenas tardes

Para ser honesto lo estaba colocando en un reporte de Crystal Reports, ahora, intentando ejecutarlo desde el query manager, mi duda es como voy a colocar la variable de cantidad, ya que es un variable que no esta en ninguna tabla, es un dato “nuevo” que ingresa el usuario, aca la consulta:

/*SELECT FROM [dbo].[ITT1] T0*/
DECLARE @psProducto1 AS nvarchar
/* WHERE */
SET @psProducto1 = /* T0.Father */ '[%0]'

/*SELECT FROM [dbo].[ITT1] T0*/
DECLARE @psProducto2 AS nvarchar
/* WHERE */
SET @psProducto2 = /* T0.Father */ '[%1]'

/*SELECT FROM [dbo].[ITT1] T0*/
DECLARE @psProducto3 AS nvarchar
/* WHERE */
SET @psProducto3 = /* T0.Father */ '[%2]'

DECLARE @psCantidad1 AS int
SET @psCantidad1 =  '[%3]'      --------------------- Como  coloco esta variable ?

puedes buscar un campo parecido de cantidad en cualquier otra tabla, como la INV1 por ejemplo.
respecto a la solicitud en el query manager, te exige que pongas valor en todos los parametros?? grlte no es asi.
Si el problema solo es en crystal, podrias editar esos parametros y colocarle valores por defecto, como ‘’

1 me gusta

Gracias ya lo intente, solo que no se a bien como colocarlo.

Intente ponerlo en el cuadro de hasta abajo, donde dice Opciones de Valor, en la opción, Valor predeterminado pero no se si este en lo correcto. Me podrias indicar si es que lo he colocado bien.

Que tal Willy,

Te comento que ya me permitió correrlo en SAP.

Al final lo coloque en Crystal Reports, solo que cuando selecciono los parámetros en SAP, tengo que colocar el ’ ’ para las variables nvarchar y un 0 para los numéricos cuando no voy a requerir todas las 6 variables.

Sabes si hay modo de que el 0 o las ’ ’ te aparezcan ya en el campo de texto por default.

Saludos

ayuda%20sap%20explosion%202

Probaste colocar un valor predeterminado en Crystal para esos parametros?

ya lo intente asi pero no lo guarda en SAP, solo en crystal reports, pero supongo que asi lo dejare, respecto al query manager, hizo lo que comentabas de buscar una tabla como INV1 con la variable de cantidad aunque no fuera de esa tabla y si funciono.

Solamente la duda es, si al hacer eso, no afecta a la tabla INV1, es decir que se modifique la cantidad de mi base, en tabla INV1 cuando coloco de esa manera la consulta.

/*SELECT FROM [dbo].[INV1] T1*/
DECLARE @psCantidad1 AS nvarchar
/* WHERE */
SET @psCantidad1 = /* T1.Quantity */ '[%6]'

No hay problema, no modifica nada, solo lo usa de referencia

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.