Ayuda SAP

Transaction Notification en Transferencia de stock

Hola buenas tardes, alguien me podría apoyar de favor, resulta que necesito elaborar un Transaction Notification aplicado a las Transferencias de Stock, con las siguiente condiciones.
1.- Si el texto del campo JrnlMemo es igual a ‘Traslados -’ ( o sea el texto que da por default), sea reemplazado por el texto que tenga en campo Comments.
2.- Pero si JrnlMemo es diferente del texto del campo Comments, me permita conservar ambos.
Ya logre general un TN que me indique que ambos campos no coinciden o que el campos JrnlMemo indique si tiene el texto por default y ya logre generar un TN que me haga el traslado de la info de Comments a JrnlMemo.

Con anticipación agradezco su ayuda.

IF  @object_type in ('67') AND @transaction_type IN ('A','U')
BEGIN
IF
(SELECT T0.Comments FROM OWTR T0 WHERE T0.DocEntry=@list_of_cols_val_tab_del) <>
(SELECT T0.JrnlMemo FROM OWTR T0 WHERE T0.DocEntry=@list_of_cols_val_tab_del) 


IF EXISTS 
(SELECT 'X' FROM OWTR WHERE JrnlMemo = 'Traslados -')
BEGIN
UPDATE OWTR
        SET JrnlMemo = (SELECT LEFT (T2.Comments, 50)
                             FROM OWTR T2
                             WHERE T2.DocEntry = @list_of_cols_val_tab_del)
    WHERE TransId = (SELECT Z.TransId FROM OWTR Z WHERE Z.DocEntry = @list_of_cols_val_tab_del)
END
END

wuuuut no se que tan seguro sea hacer un update a la tabla de SAP, te recomiendo revisar un poco mejor la logica, despues de leer mas de 1 vez lo que intenta hacer aun lo logro comprenderlo, pero medio me doy una idea y considero que seria mejor hacer una FS que haga una concatenacion de ambos campos si se cumple y lo coloque en ese campo que dices y si no son iguales te ponga el otro campo que dices.

2 Me gusta

Es verdad que muchas veces los requerimientos de los clientes nos llevan a estar interviniendo la BD, sin embargo es una practica que no se debe realizar, sólo por el simple hecho que viola el contrato de licencias, la mejor manera es usar las herramientas que nos brinda SAP para ello, el SDK o B1if.

if  @object_type in ('67') AND @transaction_type IN ('A','U')
begin

	declare @comments nvarchar(1000) = (select T0.Comments FROM OWTR T0 WHERE T0.DocEntry=@list_of_cols_val_tab_del)
	declare @jrnl nvarchar(1000) = (select T0.JrnlMemo FROM OWTR T0 WHERE T0.DocEntry=@list_of_cols_val_tab_del)
	
	if @jrnl like '%Traslados -%' and @jrnl=@comments 
	begin		
		UPDATE OWTR SET JrnlMemo = LEFT (@comments, 50) WHERE DocEntry = @list_of_cols_val_tab_del	
	end
end

Adicionalmente, colocar este tipo de codigo en el Transaction está mal,
El Transaction Notification sirve para detener transacciones.
En el caso que quieras realizar un update como en este caso, debes colocar el procedimiento en el POST Transaction Notice

Atte

1 me gusta

Definitivamente muy mala idea hacer update de tablas standar, nada recomendable, y mas si lo que requieres probablemente se soluciona con una busqueda formateada. El JMMemo de traslados se pasa desde el documento de traslado, en la pestaña anexos, el campo comentarios es el que deberias colocar una BF, y en el peor de los casos colocas un control para que no deje grabar con el texto por defecto.

1 me gusta

Hola después de analizarlo , al fin me quedo… en si estoy trabajando en una base de pruebas.
Gracias por el apoyo a todos los que se tomaron un tiempo para ayudarme.
(Igual de repente tengo dudas con la instrucción Update, ya que tengo entendido que no debe aplicarse en tablas o campos nativos)
lo deje del siguiente modo.

IF  @object_type in ('67') AND @transaction_type IN ('A','U')
BEGIN
IF
(SELECT T0.JrnlMemo FROM OWTR T0 WHERE T0.DocEntry=@list_of_cols_val_tab_del) = 'Traslados -'
        
BEGIN
UPDATE OWTR
        SET JrnlMemo = (SELECT LEFT (T2.Comments, 50)
                             FROM OWTR T2
                             WHERE T2.DocEntry = @list_of_cols_val_tab_del)
    WHERE TransId = (SELECT Z.TransId FROM OWTR Z WHERE Z.DocEntry = @list_of_cols_val_tab_del)
END
END