PDA

Ver la Versión Completa : Color en celda de ALV GRID


ebelyn
15/12/08, 10:56:15
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
15/12/08, 11:01:21
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.

ebelyn
15/12/08, 12:40:10
Muchas Gracias, encontre otra solucion. Saludos.

*&---------------------------------------------------------------------*
*& 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