Ocultar elemento de Menu SAP en Trx MB11

Buen dia a todos!!

Gracias de antemano a todos por la ayuda.

Tengo un inconveniente con la transaccion MB11. El menu que muestro a continuacion

Ese menú quisiera ocultarlo de todas la transacciones MB* dado que por una validación que se tiene, únicamente debería de registrar movimientos manuales ciertas clases. La validación funciona s en la parte de abajo se digita la Clase de mov pero si es llamado desde este menú… Levanta un mensaje estandard “W” y la validación la omite.

No me queda de otra que ocultar ese menú para todos los usuarios, pero no tengo idea de como.

Podría alguien orientarme si es factible o si ven algún otro medio por el que se pudiera limitar esto.

Talvez algún colega de @Materiales me podría orientar.

De antemano,muy agradecido con todos.
Saludos,

1 me gusta

Qué valoración tienes hecha? Puedes pasar el código del exit aquí?
Porque no tiene sentido de que valide clase de movimiento, y cuando el usuario va por el menú salte la validación. Si valida clase de movimiento, debería validar igual si el usuario va por el menú, ya que ese menú lo que hace realmente es poner clases de movimientos.

Por favor, pega el código en formato texto, no hagas capturas de imagen para pasar el exit.

Gracias SidV

El programa que se esta utilizando es este: LZGREXITSU01

Es este Field Exit: FIELD_EXIT_BWARTWA

La progra es la siguiente:

DATA:     lt_dynpfields TYPE dynpread OCCURS 0 WITH HEADER LINE.
Tables: zmov_aut.

DATA: vl_bwartwa TYPE bwartwa.


IF Sy-Cprog = 'SAPMM07M' and ( Input+0(1) = 'Y' or Input+0(1) = 'S' or
                               Input+0(1) = 'P' or Input+0(1) = 'Z' or
( Input = '631' or Input = '632'  ) or
( Input = '561' or Input = '562'  ) or
( Input = '511' or Input = '512'  ) or
( Input = '901' or Input = '902'  ) or
( Input = '315' or Input = '316'  ) or
( Input = '343' or Input = '344'  ) or
( Input = '309' or Input = '310'  ) or
( Input = '301' or Input = '302'  ) or
( Input = '241' or Input = '242'  ) or
( Input = '931' or Input = '932'  ) or
( Input = '915' or Input = '916'  ) or
( Input = '621' or Input = '622'  ) ).


 lt_dynpfields-fieldname = 'RM07M-WERKS'.
 APPEND lt_dynpfields.
 CALL FUNCTION 'DYNP_VALUES_READ'
         EXPORTING
             dyname               = 'SAPMM07M'
             dynumb               = '0400'
         TABLES
              dynpfields           = lt_dynpfields
         EXCEPTIONS
              invalid_abapworkarea = 1
              invalid_dynprofield  = 2
              invalid_dynproname   = 3
              invalid_dynpronummer = 4
              invalid_request      = 5
              no_fielddescription  = 6
              invalid_parameter    = 7
              undefind_error       = 8
              double_conversion    = 9
              stepl_not_found      = 10
              OTHERS               = 11.


*CASE INPUT.
*WHEN 'Y19' or 'Y20' OR 'Y51' OR 'Y52'.
*ENDCASE.

Loop at lt_dynpfields.
  Select single * from zmov_aut where movimiento = input and centro = lt_dynpfields-FIELDVALUE and usuario = sy-uname.
*   If sy-subrc <> 0 and lt_dynpfields-FIELDVALUE+1(1) <> 'L' and lt_dynpfields-FIELDVALUE+1(1) <> 'S'.
    If sy-subrc <> 0 and lt_dynpfields-FIELDVALUE+1(1) <> 'S'.
      MESSAGE ID 'ZEXIT' TYPE 'E' NUMBER '028' WITH INPUT.
    EndIf.
  EndLoop.
EndIf.

IF sy-cprog = 'SAPMM07M'.

  vl_bwartwa = input.
  DELETE FROM MEMORY ID 'MOV'.
  EXPORT vl_bwartwa TO MEMORY ID 'MOV'.

ENDIF.

ENDFUNCTION.

Gracias por la ayuda y comentarios al respecto.
Saludos,

1 me gusta

No soy de @abapers pero seguro ellos podrán ver esta validación Z.

Más alla de eso, para ocultar elemento proba usar la transacción SHD0.

Hola,
¿has puesto un break-point en la validación y no se para?

Estare pendiente del tema, porque soy abap y nunca me ha tocado deshabilitar un campo de la barra de menu. Como no lo he hecho, yo diria que esto, si es que hubiese posibilidad, seria basis. Pero repito, nunca he hecho algo asi !! voy a estar pendiente porque se ve interesante

únicamente debería de registrar movimientos manuales ciertas clases.

¿por qué no haces roles sólo con esas clases?

no veo la diferencia que indicas con “manual” o desde el menú, si las clases de movimientos son las mismas.
puede que no te haya entendido bien el problema.

Hola Salco,

En efecto, le he colocado un Break pero no pasa por el punto, solo pasa cuando se digital en el campo Clase de Mov.

1 me gusta

Hola Squall,

La diferencia como lo comentaba arriba es que si ves el codigo… hay una tabla Z que gobierna eso… ZMOV_AUT. Si bien es cierto hay movimientos ya estipulados… se creoes tabla que la gobierna Soc—Usuario—Clase Mov para aumentar su potencial. Pero solo esta aplicando cuando lo digitas y no cuando lo llamas desde ese menu.

Parece un comportamiento anormal, el hecho que si se digita la clase de movimiento salte la validación (y no el mensaje W) pero si se accede desde otro lado haga lo contrario.

por lo que entiendo se debería crear un grupo de autorización a esa tabla y así es como lo controlas a través de permisos

Probaste la SHD0 que te recomendé?
Con esa transaccion puedes grisar todo el menú.
Incluso podrías crear una transacción denominada ZMB11 y darle a “x” usuarios, para que solo ellos no puedan ver ese menú. :slight_smile:

2 Me gusta

Hola Sidv tendrías algún manual de como se puede realizar este proceso en la Tx SHD0 gracias

un post fue trasladado a un nuevo tema: Cómo excluir elemento del menú SAP en trcode

@SidV espero se pueda agregar este link, si no sientete en toda confianza de darle cranck :laughing:
h_tps://sap_ricks.wordpress.com/2011/05/22/_ruco-13-_ransacciones-personalizadas-con-las-variantes-de-_ransaccion-shdo/

cambiar las _ por “t”.

Saludos.

Haz intentado en lugar de hacer un field exit, aplicar alguna BADI para controlar cuando graban el documento no permita?

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