ALV Class - ooxxvv/MySAPnotes GitHub Wiki

ALV/Class

ALV 報表的底色變色

  • 顏色碼的設定方式請參考 ALV/Function 中的說明。

直行的顏色

  • 在欄位設定時,填入顏色代碼 {{{#!abap *-設定顏色(整行時) gr_column ?= gr_columns->get_column( 'VBELN' ). lw_color-col = '6'. lw_color-int = '0'. lw_color-inv = '1'. gr_column->set_color( lw_color ). }}}

橫列或單一儲存格

  • 在傳入資料的 Internal Table 中,加入一個 TYPE lvc_t_scol 的欄位,欄位名稱可自行取名。
  • 在此欄位中放入相關的顏色設定 (這個欄位會是一個 Internal table 的型態)。
  • 在設定欄位屬性時,放入儲存顏色代碼的欄位名稱。
    • 若此欄位放空白,表示為整列變色。

{{{#!abap FORM output_alv_class . *--------For ALV content TYPES: BEGIN OF ty_alv. INCLUDE STRUCTURE it_vbap. TYPES: cellcolors TYPE lvc_t_scol, "用來儲存單一欄位在 ALV 中的底色 END OF ty_alv. DATA: lt_alv TYPE TABLE OF ty_alv, lw_alv TYPE ty_alv. *-------ALV 相關變數 DATA: gr_table TYPE REF TO cl_salv_table, gr_functions TYPE REF TO cl_salv_functions, gr_display TYPE REF TO cl_salv_display_settings, l_field_name TYPE lvc_fname, l_field_s TYPE scrtext_s, l_field_m TYPE scrtext_m, l_field_l TYPE scrtext_l, l_title TYPE lvc_title, gr_columns TYPE REF TO cl_salv_columns_table, gr_column TYPE REF TO cl_salv_column_table, lr_layout TYPE REF TO cl_salv_layout, ls_layout_key TYPE salv_s_layout_key, lw_cellcolors TYPE lvc_s_scol, lw_color TYPE lvc_s_colo.

IF it_vbap[] IS INITIAL. EXIT. ENDIF.

LOOP AT it_vbap. MOVE-CORRESPONDING it_vbap TO lw_alv.

CLEAR lw_cellcolors.
IF sy-tabix EQ 10.

*-----設定單一欄位的底色 lw_cellcolors-fname = 'MATKL'. lw_cellcolors-color-col = '6'. lw_cellcolors-color-int = '0'. lw_cellcolors-color-inv = '1'. lw_cellcolors-nokeycol = ''. APPEND lw_cellcolors TO lw_alv-cellcolors. ELSEIF sy-tabix EQ 12. *-----設定整列變色 lw_cellcolors-color-col = '6'. lw_cellcolors-color-int = '0'. lw_cellcolors-color-inv = '1'. lw_cellcolors-nokeycol = ''. APPEND lw_cellcolors TO lw_alv-cellcolors. ENDIF.

APPEND lw_alv TO lt_alv.
CLEAR lw_alv.

ENDLOOP.

*-設定主要資料的 Internal Table cl_salv_table=>factory( IMPORTING r_salv_table = gr_table CHANGING t_table = lt_alv ).

*-設定工具列 gr_functions = gr_table->get_functions( ). gr_functions->set_all( abap_true ). lr_layout = gr_table->get_layout( ). ls_layout_key-report = sy-repid. lr_layout->set_key( ls_layout_key ). lr_layout->set_default( abap_true ). lr_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).

*-設定最上方的標題 gr_display = gr_table->get_display_settings( ). gr_display->set_striped_pattern( cl_salv_display_settings=>true ). l_title = 'Title by Program'. gr_display->set_list_header( l_title ).

*-設定欄位屬性 l_field_s = 'VBELN-Title'. l_field_m = 'VBELN-Title'. l_field_l = 'VBELN-Title'.

gr_columns = gr_table->get_columns( ). gr_column ?= gr_columns->get_column( 'VBELN' ). gr_column->set_short_text( l_field_s ). gr_column->set_medium_text( l_field_m ). gr_column->set_long_text( l_field_l ). *-設定顏色 *------------設定顏色欄位的名稱(列或儲存格時) gr_columns->set_color_column( 'CELLCOLORS' ).

*------------設定顏色(整行時) gr_column ?= gr_columns->get_column( 'VBELN' ). lw_color-col = '6'. lw_color-int = '0'. lw_color-inv = '1'. gr_column->set_color( lw_color ).

*-秀出 ALV 報表 gr_table->display( ).

ENDFORM. " output_alv_class }}}