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
用到的地方有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