Documente Academic
Documente Profesional
Documente Cultură
Cualquier controlador tiene por lo menos dos atributos estndar generados automticamente: WD_THIS: Es una referencia a la interface del propio controlador. Debe utilizarse en lugar de ME. Tambin te da acceso a funcionalidad estndar como validacin. WD_CONTEXT: Es una referencia al nodo raz del contexto del controlador. Cualquier acceso a los datos del contexto empezar con esta referencia.
Si el Component Controller es declarado como Controlador utilizado en la pestaa de Propiedades se crea un atributo adicional: WD_COMP_CONTROLLER: Es una referencia al Component Controller del webdynpro. Utilizando esta referencia podemos acceder a los mtodos y atributos pblicos del mismo.
Cualquier otro controlador declarado en la pestaa de Propiedades no tendr una referencia creada automticamente. Si queremos acceder a la parte pblica de este controlador utilizaremos la siguiente sentencia: DATA: lo_ctrl TYPE REF TO ig_<ctrl>. lo_ctrl = wd_this->get_<ctrl>_ctr( ). Adems el programador puede declarar atributos y mtodos adicionales, a los que accederemos mediante WD_THIS. El flag de Public permite que el atributo sea visible para otros controladores.
El nombre del nodo tiene que estar en maysculas. Por cada nodo se genera una constante llamada wdctx_<nombre_nodo> que contiene el nombre del nodo es aconsejable utilizar esta constante en lugar de poner el nombre del nodo directamente: lo_nd_<contexto> = wd_this->wdctx_<nombre_nodo> o lo_nd_<contexto> = if_<nodo_contexto>=>wdctx_<nombre_nodo>. Get_child_node() devuelve una referencia de tipo IF_WD_CONTEXT_NODE, para su utilizacin requiere el nombre del nodo y opcionalmente el ndice del elemento del nodo padre al que pertenece el elemento deseado. Despus de obtener la referencia al nodo podemos acceder al elemento al que apunta el Lead Selection llamando al mtodo get_element(). Este mtodo devuelve una referencia de tipo IF_WD_CONTEXT_ELEMENT. El elemento n del nodo puede ser accedido si en la llamada del mtodo ponemos index = n. El nmero de elementos en una coleccin puede obtenerse mediante get_element_count( ). DATA lo_nd_<nodo> TYPE REF TO if_wd_context_node. DATA lo_el_<nodo> TYPE REF TO if_wd_context_element. lo_nd_<nodo> = wd_context->get_child_node( name = wd_this>wdctx_<nodo_contexto> ). *Obtenemos el elemento al que apunta el LEAD SELECTION Lo_el_<nodo> = lo_nd_<nodo>->get_element( ). *Si LEAD SELECTION no est asignado devuelve INITIAL IF( lo_el_<nodo> is INITIAL). ENDIF. Sumario: Acceso a nodos de contexto y a elementos de contexto Accin Referencia al nodo <nodo> del controlador <ctrl> Referencia al elemento en el Lead Selection Referencia al elemento con ndice n Obtener el nmero de elementos en la coleccin Mtodo lo_nd_<nodo> = wd_context->get_child_node( name = wd_this> wdctx_<nodo> ). lo_el_<nodo> = lo_nd_<nodo>->get_element( ). lo_el_<nodo> = lo_nd_<nodo>->get_element( index = n ). n = lo_nd_<nodo>->get_element_cout( ).
2. Si el atributo es esttico se puede acceder mediante get_static_attributes( ). Con este mtodo obtenemos una estructura en el parmetro IMPORT.
En este mbito es importante conocer que: Para cada <nodo> del contexto de un controlador se genera implcitamente una estructura element_<nodo> en la interfaz IF_<ctrl> que corresponde a los atributos que tiene el nodo. Este tipo puede usarse para generar una variable que contenga el resultado de los mtodos anteriores. Adems, por cada <nodo> existe un tipo de tabla estndar llamado elements_<nodo> generada en la interfaz IF_<nodo>. Cada lnea de ese tipo es un element_<nodo>. Este tipo puede usarse para generar tablas que contengan datos de ms de un elemento de contexto.
Sumario de lectura y modificacin de atributos en el nodo <nodo> del controlador <ctrl> Accin Mtodo Lectura del valor del atributo DATA: lv_attr TYPE wd_this->element_<nodo>-<attr>. <attr> lo_el_<nodo>->get_attribute( EXPORTING name = <attr> IMPORTING value = lv_<attr> ). Leer el valor de mltiples DATA : ls_<nodo> TYPE wd_this->element_<nodo>. atributos definidos estticamente lo_el_<nodo>->get_static_attributes( IMPORTING static_attributes = ls_<nodo> ). Leer el valor de todos los DATA : lt_<nodo> TYPE wd_this->elements_<nodo>. atributos estticos de todos los elementos del nodo lo_nd_<nodo>->get_static_attributes_table( IMPORTING table = lt_<nodo> ). Cambiar el valor de un DATA : lv_<attr> TYPE wd_this->element_<nodo>-<attr>. atributo <attr> lv_<attr> = .. lo_el_<nodo>->set_attribute( EXPORTING Name = <attr> Value = lv_<attr> ). Cambio de mltiples DATA: ls_<nodo> TYPE wd_this->element_<nodo>. atributos de un elemento ls_<nodo>-<attr1> = . lo_el_<nodo>->set_static_attributes( EXPORTING static_attributes = ls_<nodo> ).