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