Create a field in the output internal table to store color key. The internal output table field must be of type CHAR(3).
The coding must have the following syntax: ‘Cxy’:
C = color (each code must begin with ‘C’)
x = color number (‘1’-‘9’)
y = highlight (‘0’ = off, ‘1’ = on)

Note: the color of the key columns is not affected.

TYPE-POOLS: slis.
*--------------------------------------------------------------*
*Data Types
*--------------------------------------------------------------*
TYPES: BEGIN OF ty_spfli,
       color(3) TYPE c.
INCLUDE TYPE spfli.
TYPES: END OF ty_spfli.
*--------------------------------------------------------------*
*Data Declaration
*--------------------------------------------------------------*
DATA: gt_spfli     TYPE TABLE OF ty_spfli.
DATA: gwa_spfli    TYPE ty_spfli.
DATA: gwa_selfield TYPE slis_selfield.
*--------------------------------------------------------------*
*Selection-Screen
*--------------------------------------------------------------*
PARAMETER: p_carrid TYPE spfli-carrid.
*--------------------------------------------------------------*
*Selection-Screen on Value-Request
*--------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_carrid.

  CLEAR: gwa_selfield.
**Fetch data from database
  SELECT * FROM spfli INTO CORRESPONDING FIELDS OF
           TABLE gt_spfli.
**Update color keys
  LOOP AT gt_spfli INTO gwa_spfli.
    IF gwa_spfli-carrid = 'AA'.
      gwa_spfli-color = 'C51'. " GREEN Color
    ELSEIF gwa_spfli-carrid = 'LH'.
      gwa_spfli-color = 'C71'. " ORANGE Color
    ENDIF.
    MODIFY gt_spfli FROM gwa_spfli.
    CLEAR gwa_spfli.
  ENDLOOP.
**Display ALV
  CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
    EXPORTING
      i_linemark_fieldname = 'COLOR'
      i_tabname            = 'GT_SPFLI'  " Internal table name
      i_structure_name     = 'SPFLI'
    IMPORTING
      es_selfield          = gwa_selfield
    TABLES
      t_outtab             = gt_spfli  " Internal table which contains entries
    EXCEPTIONS
      program_error        = 1
      OTHERS               = 2.

**User can click on any field in the popup, so just get the line index
**and get the corresponding carrid from internal table
READ TABLE gt_spfli INTO gwa_spfli INDEX gwa_selfield-tabindex.
IF sy-subrc = 0.
  p_carrid = gwa_selfield-value.
ENDIF.
 
 
 

Serkan AKKAVAK
Computer Engineer
ABAP Developer & SAP MM SD Consultant