cancel
Showing results for 
Search instead for 
Did you mean: 

Ingresos de Mercadería Basado en Orden de Compra

Former Member
0 Kudos

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.

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

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

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

Former Member
0 Kudos

Estimado Felipe:

Muchas gracias por responder, pero soy aun novato en SAP, me puedes decir donde implementar la solución que me brindaste.

Agradecido desde ya.

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

Former Member
0 Kudos

Gracias Felipe, si soy usuario intermedio de SQL SERVER, y si, tambien primero hago todo en ambiente de prueba, pero no sabía en que SP tenía que implementar esto, lo pruebo de inmediato y te comento, muchas gracias.

Former Member
0 Kudos

Felipe, no funciona, cuando modifico una cantidad por un valor mayor o menor, me sale un error de un articulo que no existe en la OC :$, y mas aun, cuando quiero recepcionar la OC sin hacer modificaciones tampoco me deja y sigue haciendo referencia a ese articulo que no existe en la OC.

felipe_loyolarodriguez
Active Contributor
0 Kudos

¿Podrías dejar una imagen de lo que estas haciendo?

Porque a mi me bloqueo la creación de una Entrada de mercaderías que viene de una OC cuando la cantidad es mayor a cantidad abierta de la OC.

Saludos

Former Member
0 Kudos

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

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Es bien raro, haré unas pruebas y te cuento.