Inicio > ABAP/4 > Color en columna de ALV

Color en columna de ALV

Caso: Se desea ponerle color a una columna de un ALV.

Solución: Para pintar una columna, podemos utilizar, en el fieldcat del ALV el campo EMPHASIZE, por ejemplo:

lw_fieldcat-emphasize = ‘C500’.

En el siguiente programa podemos listar las distintas posibilidades de color que hay.

REPORT  zprueba_color_alv.
 
TYPE-POOLS: slis.
 
* Tabla interna de prueba (se agrega el campo CELLCOLORS.
TYPES: BEGIN OF tty_salida,
        cod_color             TYPE char4,
        cellcolors            TYPE lvc_t_scol,
      END OF   tty_salida.
 
TYPES: ty_salida   TYPE STANDARD TABLE OF tty_salida.
 
DATA:  t_salida       TYPE ty_salida,
       wa_salida      TYPE LINE OF ty_salida,
       i_fieldcat     TYPE slis_t_fieldcat_alv,
       r_layout       TYPE slis_layout_alv,
       lv_color       TYPE numc1,
       lv_intensidad  TYPE numc2,
       lv_contador    TYPE numc3,
       lv_i           TYPE c,
       lv_j           TYPE c,
       lv_k           TYPE c.
 
INITIALIZATION.
* Agrego los códigos de color
  lv_color      = '1'.
  WHILE ( lv_color <= 7 ).
    lv_intensidad = '00'.
    WHILE ( lv_intensidad < 20 ).
      CONCATENATE 'C' lv_color lv_intensidad INTO wa_salida-cod_color.
      APPEND wa_salida TO t_salida.
      ADD 1 TO lv_intensidad.
 
    ENDWHILE.
    ADD 1 TO lv_color.
  ENDWHILE.
 
* 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                = t_salida
    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.
 
  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     = 'COD_COLOR'.
  r_fieldcat-tabname       = 'T_SALIDA'.
  r_fieldcat-seltext_l     = 'Material'.
  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 t_salida.
 
* ASIGNAMOS EL CAMPO CELLCOLORS AL LAYOUT
  playout-coltab_fieldname  = 'CELLCOLORS'.
 
  UNASSIGN <fs_report>.
 
  LOOP AT t_salida ASSIGNING <fs_report>.
    lv_i = <fs_report>-cod_color+1(1).
    lv_j = <fs_report>-cod_color+2(1).
    lv_k = <fs_report>-cod_color+3(1).
 
    l_color-fname     = 'COD_COLOR' .
    l_color-color-col = lv_i. "COLOR
    l_color-color-int = lv_j. "INTENSIDAD
    l_color-color-inv = lv_k. "INVERSO
    APPEND l_color TO <fs_report>-cellcolors.
 
  ENDLOOP.
ENDFORM.                    " f_init_layout
 

 

  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: