on 08-13-2012 11:32 PM
Estimados:
Como puedo hacer para que al hacer un ingreso de una OC no me permita modificar las cantidades por valores superiores a la OC o al saldo pendiente de ese producto??, puedo hacer la OC por ejemplo 2 Piñatas, pero al momento de hacer el ingreso, puedo hacerlo por la cantidad que yo desee, necesito poder controlar esto por favor.
Agradecido desde Ya.
Hola Felipe hice las pruebas en mi base y solo afecta mi primer articulo,
como puedo hacer que me afecte a todo mi documento?
Gracias de verdad me ayudarías un buen con este Transaction.
Saludos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Buenos días
Con este Transaction puedes validar eso.
IF @object_type=20 AND @transaction_type='A'
BEGIN
DECLARE
@Item NVARCHAR(20)
SET @Item = ( SELECT TOP 1 T1.ItemCode
FROM OPDN T0
INNER JOIN PDN1 T1 ON T1.DocEntry=T0.DocEntry
WHERE T1.Quantity>ISNULL((SELECT Y1.OpenQty FROM POR1 Y1 WHERE Y1.LineNum=T1.BaseLine AND Y1.DocEntry=T1.BaseEntry),0)
)
IF @Item IS NOT NULL
BEGIN
SELECT @error=777, @error_message='Cantidad de articulo ' + @Item + ' sobrepasa cantidad pendiente en OC'
END
END
Saludos
Felipe
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hola Marco, bueno en ese caso te explico un poco
El TransactionNotification es un procedimiento almacenado en la base de datos. Los consultores lo utilizan para validar el ingreso de datos dentro del sistema de SAP con un simple método de verificación que es la variable "@error", por defecto la variable tiene un valor 0 por lo tanto cuando ejecutas la validación y esta se cumple le asignas un valor numérico distinto a 0 a la variable @error y un mensaje a la variable @error_message para que se muestre en la pantalla de SAP.
Para agregar un nuevo TransactionNotification:
1.- Debes estar en el servidor o acceder a las bases de datos desde el SQL Management Studio.
2.- Debes ir a la ruta DataBases (bases de datos) / Tu base de datos / Programability (Programacion) / Stored Procedures (Procedimientos almacenados) / SBO_SP_TransactionNotification (click derecho-->Modificar).
3.- Veras una ventana así:
Debes copiar todo el codigo y pegarlo debajo de donde dice ADD YOU CODE HERE, y quedará asi
Luego presionas Execute o Ejecutar y vas a SAP a validar que bloquee la transacción correctamente
ES DE SUMA IMPORTANCIA RECORDAR QUE ESTO LO DEBE HACER UNA PERSONA QUE TENGA CONOCIMIENTOS MINIMOS DE SQL SERVER Y T-SQL. COMO PUEDE SER EL DBA DE LA EMPRESA O EL ENCARGADO DE SAP. ADEMAS ESTO SE DEBE REALIZAR SIEMPRE EN UNA BASE DE PRUEBAS ANTES DE ENTRAR EN LA PRODUCTIVA.
Saludos
Felipe
Mira, aqui inserte el SP tal como me dijiste:
veo la OC
Hago el ingreso de mercaderia sin modificar nada
Le doy crear y el sistema muestra:
Como puedes ver, hace referencia a un articulo que NO esta en la OC, si vario las cantidades a menos o mas, arroja el mismo error, haciendo referencia al mismo articulo.
Nuevamente muchas gracias
Cambia el código SQL por este, se me olvido agregar algo básico.
IF @object_type=20 AND @transaction_type='A'
BEGIN
DECLARE
@Item NVARCHAR(20)
SET @Item = ( SELECT TOP 1 T1.ItemCode
FROM OPDN T0
INNER JOIN PDN1 T1 ON T1.DocEntry=T0.DocEntry
WHERE T0.DocEntry=@list_of_cols_val_tab_del AND T1.Quantity>ISNULL((SELECT Y1.OpenQty FROM POR1 Y1 WHERE Y1.LineNum=T1.BaseLine AND Y1.DocEntry=T1.BaseEntry),0)
)
IF @Item IS NOT NULL
BEGIN
SELECT @error=777, @error_message='Cantidad de articulo ' + @Item + ' sobrepasa cantidad pendiente en OC'
END
END
Ahora debería funcionar.
Saludos
Esimado Felipe:
Funciono bien pero solo la primera vez, de los 100 globos de la primera linea de la Oc quise ingresar 200, el sistema no me dejó, hice el ingreso por 50 y lo realizó de forma correcta, luego quise hacer un ingreso mas por los otros 50 globos, y no me deja ingresar ni los 50, ni cantidades menores, ni ningun otro producto, ni ninguna otra OC.
User | Count |
---|---|
95 | |
11 | |
11 | |
6 | |
6 | |
4 | |
3 | |
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.