Ver la Versión Completa : 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
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.
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
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web