ALV TREE - Resaltar columna entera

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • adia_mm
    Junior Member
    • ene
    • 1

    #1

    ALV TREE - Resaltar columna entera

    ¡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:

    img2.jpg
    img_all.zip

    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)
    Código:
    WHEN 'PRICE'.
        ls_fieldcatalog-do_sum = 'X'.
        ls_fieldcatalog-h_ftype = 'MAX'.
        ls_fieldcatalog-emphasize = 'C610'. " USER INS
    Pero no funciona en absoluto

    img1.jpg
    img_all.zip


    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


    Código:
    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):

    img3.jpg
    img_all.zip


    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).
    Editado por última vez por adia_mm; 01/07/2015, 07:31:30.
  • lfarro
    Junior Member
    • sep
    • 4

    #2
    Originalmente publicado por adia_mm
    ¡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:

    [ATTACH]2168[/ATTACH]
    [ATTACH]2170[/ATTACH]

    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)
    Código:
    WHEN 'PRICE'.
        ls_fieldcatalog-do_sum = 'X'.
        ls_fieldcatalog-h_ftype = 'MAX'.
        ls_fieldcatalog-emphasize = 'C610'. " USER INS
    Pero no funciona en absoluto

    [ATTACH]2167[/ATTACH]
    [ATTACH]2170[/ATTACH]


    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


    Código:
    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):

    [ATTACH]2169[/ATTACH]
    [ATTACH]2170[/ATTACH]


    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.

    Comentario

    Trabajando...