问题源自李宁的需求,就不说了。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.
一样可行。