ALV下拉框
如图在ALV下拉框内做了1到5 的选择下拉框,下面一起来看下如何实施
1.在GT_DATA中增加一个字段来用于下拉框的使用:
TYPES:BEGIN OF ty_data,
checkbox TYPE c,
matnr TYPE mara-matnr,
mtart TYPE mara-mtart,
matkl TYPE mara-matkl,
maktx TYPE makt-maktx,
context TYPE char10,"用于下拉框
END OF ty_data.
DATA gt_data TYPE TABLE OF ty_data WITH EMPTY KEY.
|
2.设置fieldcat属性:
设置context字段可输入,设置fieldcat-drdn_hndl
= ‘1’.
(这个1是下面下拉框对应的组,可以用2
3 4 5 6··· 来标记下拉框的组,以此来实现多个下拉框)
FORM frm_set_fieldcat.
DATA lv_pos TYPE i.
DATA ls_fieldcat LIKE LINE OF gt_fieldcat.
DEFINE %%append_fieldcat.
lv_pos = lv_pos + 1.
ls_fieldcat-col_pos = lv_pos.
ls_fieldcat-fieldname = &1."字段名
ls_fieldcat-coltext = &2."文本
* ls_fieldcat-no_zero = &3."去掉前导零
ls_fieldcat-ref_table = &3.
ls_fieldcat-ref_field = &4.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
END-OF-DEFINITION.
%%append_fieldcat:
'CHECKBOX' '选择' '' '',
'MATNR' '' 'MARA' 'MATNR',
'MTART' '' 'MARA' 'MTART',
'MATKL' '' 'MARA' 'MATKL',
'MAKTX' '' 'MAKT' 'MAKTX',
'CONTEXT' '下拉输入1' '' ''.
READ TABLE gt_fieldcat ASSIGNING FIELD-SYMBOL(<fs1>) WITH KEY fieldname = 'CONTEXT'.
IF sy-subrc EQ 0.
<fs1>-edit = 'X'.
<fs1>-drdn_hndl = '1'.“分组标识
ENDIF.
|
3.设置下拉框内容
如下图,set_drop_down_table()方法需要在 set_table_for_first_display()方法之前调用,否则下拉框没有下拉值。
Handle = 1 就是给下拉框分组
"ALV 下拉框
DATA:ls_drop_down TYPE lvc_s_drop,
lt_drop_down TYPE lvc_t_drop.
"句柄HANDLE 为I类型,相同数字为同一组下拉框
DO 5 TIMES.
CLEAR ls_drop_down.
ls_drop_down-handle = '1'.“对应分组标识
ls_drop_down-value = sy-index.
APPEND ls_drop_down TO lt_drop_down.
ENDDO.
|
"ALV 下拉框
cr_grid->set_drop_down_table(
it_drop_down = lt_drop_down
).
CALL METHOD cr_grid->set_table_for_first_display
EXPORTING
is_variant = ls_disvariant
i_default = 'X'
i_save = 'U'
is_layout = ls_layout
it_toolbar_excluding = lt_exclude
CHANGING
it_outtab = ct_data
it_fieldcatalog = ct_fieldcat.
|
4.有多个下拉框分组的时候效果:
这样应该理解了handle
= 1 / 2 时分组的概念了。