Ir al contenido
Programación ABAP

Colores en un ALV

Dar color a columnas, filas o celdas concretas de un listado ALV.

ALV
2 de 3

Colorear una columna

En el catálogo de campos se rellena EMPHASIZE con un código de cuatro caracteres Cxyz:

  • C: indica que es un color.
  • x: número de color, del 1 al 7 (1 azul grisáceo, 2 gris claro, 3 amarillo, 4 azul, 5 verde, 6 rojo, 7 naranja).
  • y: intensidad, 1 encendida y 0 apagada.
  • z: inverso, 1 activado y 0 desactivado.
ABAP
ls_fieldcat-emphasize = 'C210'.   " gris claro intensificado

Colorear una fila

Se añade a la tabla de datos un campo de cuatro caracteres con el color de cada línea y se indica su nombre en el layout:

ABAP
TYPES: BEGIN OF ty_alv,
         color TYPE c LENGTH 4,
         matnr TYPE mara-matnr,
       END OF ty_alv.
DATA gt_alv TYPE STANDARD TABLE OF ty_alv.

LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
  <ls_alv>-color = COND #( WHEN <ls_alv>-matnr CP 'J*' THEN 'C610' ELSE 'C510' ).
ENDLOOP.

gs_layout-info_fieldname = 'COLOR'.

Colorear celdas concretas

Para dar color solo a algunas celdas se añade a la tabla un campo de tipo LVC_T_SCOL (o SLIS_T_SPECIALCOL_ALV con las funciones REUSE) y se indica su nombre en gs_layout-coltab_fieldname (o ctab_fname). Cada línea de ese campo dice qué columna se colorea y con qué color.