Ayuda SAP

TN - No se puede actualizar Ordenes de ventas

#1

Buen dia

Amigos …

Alguien que me pueda ayudar con el siguiente TN requiero solo un usuario pueda modificar las ordenes de venta pero este bloquea a todos

Agradezco su apoyo

IF @transaction_type = ‘U’ and @object_type = ‘17’

BEGIN

SET @error = 900001

SET @error_message = ‘No puede actualizar un Pedido ya creado’

END

0 me gusta

#2

Hola, necesitas definir una variable con el ID del usuario que requieres que modifique el documento, después de eso le colocas la condición para que si el ID es diferente no le permita crearlo.

3 me gusta

#3

En la tabla ORDR tienes 2 campos que guardan el codigo de usuario:

  • UserSign: usuario creador
  • UserSign2: usuario que hace update

como indica @Mike1, guardas el campo UserSign2 en una variable, (Ej. @usuario) y agregas a la condicionante:

IF @transaction_type = ‘U’ and @object_type = ‘17’ and @usuario<>‘00’

Saludos,

4 me gusta

#4

Así como lo planteas @Willy_Caldero creo que la validación solo aplicará para @usuario=‘00’ debería ser “<>”, no ?

Saludos.

2 me gusta

#5

Tienes razon, lo corrijo.

0 me gusta

#7

Buen dia

dejenme ver si entendi quedaria asi ya lista ?? soy nuevo en esto de los TN o debo agregar algo despues del Begin

IF @transaction_type = ‘U’ and @object_type = ‘17’ and @usuario<>‘usua25’

BEGIN

SET @error = 900001

SET @error_message = ‘No puede actualizar un Pedido ya creado’

END

O ASI

IF @transaction_type = ‘U’ and @object_type = ‘17’

BEGIN

Declare @usuario Int

Set @usuario = (Select T0.UserSing2 From ORDR T0 Where T0.DocEntry = @list_of_cols_val_tab_del)

If @usuario <>‘USUA25’

begin

SET @error = 900001

SET @error_message = ‘No puede actualizar un Pedido ya creado’

END

1 me gusta

#8

Es tal cual lo planteo Willy

Declare @usuario int 


IF @transaction_type = 'U' and @object_type = '17' and @usuario <> '1' --"El user id del usuario que si podrá actualizar OV" 
-- Puedes saber cual es su ID con una consulta 
-- SELECT T0.USERID,T0.U_NAME FROM OUSR T0  
set @usuario = '1'
SET @error = 900001
SET @error_message = 'No puede actualizar un Pedido ya creado'
END

Saludos.

1 me gusta

#9

buenas tardes

lo probé tal cual y pasan las actualizaciones por el usuario 1

Declare @usuario int

IF @transaction_type = ‘U’ and @object_type = ‘17’ and @usuario <> ‘1’ --“El user id del usuario que si podrá actualizar OV”
– Puedes saber cual es su ID con una consulta
– SELECT T0.USERID,T0.U_NAME FROM OUSR T0
set @usuario = ‘1’
SET @error = 900001
SET @error_message = ‘No puede actualizar un Pedido ya creado’
END

0 me gusta

#10

Eso es lo que necesitabas, no ??

Normalmente el usuario 1 es “manager”

0 me gusta

#11

perdón si , remplace el 1 por el 2 que es otro usuario y me deja actualizar con el 1 que es el manager

0 me gusta

#12

Como no entendí, te funciono la consulta o está dejando pasar a todos los usuarios ??, en teoría solo debería dejar actualizar al que es el ID que ahi le indicas.

Saludos.

0 me gusta

#13

Deja pasar a todos los usuarios , yo utilizo el 1 que es el manager en la consulta coloque el 2 para que me arrojara el bloqueo a mi pero deja actualizar

0 me gusta

#14

En breve te comparto uno que me funciona. Sql o Hana?

0 me gusta

#15

SQL amigo te los agradeceria

Saludos

0 me gusta

#16

Valida esto, espero sea entendible.

IF @object_type = '13' AND  @transaction_type IN ('A')
BEGIN
    
    --Aqui lees el usuario que esta trabajando.	
    SET @User= (Select top 1 UserCode from USR5 where SessionID=@@spid order by Date desc,Time desc)


  --Dependiendo tus necesidades, cambias la logica
  IF    @User not in( 'JULIAN','JCHAVEZ')
  BEGIN

	<<TU CODIGO CON LO QUE DESEAS HACER>>>



	IF  <<validacion para cuando bloquee>>
	BEGIN
			SET @error = 3
			SET @error_message = 'JC1- USUARIO BLOQUEADO' 
	END
  END
END
0 me gusta

#17

En la consulta anterior no preguntamos quien es el usuario que actualiza, por eso no se hacia la validación, de esta manera funcionará:

Declare @usuario int 

If @transaction_type = 'U' and @object_type = '17'  
Select @usuario = T0.UserSign2
    from ORDR T0
    where T0.DocEntry = @list_of_cols_val_tab_del
  if ( @usuario <>'1')
Begin
  Set @error = 900001
  Set @error_message = 'No puede actualizar un Pedido ya creado'
 end 

La lógica es, si se realiza una actualización U al documento de orden de venta 17, selecciona el usuario que actualiza UserSign2 del documento que está en memoria DocEntry = @list_of_cols_val_tab_del , si el usuario no es manager <> muestra el error.

Saludos

1 me gusta

cerrado #18

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.

0 me gusta