1. 程式人生 > 其它 >WDA基礎十六:ALV的顏色

WDA基礎十六:ALV的顏色

這裡介紹三種類型的顏色:列的背景色,單元格的背景色,單元格文字的顏色。

1.給ALV結構新增顏色控制欄位:

三個欄位都是同一型別:WDY_UIE_LIBRARY_ENUM_TYPE

COL_BACKG:列背景色

CELL_BACKG:單元格背景色

TEXT_BACKG:單元格文字背景色。

 

2.初始化ALV時,設定對應的欄位和顏色控制

CASE ls_column-id.
          WHEN 'POSTING_DATE'.
            ls_column-r_column->set_cell_design( cl_wd_abstr_master_table_col=>e_cell_design-positive ).
          WHEN 'OBJECT_ID'.
            ls_column-r_column->set_cell_design_fieldname( 'CELL_BACKG' ).
          WHEN 'STAT'.
            DATA lr_cell_editor TYPE REF TO cl_salv_wd_uie.
            DATA lr_text_view TYPE REF TO cl_salv_wd_uie_text_view.

            lr_cell_editor = ls_column-r_column->get_cell_editor( ).
            IF lr_cell_editor->editor = if_salv_wd_c_column_settings=>cell_editor_text_view.
              lr_text_view ?= lr_cell_editor.
              lr_text_view->set_semantic_color_fieldname( 'TEXT_BACKG' ).
            ENDIF.

          WHEN OTHERS.
        ENDCASE.

日期列設定列背景色,單號設定單元格不同,狀態列設定文字色。

 

3.查詢資料時,控制顏色欄位屬性,設定顏色。

  LOOP AT lt_retab INTO ls_retab.
* 16 colors are available
    l_cell_design = l_cell_design + 1.
    IF l_cell_design > 17.
      l_cell_design = 1.
    ENDIF.
* cell background color
    CASE l_cell_design.
      WHEN 1.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-standard.
      WHEN 2.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-negative.
      WHEN 3.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-positive.
      WHEN 4.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-badvalue_dark.
      WHEN 5.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-badvalue_medium.
      WHEN 6.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-badvalue_light.
      WHEN 7.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-criticalvalue_dark.
      WHEN 8.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-criticalvalue_medium.
      WHEN 9.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-criticalvalue_light.
      WHEN 10.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-goodvalue_dark.
      WHEN 11.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-goodvalue_medium.
      WHEN 12.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-goodvalue_light.
      WHEN 13.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-key_medium.
      WHEN 14.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-group_level1.
      WHEN 15.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-group_level2.
      WHEN 16.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-group_level3.
    ENDCASE.

* text colors
    l_semantic_color = l_semantic_color + 1.
    IF l_semantic_color > 7.
      l_semantic_color = 1.
    ENDIF.
    CASE l_semantic_color.
      WHEN 1.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-standard.
      WHEN 2.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-diminished.
      WHEN 3.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-positive.
      WHEN 4.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-critical.
      WHEN 5.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-negative.
      WHEN 6.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-marked1.
      WHEN 7.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-marked2.
    ENDCASE.
    MODIFY lt_retab FROM ls_retab.
  ENDLOOP.

好了,加顏色的程式碼已經完成,看看效果吧。

 

1.給ALV結構新增顏色控制欄位:

三個欄位都是同一型別:WDY_UIE_LIBRARY_ENUM_TYPE

COL_BACKG:列背景色

CELL_BACKG:單元格背景色

TEXT_BACKG:單元格文字背景色。

 

2.初始化ALV時,設定對應的欄位和顏色控制

CASE ls_column-id.
          WHEN 'POSTING_DATE'.
            ls_column-r_column->set_cell_design( cl_wd_abstr_master_table_col=>e_cell_design-positive ).
          WHEN 'OBJECT_ID'.
            ls_column-r_column->set_cell_design_fieldname( 'CELL_BACKG' ).
          WHEN 'STAT'.
            DATA lr_cell_editor TYPE REF TO cl_salv_wd_uie.
            DATA lr_text_view TYPE REF TO cl_salv_wd_uie_text_view.

            lr_cell_editor = ls_column-r_column->get_cell_editor( ).
            IF lr_cell_editor->editor = if_salv_wd_c_column_settings=>cell_editor_text_view.
              lr_text_view ?= lr_cell_editor.
              lr_text_view->set_semantic_color_fieldname( 'TEXT_BACKG' ).
            ENDIF.

          WHEN OTHERS.
        ENDCASE.

日期列設定列背景色,單號設定單元格不同,狀態列設定文字色。

 

3.查詢資料時,控制顏色欄位屬性,設定顏色。

  LOOP AT lt_retab INTO ls_retab.
* 16 colors are available
    l_cell_design = l_cell_design + 1.
    IF l_cell_design > 17.
      l_cell_design = 1.
    ENDIF.
* cell background color
    CASE l_cell_design.
      WHEN 1.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-standard.
      WHEN 2.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-negative.
      WHEN 3.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-positive.
      WHEN 4.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-badvalue_dark.
      WHEN 5.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-badvalue_medium.
      WHEN 6.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-badvalue_light.
      WHEN 7.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-criticalvalue_dark.
      WHEN 8.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-criticalvalue_medium.
      WHEN 9.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-criticalvalue_light.
      WHEN 10.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-goodvalue_dark.
      WHEN 11.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-goodvalue_medium.
      WHEN 12.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-goodvalue_light.
      WHEN 13.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-key_medium.
      WHEN 14.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-group_level1.
      WHEN 15.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-group_level2.
      WHEN 16.
        ls_retab-cell_backg = cl_wd_abstr_master_table_col=>e_cell_design-group_level3.
    ENDCASE.

* text colors
    l_semantic_color = l_semantic_color + 1.
    IF l_semantic_color > 7.
      l_semantic_color = 1.
    ENDIF.
    CASE l_semantic_color.
      WHEN 1.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-standard.
      WHEN 2.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-diminished.
      WHEN 3.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-positive.
      WHEN 4.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-critical.
      WHEN 5.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-negative.
      WHEN 6.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-marked1.
      WHEN 7.
        ls_retab-text_backg = cl_wd_text_view=>e_semantic_color-marked2.
    ENDCASE.
    MODIFY lt_retab FROM ls_retab.
  ENDLOOP.

好了,加顏色的程式碼已經完成,看看效果吧。

 

搜尋

複製