如何创建下拉框

本文介绍在ABAP中创建下拉框的三种方法:通过字段域的FixedValues属性、在选择屏幕事件中使用FM VRM_SET_VALUES及在POV事件中调用F4IF_INT_TABLE_VALUE_REQUEST FM设置F4帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 在什么地方创建下拉框

用到的地方有DIALOG,选择屏幕两种.

2. 如何创建

1> 如果下拉框对应字段的Domain有Fixed Values,那么它会作为下拉框来作为选择值.

如:

PARAMETERS: pa_attyp type mara-attyp as LISTBOX VISIBLE LENGTH 10.

Your browser may not support display of this image.

效果如图:

Your browser may not support display of this image.

2> 在选择屏幕的AT SELECTION-SCREEN OUTPUT.即屏幕显示之前事件中调用FM: VRM_SET_VALUES来实现

.CALL FUNCTION "VRM_SET_VALUES"

EXPORTING

VRM_ID = '对应要设计下拉框的屏幕字段'

VALUES = '一个包含KEY与KTEXT字段的内表'

源码:
TYPE-POOLS: vrm.
PARAMETERS: pa_matnr TYPE mara-matnr AS LISTBOX VISIBLE LENGTH 10.

AT SELECTION-SCREEN OUTPUT.
PERFORM set_matnr_list.

*&---------------------------------------------------------------------*
*& Form set_matnr_list
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM set_matnr_list .

DATA: l_vrm_id TYPE vrm_id,
lt_values TYPE vrm_values,
lw_value TYPE vrm_value.

l_vrm_id = 'PA_MATNR'.

lw_value-key = 'F100-AA'.
lw_value-text = 'Machine Comp1'.
APPEND lw_value TO lt_values.

lw_value-key = 'F200-BB'.
lw_value-text = 'Material BB'.
APPEND lw_value TO lt_values.

CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = l_vrm_id
values = lt_values
EXCEPTIONS
id_illegal_name = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM. " set_matnr_list

Your browser may not support display of this image.

3> 对于DIALOG来说,可以在POV事件中处理, 调用FM:

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'Ref field on screen'

VALUE_ORG = 'B'

tables

value_tab = '有两列值的内表'

设置F4 help,传入的内表有两列,即可作为下拉框来使用.

注意VALUE_TAB参数对应的行类型中的字段的类型须是Data element,如果是基本类型的话, 则调用F4 帮助时这个字段不会显示在列表中.

另外也可以如PBO事件中调用VRM_SET_VALUES设置下拉框.

Your browser may not support display of this image.

设置输入字段属性Drop Down为List Box

另外相关属性有

Input :设置为possible, 输入帮助有效

另外Value List: 为SPACE时可以采用输入帮助的值作为下拉列表

为A时采用VRM_SET_VALUES的设置.

不过似乎设置不设置,不起作用.

1. Screen

PROCESS ON VALUE-REQUEST.
FIELD MARA-MATNR MODULE pov_matnr.

2. POV module

MODULE pov_matnr INPUT.

DATA: lw_value TYPE ty_povmat.

CLEAR: gt_values[].

lw_value-matnr = 'F100-AA'.
lw_value-text = 'Machine Comp1'.
APPEND lw_value TO gt_values.

lw_value-matnr = 'F200-BB'.
lw_value-text = 'Material BB'.
APPEND lw_value TO gt_values.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR'
dynpprog = sy-repid
dynpnr = '0100'
dynprofield = 'MARA-MATNR'
value_org = 'S'
TABLES
value_tab = gt_values
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDMODULE. " pov_matnr INPUT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值