on 08-02-2013 5:45 AM
Buenas tardes a todos
El cliente necesita, por su política comercial, que no se generen backorders cuando se crean los pedidos, por lo que me han solicitado crear un procedimiento que detenga la generación del pedido e indique el artículo. Se debe considerar que la Cantidad solicitada no sea mayor que la Cantidad en Inventario (On Hand) menos la Cantidad Comprometida (In Commitment). En los foros de SAP he encontrado la siguiente consulta:
IF @object_type='17' AND (@transaction_type='A' or @transaction_type='U')
BEGIN
declare @backorder varchar(100)
set @backorder = (select T0.itemcode from rdr1 T0 inner join oitw T1 on T0.ItemCode = T1.ItemCode where
T0.Quantity > (T1.OnHand - T1.IsCommited) and T0.docentry = @list_of_cols_val_tab_del )
if(@backorder is not null)
begin
set @error = 1
set @error_message = 'El Articulo ' + @backorder + ' excede la cantidad en Existencia'
END
END
Sin embargo, la consulta me detiene el proceso cuando trato de solicitar un artículo cuya disponibilidad es de 1, y en ocasiones detiene el proceso aun y cuando la cantidad es mayor.
Agradezco la ayuda que me puedan dar en este caso, ya que para poder elaborar las ordenes de ventas en estos casos debo proceder a suspender el SP.
Gracias por su colaboración
Carlos Ramirez
Hola Carlos, Intenta con la Sentencia Top 1,
IF @object_type='17' AND (@transaction_type='A' or @transaction_type='U')
BEGIN
declare @backorder varchar(100)
set @backorder = (select Top 1 T0.itemcode from rdr1 T0 inner join oitw T1 on T0.ItemCode = T1.ItemCode
where T0.Quantity > (T1.OnHand - T1.IsCommited) and T0.docentry = @list_of_cols_val_tab_del )
if(@backorder is not null)
begin
set @error = 1
set @error_message = 'El Articulo ' + @backorder + ' excede la cantidad en Existencia'
END
END
Si no te funciona intenta asi:
IF @transaction_type IN ('A','U') AND @object_type = '17' -- orden de venta
Begin
Declare @count11 as INT
Declare @item11 as nvarchar (100)
Set @count11 = (SELECT count(*) FROM rdr1 T0 inner join oitw t1 on t0.itemcode=t1.itemcode where T0.Quantity > (T1.OnHand - T1.IsCommited) and T0.docentry =@list_of_cols_val_tab_del)
Set @item11 = (SELECT TOP 1 T0.ItemCode FROM rdr1 T0 inner join oitw t1 on t0.itemcode=t1.itemcode
where T0.Quantity > (T1.OnHand - T1.IsCommited) and T0.docentry =@list_of_cols_val_tab_del)
If @count11 >=1
begin
Set @error = 141
Set @error_message = 'El Articulo '+@item11+' excede la cantidad en Existencia'
end
End
Saludos
Alessandro.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Gracias por la respuesta, ha sido de bastante ayuda.
Sin embargo, pude resolver a través de un Campo de Usuario donde coloqué una Búsqueda formateada para calcular la Cantidad Disponible y comparar en la consulta directamente contra este campo.
Muchas gracias nuevamente por la colaboración.
Saludos
Carlos
User | Count |
---|---|
110 | |
12 | |
11 | |
6 | |
5 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.