¿Como se usan los menús contextuales en ABAP?

Los menús contextuales (que se muestran al hacer clic derecho sobre un elemento) pueden ser muy útiles, ABAP permite que diseñemos estos menús en tiempo de diseño (estáticos y re-utilizables) o generarlos dinamicamente en tiempo de ejecución (con mayor personalización según el estado del programa, pero poco reutilizables) 

Menús contextuales estáticos.

Veamos primero como crear y utilizar menús contextuales estáticos, para esto vamos a crear un dynpro con dos objetos de texto, a uno le pondremos por nombre TEXTO y al otro NUMERO, no olvidemos crear las variables en el top include para guardar los valores de los textos.

Para definir el menú contextual para el objeto TEXTO, debemos agregar un código en la propiedad ON_CTMENU_ en este caso le pondremos MC_TEXTO.

abap_menu_contextual_1

Ahora vemos a crear un menú contextual haciendo clic derecho en el programa y seleccionando la opción Crear y luego Status Gui.

crear-menu-contextual-02

Y ahora le asignamos un nombre, una descripción y lo marcamos como menú contextual

crear-menu-contextual-03

Ahora hacemos doble clic sobre la descripción del menú y agregamos los elementos que se delegaran en el menú contextual

crear-menu-contextual-opciones

Ahora para utilizar el menú debemos agregar una rutina para controlarlo en el include para inputs, el código deberá verse como este:

FORM on_ctmenu_mc_texto USING l_menu TYPE REF TO cl_ctmenu.

  CALL METHOD l_menu->load_gui_status
    EXPORTING
      program = sy-repid
      status  = 'MENU_CONTEXTUAL'
      menu    = l_menu.
ENDFORM.

Pueden utilizar el código anterior en cualquier programa solo modificando el nombre de la sub rutina sustituyendo mc_texto por el código que utilizaron en su objeto dentro del dynpro (al inicio de este articulo) y el nombre del menú contextual que en este caso fue ‘MENU_CONTEXTUAL’. Si hicimos todos los pasos anteriores ahora al ejecutar el programa veremos nuestro menú al hacer clic derecho sobre el texto.

Menús contextuales dinámicos.

Ahora vamos a crear un menú contextual creado en tiempo de ejecución para esto vamos a seguir todos los pasos del ejemplo anterior omitiendo la parte en la que creamos el menú con sus opciones y vamos a sustituir el código anterior por este otro:

FORM on_ctmenu_mc_numero USING l_menu TYPE REF TO cl_ctmenu.
  "Declarar un objeto de tipo menu
  DATA calculate_menu TYPE REF TO cl_ctmenu.

  "Crear el objeto
  CREATE OBJECT calculate_menu.

  "Agregar una opcion de menu
  CALL METHOD l_menu->add_function
    EXPORTING
      fcode = 'OPCDIN1'
      text  = 'Opc.Dinamica'.

  "Cargar el menu
  CALL METHOD l_menu->add_submenu
    EXPORTING
      menu = calculate_menu
      text = 'Texto menu'.

ENDFORM.
¿Como se usan los menús contextuales en ABAP?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll hacia arriba