ABAP - Añadir nodos a un CL_GUI_COLUMN_TREE

 
Vista:

Añadir nodos a un CL_GUI_COLUMN_TREE

Publicado por CT (1 intervención) el 26/10/2006 21:01:43
Hola a todos, necesito añadir nodos a un árbol tipo CL_GUI_COLUMN_TREE. Estos nuevos nodos se buscan dinámicamente a partir de una tabla Z* con dos campos, el object ID del nuevo nodo y el object ID del padre. Por ejemplo:
parent child
001 002

Es decir, tengo que 'colgar' un nuevo nodo con OBJID = 002 de un nodo ya existente con OBJID = 001.
Para ello utilizo el método ADD_NODES_AND_ITEMS, pero tengo un problema. Necesito el OBJECT_KEY que el árbol ha asignado a ese nodo 'padre' = 001.
¿Sabéis cómo puedo obtenerlo? En principio no parece difícil, pero no encuentro ningún método que me devuelva una tabla que contenga el árbol completo y que me de esa correspondencia, y mucho menos un método que me devuelva el OBJECT_KEY que se ha asignado a un OBJID concreto.

He pensado que podría programar el evento on_node_click (o algo asi) para que los añada cuando se abra el nodo, pero preferiría construir el árbol entero antes de mostrarlo.

Gracias por adelantado, un saludo:

CT
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Añadir nodos a un CL_GUI_COLUMN_TREE

Publicado por Alejandro (226 intervenciones) el 12/04/2023 01:36:23
Para obtener el OBJECT_KEY del nodo padre en el árbol, puedes utilizar el método GET_KEY_BY_INDEX del objeto CL_GUI_COLUMN_TREE. Este método te permite obtener el OBJECT_KEY correspondiente a un índice determinado del árbol. Para encontrar el índice del nodo padre, puedes utilizar el método FIND_NODE_BY_KEY para encontrar el nodo correspondiente al OBJECT_KEY del nodo padre.

Una vez que tengas el índice del nodo padre, puedes utilizar el método GET_KEY_BY_INDEX para obtener el OBJECT_KEY correspondiente. A continuación, puedes utilizar este OBJECT_KEY como parámetro para el método ADD_NODES_AND_ITEMS para añadir el nuevo nodo hijo.

Aquí te dejo un ejemplo de código que muestra cómo obtener el OBJECT_KEY del nodo padre y utilizarlo para añadir un nuevo nodo hijo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DATA: lo_column_tree TYPE REF TO cl_gui_column_tree,
      ls_node_parent TYPE lvc_s_treenode
 
* Obtener el objeto CL_GUI_COLUMN_TREE
lo_column_tree = NEW #( )
 
* Buscar el nodo padre por su OBJECT_ID
ls_node_parent = lo_column_tree->find_node_by_key( '001' )
 
* Obtener el OBJECT_KEY del nodo padre
DATA(lv_parent_key) = lo_column_tree->get_key_by_index( ls_node_parent-node_index )
 
* Añadir el nuevo nodo hijo
lo_column_tree->add_nodes_and_items(
  nodes = VALUE #( ( text = 'Nuevo Nodo'
                     key = '002'
                     parent_key = lv_parent_key ) )
)

Espero que esto te sea útil. ¡Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar