FuBa REUSE_ALV_GRID_DISPLAY – COLOR CELL und COLOR LINE

REUSE_ALV_GRID_DISPLA

  1. COLOR CELL

TCOLOR

Definition:

 TCOLOR TYPE SLIS_T_SPECIALCOL_ALV,

Beim Layout eine Referenz eingeben

gs_alv_layout-coltab_fieldname = 'TCOLOR'.  "Tabelle mit Farbinfo pro Zelle  

In der ALV Tabelle in dem Feld TCOLOR, bei dem es sich wiederum um eine Tabelle handelt, die Info einfügen. (Tabelle deswegen, da die Farbinfo ja nicht für die ganze Zeile, sondern nur für ein Feld gilt)

DATA: xcolor TYPE slis_specialcol_alv.
  LOOP AT gt_out WHERE status CA 'Vv'.
    CLEAR xcolor.
    xcolor-fieldname = 'STATUS'.
    xcolor-color-col = '3'.
    xcolor-color-int = '1'. " Intensified on/off
    xcolor-color-inv = '0'.
    APPEND xcolor TO gt_out-tcolor.
    xcolor-fieldname = 'MATNR'.
    APPEND xcolor TO gt_out-tcolor.
    MODIFY gt_out.
  ENDLOOP.

2. COLOR LINE

LINE_COLOR

Definition:

  COLOR_LINE(4) TYPE C,

Beim Layout eine Referenz eingeben

gs_alv_layout-info_fieldname = 'COLOR_LINE'."Spalte mit Farbe für gesamte 

In der ALV Tabelle das Feld COLOR_LINE mit der Farbinfo füllen. Diese Farbinfo gilt dann für die gesammte Zeile

LOOP AT gt_out WHERE status CA 'Vv'.
    CLEAR gt_out-color_line.
    gt_out-color_line = 'C311'. "Cxyz 1-9 1/0 1/0 oder X Gelb
    MODIFY gt_out.
ENDLOOP.

3. Welche Farben gibt es?

*    gt_out-color_line = 'C111'. "Cxyz 1-9 1/0 1/0 oder X Türkis
*    gt_out-color_line = 'C211'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C311'. "Cxyz 1-9 1/0 1/0 oder X Gelb
*    gt_out-color_line = 'C411'. "Cxyz 1-9 1/0 1/0 oder X Marineblau
*    gt_out-color_line = 'C511'. "Cxyz 1-9 1/0 1/0 oder X Grün
*    gt_out-color_line = 'C611'. "Cxyz 1-9 1/0 1/0 oder X Rot
*    gt_out-color_line = 'C711'. "Cxyz 1-9 1/0 1/0 oder X Orange
*    gt_out-color_line = 'C811'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C911'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'X'.    "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C201'. "Cxyz 1-9 1/0 1/0 oder X Aufhellen
*    gt_out-color_line = 'C200'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra Hell)
*    gt_out-color_line = 'C801'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C800'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C901'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C900'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C910'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C810'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C210'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra Hell)

4. Bsp.1.:

FORM alv.

  DATA: ld_repid                LIKE sy-repid,
        lv_pf                   TYPE slis_formname
        VALUE 'PF_STATUS_SET',
        lt_event_exit           TYPE slis_t_event_exit,
        lv_command              TYPE slis_formname VALUE
        'USER_COMMAND',
        lc_formname_top_of_page TYPE slis_formname VALUE
        'TOP_OF_PAGE'.

  "Layout einstellen
  gs_alv_layout-zebra = c_active.
  gs_alv_layout-coltab_fieldname = 'TCOLOR'.  "Tabelle mit Farbinfo pro Zelle
  gs_alv_layout-info_fieldname = 'COLOR_LINE'."Spalte mit Farbe für gesamte Linie
  gs_alv_layout-colwidth_optimize = c_active.
  gs_alv_layout-detail_initial_lines = c_active.
  gs_alv_layout-get_selinfos = c_active.
*  gs_alv_layout-box_fieldname = 'SEL'.
  IF sy-langu = 'D'.
    gs_alv_layout-window_titlebar = 'Kritische Verbräuche'.
  ELSE.
    gs_alv_layout-window_titlebar = 'Critical Consumptions'.
  ENDIF.

*--------------------------- End of Declarations -----------------------

  "Farbinfo



  DATA: xcolor TYPE slis_specialcol_alv.
  LOOP AT gt_out WHERE status CA 'Vv'.
    IF 1 = 0.
      CLEAR xcolor.
      xcolor-fieldname = 'STATUS'.
      xcolor-color-col = '3'.
      xcolor-color-int = '1'. " Intensified on/off
      xcolor-color-inv = '0'.
      APPEND xcolor TO gt_out-tcolor.
      xcolor-fieldname = 'MATNR'.
      APPEND xcolor TO gt_out-tcolor.
      "gt_out-color_line = 'C410'.
    ENDIF.
    CLEAR gt_out-color_line.
*    gt_out-color_line = 'C111'. "Cxyz 1-9 1/0 1/0 oder X Türkis
*    gt_out-color_line = 'C211'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C311'. "Cxyz 1-9 1/0 1/0 oder X Gelb
*    gt_out-color_line = 'C411'. "Cxyz 1-9 1/0 1/0 oder X Marineblau
*    gt_out-color_line = 'C511'. "Cxyz 1-9 1/0 1/0 oder X Grün
*    gt_out-color_line = 'C611'. "Cxyz 1-9 1/0 1/0 oder X Rot
*    gt_out-color_line = 'C711'. "Cxyz 1-9 1/0 1/0 oder X Orange
*    gt_out-color_line = 'C811'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C911'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'X'.    "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C201'. "Cxyz 1-9 1/0 1/0 oder X Aufhellen
*    gt_out-color_line = 'C200'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra Hell)
*    gt_out-color_line = 'C801'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C800'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C901'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C900'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C910'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C810'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra)
*    gt_out-color_line = 'C210'. "Cxyz 1-9 1/0 1/0 oder X (Wie Zebra Hell)
    gt_out-color_line = 'C311'. "Cxyz 1-9 1/0 1/0 oder X Gelb

    MODIFY gt_out.

  ENDLOOP.
  LOOP AT gt_out WHERE volum EQ 0 and mtart <> 'VERP'. "Volumen Null markieren
    CLEAR xcolor.
    xcolor-fieldname = 'VOLUM'.
    xcolor-color-col = '6'.
    xcolor-color-int = '1'. " Intensified on/off
    xcolor-color-inv = '0'.
    APPEND xcolor TO gt_out-tcolor.
    xcolor-fieldname = 'IDNRK'.
    APPEND xcolor TO gt_out-tcolor.
    "gt_out-color_line = 'C410'.
    MODIFY gt_out.
  ENDLOOP.



  DATA: wa_filter LIKE LINE OF gt_filter.
  "Filter:
  "Immer Filter Materialart
  "Wenn Kundenbetreuer, dannn Filter auf Status
  IF p_filter = 'X'.
    wa_filter-tabname = 'GT_OUT'.

    "Vorher: Interkativ KB nur v und V anzeigen
    "Nachher:

    IF sy-tcode = 'ZSD_ROH_KB'.
      IF 1 = 0.
        wa_filter-fieldname = 'STATUS'.
        wa_filter-sign0 = 'I'.
        "wa_filter-optio = 'CP'.
        "wa_filter-valuf_int = 'AMLSV*'.
        "APPEND wa_filter TO gt_filter.
        "WA_FILTER-OPTIO = 'EQ'.
        "WA_FILTER-VALUF_INT = 'AML----'.
        "APPEND wa_filter TO gt_filter.
        wa_filter-optio = 'CP'.
        wa_filter-valuf_int = '*v*'.
        APPEND wa_filter TO gt_filter.
        wa_filter-valuf_int = '*V*'.
        APPEND wa_filter TO gt_filter.
        wa_filter-fieldname = 'MTART'.
        wa_filter-sign0 = 'I'.
        wa_filter-optio = 'EQ'.
        wa_filter-valuf_int = 'ROH'.
        APPEND wa_filter TO gt_filter.
        "WA_FILTER-VALUF_INT = 'HALB'.
        "APPEND WA_FILTER TO GT_FILTER.
        wa_filter-valuf_int = 'HAWA'.
        APPEND wa_filter TO gt_filter.
      ENDIF.
    ELSE.
      wa_filter-fieldname = 'MTART'.
      wa_filter-sign0 = 'I'.
      wa_filter-optio = 'EQ'.
      wa_filter-valuf_int = 'ROH'.
      APPEND wa_filter TO gt_filter.
      "WA_FILTER-VALUF_INT = 'HALB'.
      "APPEND WA_FILTER TO GT_FILTER.
      wa_filter-valuf_int = 'HAWA'.
      APPEND wa_filter TO gt_filter.
    ENDIF.
  ENDIF.



* Set ALV Variables

  ld_repid = sy-repid.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING      "I_BYPASSING_BUFFER       = 'X'
                                                                                                                        "I_BUFFER_ACTIVE          = ''
      i_bypassing_buffer       = ''
      i_buffer_active          = 'X'
      i_callback_program       = ld_repid
      i_callback_pf_status_set = lv_pf
      i_callback_user_command  = lv_command
      i_callback_top_of_page   = lc_formname_top_of_page
      is_layout                = gs_alv_layout
      it_fieldcat              = gt_alv_fieldcat[]
      it_filter                = gt_filter[]
      i_default                = c_active
      i_save                   = c_chara
      is_variant               = gs_alv_variant
