on 08-06-2010 1:53 AM
Buenas noches
Quiero ver si alguien sabe como puedo saber si un artículo está duplicado en otro renglón de una orden de venta antes de cerrarla. EL escenario es que yo solamente surto de una bodega pero la gente de ventas al capturar puede duplicar un artículo sin darse cuenta y el stock puede fallar pues SAP lo evalúa hasta que se hace la entrega.
¿Alguna sugerencia?
Gracias
Podrias meter una validacion por TransactionNotification que se encarge de contar articulos duplicados y si te devuelve algun valor entonces mande un error
if (@Object_type in ('17') and @transaction_type in('A')) OR (@Object_type in ('17')
and @transaction_type in('U'))
begin
declare @duplicado as nvarchar(8)
set @duplicado = (select max(T0.itemcode) FROM RDR1 T0 INNER JOIN ORDR T1 ON T0.DocEntry = T1.DocEntry
WHERE T0.DocEntry = @list_of_cols_val_tab_del)
IF len( @duplicado)<> 0
begin
SET @error = 1
SET @error_message = ('ERROR existe uno o mas items repetidos en su orden de venta ' + @duplicado )
end
end
De esta forma cuando mande el error te mandara tambien el itemcode que encontro duplicado hasta que no encuentre mas.
Espero te sirva
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Muy interesante y util tu solucion tenia una consulta:
Una vez que grabo ese store procedure y lo pruebo en SAP abro una orden e intento ingresar un articulo repetido saldria un mensaje en pantalla que indicaria la duplicidad?
Mi consulta es la siguiente este mismo Store Procedure podria generarse por ejemplo para una factura, boleta, nota, etc.
Solo se podria realizar este store a un solo documento o se puede realizar a varios como por ejemplo una factura y boleta
Muchas gracias
Saludos
Luis
Lo modifiqué porqué me marcaba error incluso si no había duplicados. Esta es la nueva consulta y ya la probé y funciona bine.
if (@Object_type in ('17') and @transaction_type in('A')) OR (@Object_type in ('17')
and @transaction_type in('U'))
begin
declare @duplicado as nvarchar(8)
set @duplicado = (SELECT COUNT(T0.ItemCOde) FROM RDR1 T0 INNER JOIN ORDR T1 ON T0.DocEntry = T1.DocEntry
WHERE T0.DocEntry = @list_of_cols_val_tab_del GROUP BY (T0.ItemCode) HAVING ( COUNT(T0.ItemCode) > 1 ))
IF len( @duplicado)> 0
begin
SET @error = 1
SET @error_message = ('ERROR existe uno o mas items repetidos en orden de venta ')
end
end
Me ayudaste mucho gracias
¿Me puedes ayudar a instalar la query?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Claro, mira primero todo esto pruebalo en un ambiente de pruebas
Desde el SQL Management Studio, abre tu base y en Programacion, Procedimientos Almacenados, debes ubicar uno de nombre SBO_SP_TransactionNotification
Dale clic derecho y seleccionas MODIFICAR
Esto abrira tu codigo en forma de ALTER PROCEDURE SBO_SP_TransactionNotification
Busca una linea en el codigo que dice
ADD YOUR CODE HERE
Debajo de esta es donde debes colocar el codigo que te puse arriba.
Una vez hecho esto Presiona F5 o clic en el boton Ejecutar y entonces te actualizara el procedimiento.
Ejectuta tus pruebas desde SBO
Cuentanos como te va!
User | Count |
---|---|
100 | |
11 | |
11 | |
6 | |
6 | |
5 | |
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.