En Web Dynpro for Abap (WD4A), a la hora de definir el contexto de una aplicación Web Dynpro tenemos que tener en cuenta cómo queremos definir los diferentes nodos para poder mostrar y recoger información del usuario. Por esto es muy importante definir correctamente las propiedades de los nodos del contexto. A continuación se explican las diferentes propiedades que podemos modificar.
Interface Node
En el artículo reutilización de componentes comentamos la posibilidad de reutilizar los componentes que creamos, y que los nodos pueden ser parte de la interfaz del componente reutilizado. Al marcar esta propiedad hacemos que este nodo sea visible para un componente que reutilice este contexto.
Input Element
En WD4A, esta propiedad es utilizada en la reutilización. Si la propiedad Input Element también está seleccionada, el nodo debe estar también mapeado al nodo definido en el Component Controller padre. Esto sirve para poder modificar el contexto en el componente padre.
Dictionary Structure
A un nodo se le puede relacionar con una estructura o tabla definida en el Diccionario de Datos. De este modo, los atributos de este nodo tendrán las mismas propiedades que en el diccionario. El problema de asignar esta propiedad, es que a este nodo únicamente se podrán meter atributos de esta estructura.
Cardinality
En tiempo de ejecución, las estructuras se rellenan con valores, y cada atributo puede tener varios valores (tablas). Para especificar cuántos valores puede contener un nodo, se usa la propiedad cardinality:
- .1: Cero o un elemento permitidos (estructura).
- .n: Cero o más elementos permitidos (tabla).
- .1: Exactamente un elemento permitido (estructura).
- .n: Uno o más elementos permitidos (tabla).
Por lo tanto, un nodo que tenga de cardinalidad máxima 1, es como una estructura ABAP, y un nodo que tenga n, será como una tabla interna.
Selection
Esta propiedad indica el número de elementos de la colección que pueden ser seleccionados. Habrá que tener en cuenta la propiedad anterior para definir esta, ya que no se podrá decir que se puedan seleccionar n elemento en una estructura.
Lead Selection
Un elemento de una colección de un nodo (tabla) puede ser seleccionado por un valor basado en índices. Exactamente un elemento de la colección del nodo puede ser marcado como Lead Selection. El Lead Selection del contexto de un nodo apunta bien a un solo elemento del nodo, ó, si no hay elemento seleccionado, tiene el valor de la constante: IF_WD_CONTEXT_NODE=>NO_SELECTION.
El valor del Lead Selection puede ser automáticamente inicializado con la propiedad Initialize Lead Selection.
Si el Lead Selection tiene valor:
- Se pueden utilizar métodos especiales para acceder al Lead del nodo en el código del controlador.
- Elementos del interfaz de usuario pueden ser asignados a los atributos de este elemento.
Singleton
En un contexto como el de la imagen en el que existe un nodo FLIGHTS con cardinalidad 0..n que contiene otro nodo BOOKINGS, con cardinalidad 0..n, la propiedad Singleton afecta de manera crítica a la relación entre el nodo FLIGHTS y el nodo BOOKINGS.
Si el nodo BOOKINGS tiene la propiedad Singleton con valor ‘false’, por cada elemento en la colección del nodo padre, existirá una instancia del nodo hijo BOOKINGS.
En cambio si el nodo BOOKINGS tiene la propiedad Singleton marcada, no importará cuantos elementos estén presentes en el nodo padre, siempre existirá una sola instancia del nodo hijo BOOKINGS, por lo que la colección BOOKINGS será Singleton en tiempo de ejecución.
Ventajas de nodos Singleton:
- Acceso a datos ‘Lazy’. Los datos son creados cuando son realmente necesitados. Esto significa que si los datos no se requieren, el nodo hijo permanece sin procesar. También implica que colecciones dependientes no son creadas automáticamente para todos los elementos del nodo padre. La creación de la colección de nodo dependiente es retardada hasta el punto que el elemento relacionado de la colección padre obtiene el Lead Selection.
- Menor consumo de datos.
Inconvenientes de nodos Singleton:
- Mayor número de accesos a base de datos. Por lo que se puede ralentizar la ejecución de la aplicación.
Este es un pequeño resumen de la propiedades de los nodos del contexto más importantes, de Web Dynpro For Abap.