*     IT_EVENTS                =
*     it_event_exit            = lt_event_exit[]
    TABLES
      t_outtab                 = gt_out
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  "BREAK STANGL.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

ENDFORM.  

5. Bsp.2:

*&---------------------------------------------------------------------*
*& Report  ZHS_TEST01
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT  ZHS_TEST01.
"REPORT YMS_COLOURALV NO STANDARD PAGE HEADING.
TYPE-POOLS: SLIS, ICON.
DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: BEGIN OF IMARA OCCURS 0,
LIGHT(4) TYPE C,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MAKTX TYPE MAKT-MAKTX,
COLOR_LINE(4) TYPE C,
TCOLOR TYPE SLIS_T_SPECIALCOL_ALV, "cell
END OF IMARA.
DATA: XCOLOR TYPE SLIS_SPECIALCOL_ALV.

START-OF-SELECTION.
  PERFORM GET_DATA.
  PERFORM WRITE_REPORT.
************************************************************************
*  GET_DATA
************************************************************************
FORM GET_DATA.
  WRITE ICON_GREEN_LIGHT AS ICON TO IMARA-LIGHT.
  IMARA-MATNR = 'ABC'.
  IMARA-MTART = 'ZCFG'.
  IMARA-MAKTX = 'This is description for ABC'.
  APPEND IMARA.
  WRITE ICON_YELLOW_LIGHT AS ICON TO IMARA-LIGHT.
  IMARA-MATNR = 'DEF'.
  IMARA-MTART = 'ZCFG'.
  IMARA-MAKTX = 'This is description for DEF'.
  APPEND IMARA.
  WRITE ICON_RED_LIGHT AS ICON TO IMARA-LIGHT.
  IMARA-MATNR = 'GHI'.
  IMARA-MTART = 'ZCFG'.
  IMARA-MAKTX = 'This is description for GHI'.
  APPEND IMARA.
  LOOP AT IMARA.
    IF SY-TABIX = 1.
      IMARA-COLOR_LINE = 'C410'. " color line
    ENDIF.
    IF SY-TABIX = 2. " color CELL
      CLEAR XCOLOR.
      XCOLOR-FIELDNAME = 'MTART'.
      XCOLOR-COLOR-COL = '3'.
      XCOLOR-COLOR-INT = '1'. " Intensified on/off
      XCOLOR-COLOR-INV = '0'.
      APPEND XCOLOR TO IMARA-TCOLOR.
    ENDIF.
    MODIFY IMARA.
  ENDLOOP.
ENDFORM. "get_data
************************************************************************
* WRITE_REPORT
************************************************************************
FORM WRITE_REPORT.
  DATA: LAYOUT TYPE SLIS_LAYOUT_ALV.
  LAYOUT-COLTAB_FIELDNAME = 'TCOLOR'.
  LAYOUT-INFO_FIELDNAME = 'COLOR_LINE'.
  PERFORM BUILD_FIELD_CATALOG.
  "CALL ABAP LIST VIEWER (ALV)
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      IS_LAYOUT   = LAYOUT
      IT_FIELDCAT = FIELDCAT
    TABLES
      T_OUTTAB    = IMARA.
ENDFORM. "write_report
************************************************************************
* BUILD_FIELD_CATALOG
************************************************************************
FORM BUILD_FIELD_CATALOG.
  DATA: FC_TMP TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
  CLEAR: FIELDCAT. REFRESH: FIELDCAT.
  CLEAR: FC_TMP.
  FC_TMP-REPTEXT_DDIC = 'Status'.
  FC_TMP-FIELDNAME = 'LIGHT'.
  FC_TMP-TABNAME = 'IMARA'.
  FC_TMP-OUTPUTLEN = '4'.
  FC_TMP-ICON = 'X'.
  APPEND FC_TMP TO FIELDCAT.
  CLEAR: FC_TMP.
  FC_TMP-REPTEXT_DDIC = 'Material Number'.
  FC_TMP-FIELDNAME = 'MATNR'.
  FC_TMP-TABNAME = 'IMARA'.
  FC_TMP-OUTPUTLEN = '18'.
  APPEND FC_TMP TO FIELDCAT.
  CLEAR: FC_TMP.
  FC_TMP-REPTEXT_DDIC = 'Material Type'.
  FC_TMP-FIELDNAME = 'MTART'.
  FC_TMP-TABNAME = 'IMARA'.
  FC_TMP-OUTPUTLEN = '10'.
  APPEND FC_TMP TO FIELDCAT.
  CLEAR: FC_TMP.
  FC_TMP-REPTEXT_DDIC = 'Material'.
  FC_TMP-FIELDNAME = 'MAKTX'.
  FC_TMP-TABNAME = 'IMARA'.
  FC_TMP-OUTPUTLEN = '40'.
  FC_TMP-EMPHASIZE = 'C610'. " color column
  APPEND FC_TMP TO FIELDCAT.
ENDFORM. "build_field_catalog