Autor Tema: Colorear celda de ALV  (Leído 19046 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado abapito

  • Usuario Completo
  • ***
  • Mensajes: 76
    • Ver Perfil
Colorear celda de ALV
« en: 22 de Mayo de 2008, 09:46:48 am »
Hola, lo que quiera saber es si se puede colorear una celda o varias celdas independientes con colores.

No quiero colorear toda la columna, lo que necesito es colorear unas celdas determinadas que cumplen una condición.


Muchas gracias de antemano.


Desconectado Nuria

  • Usuario Completo
  • ***
  • Mensajes: 90
    • Ver Perfil
Re: Colorear celda de ALV
« Respuesta #1 en: 22 de Mayo de 2008, 05:09:55 pm »
Te copio un resumen de como hacerlo.

Código: [Seleccionar]
BEGIN OF i_list,
  campo1,
  campo2,
  campo3,
  observaciones(40),
  COLOR   TYPE SLIS_T_SPECIALCOL_ALV, "estructura para el color
END OF i_list_pos.

*-- Luego pones lo siguiente antes de la función ALV.
 layout-coltab_fieldname = 'COLOR'.


*-- Luego defines el color en particular a mostrar:
DATA: v_alv_color TYPE slis_specialcol_alv.


*-- Le damos Color al campo que queremos.
    CLEAR: v_alv_color, v_alv_color[].
    v_alv_color-fieldname = 'OBSERVACIONES'.
    v_alv_color-color-col = 6.
    v_alv_color-color-int = 0.
*   v_alv_color-color-inv = '1'.
    APPEND v_alv_color.
    gt_pos-color[] = v_alv_color[].

Todo esto lo tengo probado para el alv jerarquico 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'.

Un saludo.

Desconectado oscar

  • Administrador
  • Usuario Sr.
  • *****
  • Mensajes: 112
    • Ver Perfil
Re:Colorear celda de ALV
« Respuesta #2 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