ALV Class - ooxxvv/MySAPnotes GitHub Wiki
ALV/Class
- 主要是用 CL_SALV_TABLE 這個 Interface。
- 如果沒有的話,可用 CL_GUI_ALV_TREE 這個 Interface。CL_SALV_TABLE 的底層其實就是用這個 Interface。
- 程式碼請參考 => Code20080715
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 }}}