ALV參考文檔 ( 7 ) -取出和設置滾動條狀態

取出和設置滾動條狀態
有一對get,set方法用來得到和設置滾動條狀態。
Get_scroll_info_via_id:這個方法用來得到滾動條狀態。他有三個輸出參數,es_col_info輸出最左邊的字段名,es_row_no輸出最頂端的行號,es_row_info已經不再使用。
Set_scroll_info_via_id:這個方法用來設置滾動條的狀態。他的參數和上面的一樣。
和選擇一樣當進行屏幕切換時,應該在切換之前通過get方法存儲滾動條狀態信息,切換之後通過set方法設置滾動條狀態。
顏色設置
可以在ALV中爲某行,某列以及某個單元格設置顏色。
爲整列設置顏色
若想爲某列設置顏色,你可以使用field catalog的emphasize字段。只要在field catalog內表中爲該列行的emphasize字段設置顏色碼就行。
顏色碼的結構如下:

                         

Cxyz
color
1/0:intensified on/off
1/0:inverse on/off
x
Color
Intended for
1
Gray-blue
headers
2
Light gray
List bodies
3
yellow
totals
4
Blue-green
Key columns
5
green
Positive threshold value
6
red
Negative threshold value
7
orange
Control levels
Field catalog內表中的key setting會覆蓋這裏的顏色設置。所以如果想甚至與key color不一樣的顏色,就要把field catalog中的key字段設置爲space。然而如果是通過功能模塊自動產生的field catalog那麼就應該注意key fields是自動設置的。
爲整行設置顏色
爲整行設置顏色有點兒複雜,爲了爲一行設置顏色,需要在要顯示的內表中增加一個字段,這個字段應該是長度爲4的字符型。所以需要修改我們顯示內表的定義:
*---- internal table holding list data
DATA BEGIN OF gt_list OCCURS 0.
INCLUDE STRUCTURE SFLIGHT.
DATA rowcolor(4) TYPE c.
DATA END OF gt_list.
很明顯你需要把顏色代碼填充到這個字段。它的格式必須跟上面所描述的一樣。不過ALV怎麼能知道他是顏色代碼字段。你可以通過layout structure中的INFO_FNAME字段告訴alv顏色代碼字段的名字。
Eg:
   Ps_layout-info_fname = ‘ROWCOLOR’.
可以在運行的任何時候設置這個字段。然而按照屏幕的邏輯,只有在對ALV進行刷新的時候這種設置纔能有效。你還可以使用下面介紹的部分設置整行的顏色,不過這個方法的效率纔是最高的。
設置單元格的顏色
這個過程跟設置整行的顏色的過程沒什麼區別。不過由於具體的單元格的位置需要兩個參數才能被確認,所以過程稍有不同。比較複雜的所在主要是需要在要顯示的內表中插入個表類型的字段。這將是我們要顯示的表的結構變爲DEEP。不過alv grid還可以處理它。
這個表的類型必須是LVC_T_SCOL。如果想設置整個行的顏色,這個內嵌的表中必須有一行fname爲空的行。顏色值在字段col中設置,0或1在字段int中設置intensified,在字段inv中設置inverse。
如果想設置某個單元格的顏色,就在這個內嵌表中插入一行並且在fname中填入要設置顏色的那個字段。設置整個列的顏色的方法很明顯便是在要顯示的內表中的每一行的內嵌表中插入包含這個字段的一行。
同樣key field的顏色將會覆蓋你的設置。這也正是在這個內嵌表中有個字段‘nokeycol’.通過這個字段可以避免顏色設置被key field的顏色設置覆蓋。
同時我們還要告訴alv grid那個內表包含顏色數據。Layout structure的ctab_fname字段便是作這個用的。
*-----internal table holding list data
DATA BEGIN OF gt_list OCCURS 0.
INCLUDE STRUCTURE SFLIGHT.
DATA rowcolor(4) TYPE c.
DATA cellcolors TYPE lvc_t_scol.
DATA END OFgt_list.
DATA: ls_cellcolor TYPE lvc_s_scol.
 
READ TABLE gt_list INDEX 5.
Ls_cellcolor-fname = ‘SEATSOCC’.
Ls_cellcolor-color-col = ‘7’.
Ls_cellcolor-color-int = ‘1’.
APPEND ls_cellcolor TO gt_list-cellcolors.
MODIFY gt_list INDEX 5.
在顏色設置中也有優先級順序,它們是cell setting row setting和column setting。
發佈了4 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章