59
« Último mensaje por oscar en 11 de Octubre de 2017, 01:42:17 pm »
Un nuevo ejemplo para colorear celdas individualmente en un ALV_GRID...
REPORT zcolor_en_celdas.
* Type Pools *
TYPE-POOLS: slis.
* Tabla interna de prueba (se agrega el campo CELLCOLORS.
DATA: BEGIN OF r_alv,
vbeln TYPE vbeln,
posnr TYPE posnr,
cellcolors TYPE lvc_t_scol,
END OF r_alv.
DATA: i_alv LIKE TABLE OF r_alv.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv,
r_layout TYPE slis_layout_alv.
INITIALIZATION.
* TRAIGO ALGUNOS DATOS
REFRESH i_alv.
SELECT vbeln posnr
FROM vbap
INTO CORRESPONDING FIELDS OF TABLE i_alv
WHERE vbeln = '0005101265'.
SORT i_alv BY posnr.
* 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_alv
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 = 'VBELN'. "VBELN
r_fieldcat-tabname = 'I_ALV'.
r_fieldcat-seltext_l = 'VBELN'.
APPEND r_fieldcat TO ptc_fieldcat.
CLEAR r_fieldcat.
l_pos = l_pos + 1.
r_fieldcat-col_pos = l_pos.
r_fieldcat-fieldname = 'POSNR'. "POSNR
r_fieldcat-tabname = 'I_ALV'.
r_fieldcat-seltext_l = 'POSNR'.
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_alv.
* ASIGNAMOS EL CAMPO CELLCOLORS AL LAYOUT
playout-coltab_fieldname = 'CELLCOLORS'.
UNASSIGN <fs_report>.
LOOP AT i_alv ASSIGNING <fs_report>.
CASE <fs_report>-posnr.
WHEN '000011'.
l_color-fname = 'POSNR' .
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 '000013'.
l_color-fname = 'POSNR' .
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 = 'POSNR' .
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