問題源自李寧的需求,就不說了。app
關於ABAP中的紅綠燈網上也有不少資料,不過貌似都是ABAP的程序,沒怎麼注意。後來根據需求要在Dynpro上也作出那樣的效果,因此,研究了一下。ui
這種紅綠燈在ABAP中顯示時是以ICON的方式被建立並顯示的,作過ABAP開發的人應該都知道那個Type Group‘ICON’裏面有幾乎全部的ABAP的ICON。spa
像那種鎖標誌,自開發的話可能都是須要點擊後變成
這樣的,其餘人怎麼作的我不清楚,不過,我從一開始研究這個就用
'@06@'來作按鈕的顯示,而後點擊後修改按鈕的顯示爲
'@07@'。這種方法簡單。其餘的按鈕圖標就不介紹了,有空的話能夠本身去ICON這個類型池裏看看,研究研究。3d
下面來講說此次的Dynpro的紅綠燈顯示:code
1:TABLE裏作顯示blog
由於對TABLE比較熟,因此一開始研究的時候就以TABLE來研究了。效果如圖:圖片
主要就是將TABLECOLUMN設成IMAGE類型,而後在賦值的時候賦上‘ ICON_RED_LIGHT’‘ ICON_YELLOW_LIGHT’‘ ICON_GREEN_LIGHT’就能顯示成這種效果。開發
2:ALV裏作顯示get
由於ALV裏顯示和TABLE的原理是同樣的,效果也同樣的。如圖:it
在ALV初始化的時候給對應的列作個IMAGE類型
when 'ICON'. lr_column_header = ls_column-r_column->create_header( ). lr_column_header->set_text( 'LIGHT' )."下面四行能夠將顯示的文本內容變爲圖標 data: lr_image type ref to cl_salv_wd_uie_image. create object lr_image. lr_image->set_source_fieldname( ls_column-id ). ls_column-r_column->set_cell_editor( lr_image ).
在賦值的時候
ls_icon_s-item = '10001'. ls_icon_s-icon = 'ICON_GREEN_LIGHT'. append ls_icon_s to lt_icon_s.
這樣就能完美的顯示出來了。由於是作的圖片顯示,因此對於那些顯示圖片的需求,這種方法一樣適用。
說明:ALV裏的顯示是咱們的強總給研究的。
最後申明一下:在賦值的時候不只能夠用‘ ICON_YELLOW_LIGHT’這種按鈕名稱的方法,還能夠用 '@0A@'這種來顯示。
ls_icon-item = '100001'. ls_icon-icon = '@0A@'. APPEND ls_icon to lt_icon.
一樣可行。