SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: s_werks FOR marc-werks OBLIGATORY DEFAULT '1100' NO INTERVALS NO-EXTENSION.
SELECT-OPTIONS: s_matnr FOR marc-matnr OBLIGATORY NO INTERVALS NO-EXTENSION,
s_verid FOR mkal-verid OBLIGATORY NO INTERVALS NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK blk1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_verid-low.
PERFORM frm_verid_f4.
FORM frm_verid_f4 .
DATA: lt_ddshretval TYPE TABLE OF ddshretval.
DATA: lt_dynpread TYPE TABLE OF dynpread,
ls_dynpread TYPE dynpread,
lv_werks TYPE werks_d,
lv_matnr TYPE matnr.
ls_dynpread-fieldname = 'S_WERKS-LOW'.
APPEND ls_dynpread TO lt_dynpread.
ls_dynpread-fieldname = 'S_MATNR-LOW'.
APPEND ls_dynpread TO lt_dynpread.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynpread
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
CLEAR: ls_dynpread.
LOOP AT lt_dynpread INTO ls_dynpread.
CASE ls_dynpread-fieldname.
WHEN 'S_WERKS-LOW'.
lv_werks = ls_dynpread-fieldvalue.
WHEN 'S_MATNR-LOW'.
lv_matnr = ls_dynpread-fieldvalue.
ENDCASE.
CLEAR:ls_dynpread.
ENDLOOP.
SELECT verid,text1,matnr,werks,adatu,bdatu,bstmi,bstma
INTO TABLE @DATA(local_mkal)
FROM mkal
WHERE werks = @lv_werks
AND matnr = @lv_matnr
AND bdatu GE @sy-datum
AND adatu LE @sy-datum
AND mksp NE '1'
ORDER BY verid.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'VERID'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_VERID-LOW'
window_title = '选择生产版本'
value_org = 'S'
TABLES
value_tab = local_mkal
return_tab = lt_ddshretval
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDFORM.
效果