ABAP 随笔 ALV 上的下拉框

作者:SAPTAB 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
ABAP 随笔 ALV 上的下拉框 - 封面图
ABAP 随笔 ALV 上的下拉框 - 封面图

原创 Tab Zhu [ SAP TAB ](javascript:void\(0\);)

**点击蓝字关注我们**

富强 民主 文明 和谐

自由 平等 公正 法制

爱国 敬业 诚信 友善

_**01** _

**这个可以是个序号标题**

**不念过** **去**

**START**

**不畏将来**

如图在 ALV 下拉框内做了 1 到 5 的选择下拉框,下面一起来看下如何实施

ABAP 随笔 ALV 上的下拉框 - 封面图
ABAP 随笔 ALV 上的下拉框 - 封面图

## 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 是下面下拉框对应的组,可以用 23 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.有多个下拉框分组的时候效果:

ABAP 随笔 ALV 上的下拉框 - 封面图
ABAP 随笔 ALV 上的下拉框 - 封面图
ABAP 随笔 ALV 上的下拉框 - 封面图
ABAP 随笔 ALV 上的下拉框 - 封面图
ABAP 随笔 ALV 上的下拉框 - 封面图
ABAP 随笔 ALV 上的下拉框 - 封面图

这样应该理解了 handle= 1 / 2 时分组的概念了。

**不念过** **去**

**END**

**不畏将来**

ABAP 随笔 ALV 上的下拉框 - 封面图
ABAP 随笔 ALV 上的下拉框 - 封面图

**SAP ABAP TAB**

微信号 : TAB_JXZHU

后台回复’ABAP‘领取学习资料哈

长按二维码关注我们

SAPTAB

关于作者:SAPTAB

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP随笔ALV上的下拉框.md」整理生成,仅用于内部技术分享与学习交流。