在做搜索帮助时,需要传入几个默认的条件,但是默认的条件是动态的,
就比如一个账号希望展示的是其他国家的公司,一个希望展示的中国的公司
TABLES: t001.
SELECT-OPTIONS: s_bukrs FOR t001-bukrs.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_bukrs-low.
DATA: lt_return TYPE TABLE OF ddshretval.
SELECT bukrs,butxt,land1 FROM t001 INTO TABLE @DATA(lt_data).
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'BUKRS' "内表中用于搜索帮助的字段
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_BUKRS-LOW' "屏幕字段
value_org = 'S'
callback_form = 'F4HELP_SETUP'
callback_program = sy-repid
TABLES
value_tab = lt_data "用于展示数据的内表
return_tab = lt_return
EXCEPTIONS
parameter_error = 0
no_values_found = 0
OTHERS = 0.
IF sy-subrc = 0.
ENDIF.
FORM f4help_setup TABLES record_tab STRUCTURE seahlpres
CHANGING shlp TYPE shlp_descr
callcontrol LIKE ddshf4ctrl.
DATA: ls_intdescr LIKE shlp_intds.
SET PARAMETER ID 'LND' FIELD 'US'.
IF line_exists( shlp-fieldprop[ 3 ] )."至于是第几个需要shlp-fielddescr[ domname = 'BUKRS' ]-fieldname判断
shlp-fieldprop[ 3 ]-defaultval = 'LND'.
shlp-fieldprop[ 3 ]-shlpseldis = 'X'."设置了则在点开搜索帮助时不可以更改
ENDIF.
shlp-intdescr-dialogtype = 'C'. "设置显示模式
callcontrol-no_maxdisp = ''.
callcontrol-maxrecords = '50'. "最大显示数量
ENDFORM.
使用PARAMETERID可以实现,具体可以多看看集合搜索帮助里的MAT1