Tutorial WebDynpro (WD4A) Propiedades de los atributos del contexto

La mayoría de los elementos UI que se utilizan en el layout tienen en común las propiedades ReadOnly, Enabled, Visible y State. Es común controlar estas propiedades con un binding a atributos del contexto, pero esto puede hacer que se sature el contexto de atributos para este fin. Por ello, a la hora de hacer el binding de estas propiedades, WD ofrece la posibilidad de hacer el binding a las propiedades de un atributo del contexto.
WD4A SAP WebDynpro

En primer lugar, se explica brevemente que utilidad tienen las propiedades antes mencionadas. Todas ellas son de tipo booleano, así que los valores que pueden tomar son true o false:

  • ReadOnly: si su valor es true indica que es sólo de lectura, y no se podrá escribir en el elemento UI. Su valor por defecto es false
  • Enabled: si su valor es true quiere decir que el elemento está activo y se puede utilizar.  Su valor por defecto es true
  • Visible: si su valor es true indica que es visible en el layout, si no esté no aparecerá en la vista. Su valor por defecto es true
  • State: si su valor es true indica que el elemento es obligatorio rellenarlo y se indicara con un asterisco rojo en el layout. Su valor por defecto es false

A la hora de relacionar una propiedad de un elemento UI con un atributo del contexto, lo que normalmente se hace es un binding directo. Esto significa que el valor que tiene el atributo en el contexto, el mismo valor tendrá esa propiedad. Cuando se pulsa en botón de binding en una de las propiedades antes mencionadas, aparece una segunda opción que es el binding a propiedades del atributo, como se muestra en la imagen anterior.

Con esta segunda opción se hace la relación de la propiedad del elemento UI con la propiedad del atributo del contexto. Esta relación se puede hacer con cualquier propiedad, no tiene por qué ser el Enabled del elemento UI con el Enabled  del atributo. Se puede seleccionar en el desplegable la propiedad de atributo que se quiera utilizar. También existe la posibilidad de hacer el binding en negativo con el checkbox de “invert attribute”, es decir, que cuando el valor de la propiedad del atributo sea true, lo que se pase a la del elemento UI será false.

Para modificar las propiedades del atributo del contexto, se debe utilizar el método SET_ATTRIBUTE_PROPERTY  de la clase IF_WD_CONTEXT_ELEMENT. Primero deberemos coger el elemento que contiene el atributo al que queremos cambiar su propiedad. Después se llama al método pasándole el nombre del atributo a modificar, la propiedad que se quiere modificar y el valor que tendrá. Por ejemplo, si se quiere modificar la propiedad Visible se puede hacer lo siguiente:

**  Modificamos la visibilidad
 DATA lo_nodo TYPE REF TO if_wd_context_node.
 DATA lo_elemento TYPE REF TO if_wd_context_element.
 lo_nodo = wd_context->get_child_node( name = `NOMBRE_NODO` ).
 lo_elemento  = lo_nodo->get_element( ).</p>
CALL METHOD lo_elemento->set_attribute_property
 EXPORTING
 attribute_name = 'NOMBRE_ATRIBUTO'
 property       = lo_elemento->e_property-visible
 value          = abap_true.

El atributo e_property de la clase IF_WD_CONTEXT_ELEMENT, es una estructura constante que tiene la siguiente definición:

begin of E_PROPERTY,
 visible type I value 1,
 required type I value 2,
 read_only type I value 3,
 enabled type I value 4,
 end of E_PROPERTY.

Con esta utilidad se puede controlar el comportamiento de los elementos  UI del layout sin necesidad de crear un atributo en el contexto por cada propiedad. Esto permite no sobrecargar el contexto y reducir el acceso al mismo, lo que hace que las aplicaciones sean más pesadas a la hora de ejecutarlas.

Esta entrada fue publicada en Formación SAP, Programación, SAP, Web Dynpro for Abap. Guarda el enlace permanente.
Si te ha gustado...Compártelo!

Deja un comentario

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