ALV中下拉列表列的实现
有時候我們可以把一些字段設置為下拉,比如一些類型,一些字段的值是比較固定的一些值,如性別等。設置為下拉,和設置超級鏈接是類似的,也是使用了一個內表存放了句柄和對應的值,這個表類型為”LVC_T_DROP”.不過傳遞給 ALV 的方式有點區別.超級鏈接是通過方法”SET_TABLE_FOR_FIRST_DISPLAY”
的參數來傳遞的,而下拉的內表傳遞需要使用方法”SET_DROP_DOWN_TABLE”. (對OOALV來說)如果我們希望把這個列都設置為下拉,那么我們可以在字段目錄中,把控制字段”DRDN_HNDL”指向對應的下拉內表的句柄就可以了。
首先定義句柄內表和對句柄內表操作的工作區:
*定義下拉表
DATA:gt_drp TYPE lvc_t_drop.
DATA:gs_drp TYPE lvc_s_drop.
*向下拉表中填充數據,handle值相同的為一組下拉。
FORM prepare_drilldown_values.
gs_drp-handle = ‘1′ .
gs_drp-value = ‘JFK-12′ .
APPEND gs_drp TO gt_drp .
gs_drp-handle = ‘1′ .
gs_drp-value = ‘JSF-44′ .
APPEND gs_drp TO gt_drp .
gs_drp-handle = ‘1′ .
gs_drp-value = ‘KMDA-53′ .
APPEND gs_drp TO gt_drp .
gs_drp-handle = ‘1′ .
gs_drp-value = ‘SS3O/N’ .
APPEND gs_drp TO gt_drp .
ENDFORM. ? ? ? ? ? ? ? ? ? ?”prepare_drilldown_values
*定義字段目錄中,對DRDN_HNDL進行設置,設置為1的話,該字段的下拉組為gt_drp中handle為1的組:
form fc.
…..
‘S’ ‘TABNAME’ ? ‘GT_MARA’ ,
” ?’SCRTEXT_M’ ‘DRP’ ,
” ?’DRDN_HNDL’ ‘1′,
” ?’EDIT’ ? ? ?’X’,
‘E’ ‘FIELDNAME’ ‘DRP’ .
…..
endform.
然后在調用alv之前:
CALL METHOD gs_alv->set_drop_down_table
EXPORTING
it_drop_down = gt_drp.
CALL METHOD gs_alv->set_table_for_first_display
EXPORTING
is_layout ? ? ? ? ? ?= gs_layout
it_toolbar_excluding = g_toolbar
it_hyperlink ? ? ? ? = gt_hype
CHANGING
it_outtab ? ? ? ? ? ?= gt_mara[]
it_fieldcatalog ? ? ?= gt_fieldcat.
如果是某個單元格設置為下拉,那我們就需要在數據顯示的內表中增加一個句柄字段(如果是有多個不同的字段需要設置下拉,可以增加多個字段),同時得在字段目錄里設置”DRDN_FIELD”
總結
以上是生活随笔為你收集整理的ALV中下拉列表列的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ABAP ALV检查单元格更新数据
- 下一篇: 设置ALV单元格可编辑状态