前言
开发报表的过程中,查询界面有时候会使用到搜索帮助,这里记录下。
1、F4IF_INT_TABLE_VALUE_REQUEST
此例子是是SAP用户的搜索帮助。
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ERNAM-LOW.
DATA:BEGIN OF IT_USER OCCURS 0,
BNAME LIKE USER_ADDR-BNAME,
NAME_TEXTC LIKE USER_ADDR-NAME_TEXTC,
END OF IT_USER.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE IT_USER
FROM USER_ADDR.
SELECT WESUSER AS BNAME WESNAME AS NAME_TEXTC
APPENDING TABLE IT_USER
FROM ZWES_UNAME.
SORT IT_USER BY BNAME.
DELETE ADJACENT DUPLICATES FROM IT_USER COMPARING BNAME.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'BNAME'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'S_ERNAM-LOW'
VALUE_ORG = 'S'
CALLBACK_PROGRAM = SY-REPID
TABLES
VALUE_TAB = IT_USER
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
2、F4各个字段作用
RETFIELD = ‘BNAME’ "大写,可选值内表的字段名
DYNPPROG = SY-REPID "返回的输入框所在的main program
DYNPNR = SY-DYNNR "返回的输入框所在屏幕
DYNPROFIELD = ‘S_ERNAM-LOW’
VALUE_ORG = ‘S’ "就写’S’
TABLES
VALUE_TAB = IT_USER "可选值的内表
3、自定义搜索帮助HELP_VALUES_GET_WITH_TABLE
有时候需要自定义搜索帮助里面的内容,如图定义字段
DATA:BEGIN OF t_value OCCURS 0,
field(40) TYPE c,
END OF t_value.
DATA:gt_fields LIKE TABLE OF help_value WITH HEADER LINE.
*-------------------------------------自定义交易类型通用帮助-------------------------------------------*
FORM init.
gt_fields-tabname = 'ZTFDT'.
gt_fields-fieldname = 'PAYTYPECODE'.
gt_fields-selectflag = 'X'.
APPEND gt_fields.
gt_fields-tabname = 'ZTFDT'.
gt_fields-fieldname = 'V_TEXT'.
gt_fields-selectflag = space.
APPEND gt_fields.
gt_fields-tabname = 'ZTFDT'.
gt_fields-fieldname = 'STRAS'.
gt_fields-selectflag = space.
APPEND gt_fields.
SELECT * FROM ztfdt.
t_value-field = ztfdt-paytypecode.
APPEND t_value.
t_value-field = ztfdt-v_text.
APPEND t_value.
ENDSELECT.
ENDFORM.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ype.
PERFORM get_tfdt USING s_ype text-001.
FORM get_tfdt USING s_ype p_text.
CALL FUNCTION 'HELP_VALUES_GET_WITH_TABLE'
EXPORTING
fieldname = 'PAYTYPECODE'
tabname = 'ZTFDT'
title_in_values_list = p_text
IMPORTING
select_value = s_ype
TABLES
fields = gt_fields
valuetab = t_value.
ENDFORM.
gt_fields-tabname = ‘ZTFDT’. "表的名称
gt_fields-fieldname= ‘PAYTYPECODE’. "表字段名称