PDA

Ver la Versión Completa : ALV TREE - Resaltar columna entera


adia_mm
22/06/15, 11:51:36
¡Hola a todos!

Espero que podáis ayudarme con esto porque llevo horas buscando por internet y no consigo encontrar una solución a este tema: tengo un ALV TREE creado con objetos, la clase utilizada es CL_GUI_ALV_TREE y lo que necesito es resaltar TODA una columna:

2168
2170

El código que estoy usando de prueba es el de el programa estándar: BCALV_TREE_04

He probado a añadir en la subrutina: FORM build_fieldcatalog, lo siguiente (ya que hay gente que dice que le funciona: http://scn.sap.com/thread/1427499)

WHEN 'PRICE'.
ls_fieldcatalog-do_sum = 'X'.
ls_fieldcatalog-h_ftype = 'MAX'.
ls_fieldcatalog-emphasize = 'C610'. " USER INS


Pero no funciona en absoluto :(

2167
2170


También he probado a modificar el layout del item (cuando se crea la jerarquía: FORM create_hierarchy ) añadiendo el siguiente código a las siguientes subrutinas:

FORM add_month
FORM add_carrid_line
FORM add_complete_line



DATA:
l_node_text TYPE lvc_value,
l_layout_node TYPE lvc_s_layn,
lt_layout_item TYPE lvc_t_layi,
ls_layout_item TYPE lvc_s_layi.

* Layout
ls_layout_item-fieldname = 'PRICE'.
ls_layout_item-style = cl_gui_column_tree=>STYLE_EMPHASIZED_NEGATIVE.
APPEND ls_layout_item TO lt_layout_item.
CLEAR: ls_layout_item.

WRITE ps_sflight-fldate TO l_node_text MM/DD/YYYY.

CALL METHOD g_alv_tree->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = ps_sflight
i_node_text = l_node_text
it_item_layout = lt_layout_item " USER INS
IMPORTING
e_new_node_key = p_node_key.


Pero sólo se modifica en el último nivel (línea completa):

2169
2170


Por favor, si alguien sabe cómo resolver esto que me escriba.

Muchas gracias por adelantado.

--------------------------------------------------------------------------
--------------------------------------------------------------------------

Tras indagar en este tema encontré el programa de SAP ejemplo: "BCALV_TREE_ITEMLAYOUT" y probando he llegado a la siguiente conclusión: las columnas de un alv tree sólo se pueden modificar celda a celda al crear la jerarquía añadiendo la tabla item_layout (indicando el nombre de la columna y uno de los estilos definidos en la clase cl_gui_column_tree) al método add_node. Además sólo se puede hacer esto cuando, para dicha columna, NO se realiza ningún tipo de función matemática automática del ALV Tree (sumatorio, media, máximo, mínimo).

lfarro
04/09/15, 17:32:17
¡Hola a todos!

Espero que podáis ayudarme con esto porque llevo horas buscando por internet y no consigo encontrar una solución a este tema: tengo un ALV TREE creado con objetos, la clase utilizada es CL_GUI_ALV_TREE y lo que necesito es resaltar TODA una columna:

2168
2170

El código que estoy usando de prueba es el de el programa estándar: BCALV_TREE_04

He probado a añadir en la subrutina: FORM build_fieldcatalog, lo siguiente (ya que hay gente que dice que le funciona: http://scn.sap.com/thread/1427499)

WHEN 'PRICE'.
ls_fieldcatalog-do_sum = 'X'.
ls_fieldcatalog-h_ftype = 'MAX'.
ls_fieldcatalog-emphasize = 'C610'. " USER INS


Pero no funciona en absoluto :(

2167
2170


También he probado a modificar el layout del item (cuando se crea la jerarquía: FORM create_hierarchy ) añadiendo el siguiente código a las siguientes subrutinas:

FORM add_month
FORM add_carrid_line
FORM add_complete_line



DATA:
l_node_text TYPE lvc_value,
l_layout_node TYPE lvc_s_layn,
lt_layout_item TYPE lvc_t_layi,
ls_layout_item TYPE lvc_s_layi.

* Layout
ls_layout_item-fieldname = 'PRICE'.
ls_layout_item-style = cl_gui_column_tree=>STYLE_EMPHASIZED_NEGATIVE.
APPEND ls_layout_item TO lt_layout_item.
CLEAR: ls_layout_item.

WRITE ps_sflight-fldate TO l_node_text MM/DD/YYYY.

CALL METHOD g_alv_tree->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = ps_sflight
i_node_text = l_node_text
it_item_layout = lt_layout_item " USER INS
IMPORTING
e_new_node_key = p_node_key.


Pero sólo se modifica en el último nivel (línea completa):

2169
2170


Por favor, si alguien sabe cómo resolver esto que me escriba.

Muchas gracias por adelantado.

--------------------------------------------------------------------------
--------------------------------------------------------------------------

Tras indagar en este tema encontré el programa de SAP ejemplo: "BCALV_TREE_ITEMLAYOUT" y probando he llegado a la siguiente conclusión: las columnas de un alv tree sólo se pueden modificar celda a celda al crear la jerarquía añadiendo la tabla item_layout (indicando el nombre de la columna y uno de los estilos definidos en la clase cl_gui_column_tree) al método add_node. Además sólo se puede hacer esto cuando, para dicha columna, NO se realiza ningún tipo de función matemática automática del ALV Tree (sumatorio, media, máximo, mínimo).


La verdad no he usado mucho esa clase pero con la clase CL_SALV_TREE si se puede pintar y hacer sumatoria a la vez,
saludos.