SAP ABAP: Añadir semáforos a ALV

Un requerimiento muy común es que añadamos semáforos (iconos rojos, amarillos o verdes) para informar al usuario del estado de un proceso. Para incluir este icono en nuestras ALV, deberemos seguir los siguientes pasos:

  1. Debemos incluir <icon> en el TOP de nuestro programa.

INCLUDE <icon>.

2. Debemos declarar el atributo en el que deseemos informar el semáforo y deberá ser del tipo icon_d. Por ejemplo:

DATA: icon_field TYPE icon_d.

3. Asignamos el valor del icono:

Ejemplo:

     CLEAR ls_alv_log.
      ls_alv_log-ebeln = <fs_alv>-ebeln.
      ls_alv_log-icon = icon_green_light.
      READ TABLE lt_bapireturn ASSIGNING <wa_bapireturn> WITH KEY type = gc_success.
      IF sy-subrc EQ 0.
        ls_alv_log-descripcion = <wa_bapireturn>-message.
      ENDIF.
    ELSE.
      CLEAR ls_alv_log.
      ls_alv_log-ebeln = <fs_alv>-ebeln.
      ls_alv_log-icon = icon_red_light.
      READ TABLE lt_bapireturn ASSIGNING <wa_bapireturn> WITH KEY type = gc_error.
      IF sy-subrc EQ 0.
        ls_alv_log-descripcion = <wa_bapireturn>-message.
      ENDIF.

Los valores del icono son:

icon_red_light – luz roja
icon_yellow_light – luz amarilla
icon_green_light – luz verde

4. En el fieldcat de ALV deberemos de añadirlo, es decir, marcar que el campo va a ser de tipo icono:

  WHEN text-024."ICON - Icono de semáforo
    <fs_fieldcat_log>-icon = abap_true.       
    <fs_fieldcat_log>-seltext   = text-026.
    <fs_fieldcat_log>-scrtext_l = text-026.
    <fs_fieldcat_log>-scrtext_m = text-026.
    <fs_fieldcat_log>-scrtext_s = text-026.
    <fs_fieldcat_log>-coltext = text-026.
    <fs_fieldcat_log>-col_pos = '2'.

De esta manera podremos añadir los iconos de semáforo pero también podremos añadir el icono que queramos de los que ofrece SAP de forma estándar.