La reutilización de componentes es un aspecto fundamental de la programación, de manera que elementos que creas una vez para una aplicación, puedas volver a usarlos en otra sin tener que reprogramarlos o copiarlos. En el siguiente artículo veremos cómo reutilizar un componente Web Dynpro, ya sea estándar o zeta.
Un componente Web Dynpro encapsula diferentes elementos de manera que puedan ser reutilizados por otros componentes Web Dynpro. Ejemplos de elementos estándar que se suelen reutilizar son: WDR_OVS para ayudas OVS, WDR_MESSAGE_AREA para mostrar mensajes, SALV_WD_TABLE para ALVs, o WDR_SELECT_OPTIONS para definir select options en Web Dynpro.
1. Declarar componente Web Dynpro ABAP a reutilizar
Si un componente (padre) necesita acceder a la funcionalidad de otro componente (hijo) para reutilizarla, el primero tiene que declarar el uso del segundo. Esto se realiza en la pestaña Componentes Usados en las propiedades del componente Web Dynpro tal y como se puede ver en la imagen mostrada al inicio del artículo.
En la segunda columna escribiremos el nombre del componente Web Dynpro a reutilizar en el padre. El nombre introducido en la primera columna será un alias que será usado cuando queramos usar métodos o vistas del hijo.
2. Referenciar componente Web Dynpro en controlador
Una vez declarado el hijo en el componente padre, también habrá que referenciar el componente Web Dynpro ABAP en el controlador donde se quieran usar las funcionalidades del hijo. Para ello, en la pestaña de propiedades del controlador volveremos a referenciar al hijo:
Por ejemplo si queremos usar un ALV en una vista, haremos esa referencia en su controlador. Si nos fijamos, todos los controladores de un componente tienen referenciado el component controller del propio componente.
Ahora en este controlador, podríamos llamar a métodos de la interfaz del componente Web Dynpro hijo. Para llamar a uno, recomiendo utilizar el wizard de Web Dynpro, que hará las declaraciones e instancias necesarias para que todo funcione correctamente.
3. Mapear el contexto del componente Web Dynpro a reutilizar
Así mismo, también es posible mapear contexto del componente Web Dynpro hijo para poder usarlo en el padre. Desde la pestaña Context, al igual que se mapea desde el component controller se puede mapear desde la interfaz del hijo.
3. Reutilizar vista de componente Web Dynpro ABAP
La última opción que tenemos es reutilizar una interfaz de vista del componente Web Dynpro ABAP hijo en el componente padre. Para ello en el controlador de la ventana, debemos embeber la vista del hijo. Como si de una vista normal del controlador se tratase, debemos pulsar la opción embeber vista en la pestaña Window. En la ayuda de búsqueda, además de las vistas propias del componente nos aparecerán las de los componentes Web Dynpro ABAP referenciados. En el ejemplo, la vista ALV:
De esta manera, sabiendo qué métodos o vistas o nodos del hijo necesitamos, podremos reutilizar las funcionalidades de otro componente Web Dynpro ABAP.