Color en celda de ALV GRID

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • ebelyn
    Junior Member
    • feb
    • 17

    #1

    Color en celda de ALV GRID

    Hola a Todos!!...
    Necesito saber como ponerle color a una celda de un ALV GRID (solo a una determinada celda no a toda la fila).
    Por ejemplo:
    si campo > 3
    color campo = rojo
    si campo < 3
    color campo = azul
    si campo = 3
    color campo = amarillo.
    Muchas Graciaaaaas! Espero una solucion!!
  • chivi82
    Member
    • mar
    • 64

    #2
    alv color

    Si utilizas el módulo de función REUSE_ALV_GRID_DISPLAY tenemos 2 opciones:

    1) Mostrar un fila de un color, añadir un campo en la tabla interna que se le pasa al MF e guardar el nombre de este campo en la variable del LAYOUT g_layout-info_fieldname = 'COLOR'.


    2) Mostrar un columna de un color, cuando se informa los valores para el catálogo, además informar el campo g_catalog-emphasize= C123, 1=> color, 2 y 3 => intensidad.

    Comentario

    • ebelyn
      Junior Member
      • feb
      • 17

      #3
      Solucionado!

      Muchas Gracias, encontre otra solucion. Saludos.

      Código:
      *&---------------------------------------------------------------------*
      *& Report  ZPRUEBAEM
      *&
      *&---------------------------------------------------------------------*
      *& alv grid con celdas de distintos colores
      *& FUNCIONA!
      *&---------------------------------------------------------------------*
      
      REPORT  zpruebaem.
      
      * Type Pools *
      TYPE-POOLS: slis.
      
      * Tabla interna de prueba (se agrega el campo CELLCOLORS.
        DATA: BEGIN OF r_te422,
                termschl              TYPE ableinheit,
                portion               TYPE portion,
                cellcolors            TYPE lvc_t_scol,
              END OF   r_te422.
        DATA: i_te422                 LIKE TABLE OF r_te422.
      
       DATA: i_fieldcat          TYPE slis_t_fieldcat_alv,
             r_layout            TYPE slis_layout_alv.
      
      INITIALIZATION.
      
      * TRAIGO ALGUNOS DATOS
        REFRESH i_te422.
        SELECT termschl portion
          FROM te422
          INTO CORRESPONDING FIELDS OF TABLE i_te422
          WHERE portion = 'AGMEN1L'.
        SORT i_te422 BY termschl.
      
      * CARGO FIELDCAT.
        REFRESH i_fieldcat.
        PERFORM f_init_fieldcat     TABLES i_fieldcat.
      
      * LAYOUT, AGREGO COLORES DEPENDIENDO DE LA CELDA
        CLEAR r_layout.
        PERFORM f_init_layout       CHANGING r_layout.
      
      * ALV GRID
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program      = sy-repid
            i_callback_user_command = 'F_USER_COMMAND_01'
            is_layout               = r_layout
            it_fieldcat             = i_fieldcat[]
          TABLES
            t_outtab                = i_te422
          EXCEPTIONS
            program_error           = 1
            OTHERS                  = 2.
        IF sy-subrc <> 0.
          EXIT.
        ENDIF.
      
      *&---------------------------------------------------------------------*
      *&      Form  f_init_fieldcat
      *&---------------------------------------------------------------------*
      FORM f_init_fieldcat  TABLES ptc_fieldcat TYPE slis_t_fieldcat_alv.
      * LOCAL WORKAREA AND VARIABLE
        DATA: r_fieldcat  TYPE slis_fieldcat_alv,
              l_pos       TYPE i VALUE 0.
      
        CLEAR r_fieldcat.
        l_pos = l_pos + 1.
        r_fieldcat-col_pos       = l_pos.
        r_fieldcat-fieldname     = 'TERMSCHL'.
        r_fieldcat-tabname       = 'I_TE422'.
        r_fieldcat-seltext_l     = 'TERMSCHL'.
        APPEND r_fieldcat TO ptc_fieldcat.
      
        CLEAR r_fieldcat.
        l_pos = l_pos + 1.
        r_fieldcat-col_pos       = l_pos.
        r_fieldcat-fieldname     = 'PORTION'.
        r_fieldcat-tabname       = 'I_TE422'.
        r_fieldcat-seltext_l     = 'PORTION'.
        APPEND r_fieldcat TO ptc_fieldcat.
      
      ENDFORM.                    " f_init_fieldcat
      
      *&---------------------------------------------------------------------*
      *&      Form  f_init_layout
      *&---------------------------------------------------------------------*
      FORM f_init_layout  CHANGING playout TYPE slis_layout_alv.
      * Variables
        DATA l_color               TYPE lvc_s_scol.
      
      * Field-Symbols
        FIELD-SYMBOLS <fs_report>  LIKE LINE OF i_te422.
      
      * ASIGNAMOS EL CAMPO CELLCOLORS AL LAYOUT
        playout-coltab_fieldname  = 'CELLCOLORS'.
      
        UNASSIGN <fs_report>.
        LOOP AT i_te422 ASSIGNING <fs_report>.
          CASE <fs_report>-termschl.
            WHEN 'GAGAN002'.
              l_color-fname = 'TERMSCHL' .
              l_color-color-col = '6'. "ROJO
              l_color-color-int = '1'. "INTENSIDAD
              l_color-color-inv = '0'. "INVERSO
              APPEND l_color TO <fs_report>-cellcolors.
      
            WHEN 'GAGAY004'.
              l_color-fname = 'TERMSCHL' .
              l_color-color-col = '3'. "AMARILLO
              l_color-color-int = '1'.
              l_color-color-inv = '0'.
              APPEND l_color TO <fs_report>-cellcolors.
      
            WHEN OTHERS.
              l_color-fname = 'TERMSCHL' .
              l_color-color-col = '1'. "AZUL
              l_color-color-int = '1'.
              l_color-color-inv = '0'.
              APPEND l_color TO <fs_report>-cellcolors.
          ENDCASE.
        ENDLOOP.
      ENDFORM.                    " f_init_layout

      Comentario

      Trabajando...