Si en el artículo de la semana pasada: “WD4A: Atributos del controlador” os enseñaba el manejo de los atributos del controlador, en este artículo vamos a hacer un pequeño resumen de todos los métodos del controlador, sus características y funcionalidades.
En la programación Web Dynpro for ABAP cada controlador tiene un número de métodos predefinidos, que son llamados por el WD Runtime en un orden predefinido. Estos son los llamados métodos HOOK. Todos estos métodos vienen vacíos, y se puede implementar el código que el programador desee.
Métodos comunes
Hay dos métodos que existen en cualquier controlador de una aplicación WD4A. Ya sea el controlador del componente, de una vista, de una ventana o un controlador custom, siempre aparecen y se ejecutan estos dos métodos:
- WDDOINIT: es el método que podríamos denominar como el constructor del controlador. Se ejecuta siempre la primera vez que se accede al controlador, es decir cuando se crea, y solo se ejecuta una vez. Recomendable para inicializaciones.
- WDDOEXIT: es como el destructor de la clase. Se ejecuta siempre que se destruye el objeto del controlador, por ejemplo cuando se cierra un pop-up, o cuando se cierra la ventana del navegador. Se suele utilizar para eliminar bloqueos.
Métodos del component controller
En todos los componentes WD4A existe un controlador propio, que es referenciado en todos los controladores que cuelguen del mismo componente. Este controlador, a parte de los comunes, tiene los siguientes métodos:
- WDDOBEFORENAVIGATION: método que se ejecuta antes de que comience una navegación entre vistas, es decir, cuando algún plug se ha disparado. Se suele utilizar para dar preferencias a los eventos de navegación.
- WDDOPOSTPROCESSING: este método se utiliza para la validación de datos cruzados de componentes. Cuando en un componente se reutilizan otros, es conveniente validar los datos de los componentes reutilizados.
Estos dos métodos tienen como parámetro un booleano llamad IS_CURRENT_ROOT. Como estos métodos se utilizan en todos los controladores de componentes, si estamos reutilizando varios, es necesario saber si el método que se está ejecutando es el que corresponde al propio controlador que está ejecutando la aplicación y no a uno reutilizado. Para ello sirve este parámetro.
Métodos de los controladores de vista
En cada vista que creemos en un componente, podremos utilizar los siguientes métodos hook:
- WDDOBEFOREACTION: Método que se ejecuta antes de que se lance una acción.
- WDDOAFTERACTION: Método que será ejecutado justamente después de que haya finalizado una acción. Si tras la ejecución de varias acciones queremos hacer algo siempre, como puede ser un refresco, conviene programarlo en este método.
- WDDOMODIFYVIEW: Método que sirve para modificar la interfaz de usuario por código.
- WDDOONCONTEXTMENU: Método que permite modificar el menú contextual de la vista mediante código ABAP. Este método es llamado justo antes que el layout sea renderizado y permite acceder a la jerarquía del menú contextual para poder modificarlo en tiempo de ejecución.
Métodos de los controladores de ventana
Para poder mostrar una vista, es necesario que una ventana la albergue para mostrarla a la hora de ejecutar una aplicación. Las ventanas, tienen como métodos predefinidos:
- WDDOONOPEN: es parecido al WDDOINIT, y se ejecuta siempre que se abra la ventana en la aplicación.
- WDDOONCLOSE: similar al WDDOEXIT, se ejecuta siempre que se cierre la ventana.
- HANDLEDEFAULT: este no es un método Hook como tal, pero por defecto está siempre en cualquier ventana que creemos. Es el evento que corresponde al plug por defecto que se crea en la ventana, y se ejecuta siempre que se acceda a la ventana.
Métodos definidos por el programador
Los métodos descritos arriba son los que ya vienen por defecto en los diferentes controladores del componente. A parte de esos, obviamente se pueden crear tantos métodos del controlador como sean necesarios. Lo que hay que tener en cuenta para crear un nuevo método es el tipo de método:
- Method: método normal, que deberá ser llamado utilizando la referencia al controlador (WD_THIS) para que se ejecute.
- Event Handler: este tipo de métodos son los manejadores de eventos, y se ejecutan cuando recogen un evento que se haya lanzado. Por ejemplo al ejecutar una acción o al dispararse un plug. De este tipo se crean automáticamente cuando definimos una acción en el controlador o creamos un inbound plug.
- Supply Function: son los métodos que se ejecutan cuando se intenta leer un nodo que no tiene datos, si en las propiedades del nodo se indica un método de este tipo.
Con este artículo ya tenéis la base para poder implementar vuestros propios métodos del controlador para cualquier aplicación Web Dynpro for Abap.