屏幕多个字段需要通过程序客户化搜索帮助时,通过封装一个共用form,提高程序的通用性
*&---------------------------------------------------------------------*
*& Form FRM_SEARCH_HELP
*&---------------------------------------------------------------------*
*& search help
*&---------------------------------------------------------------------*
*& --> GT_LFA1_SEL
*& --> P_
*&---------------------------------------------------------------------*
FORM frm_search_help TABLES pt_value
USING VALUE(pv_retfield) VALUE(pv_dynprofield).
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = pv_retfield
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = pv_dynprofield
value_org = 'S'
TABLES
value_tab = pt_value
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDFORM.
其中:
pt_value传入搜索帮助值的内表
pv_retfield 内表pt_value对应的字段
pv_dynprofield屏幕接收值得字段
INITIALIZATION.
PERFORM frm_set_init_val.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zernam-low.
PERFORM frm_search_help TABLES gt_lfa1_sel USING 'LIFNR' 'S_ZERNAM-LOW'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zernam-high.
PERFORM frm_search_help TABLES gt_lfa1_sel USING 'LIFNR' 'S_ZERNAM-HIGH'.
AT SELECTION-SCREEN.
START-OF-SELECTION.
其中:gt_lfa1_sel的值在form frm_set_init_val.中提前获取
**********************************************************************
* 搜索帮助值列表:客户数据上Z1代码,E开头的供应商代码
CLEAR: gt_lfa1_sel.
SELECT lifnr name1
INTO CORRESPONDING FIELDS OF TABLE gt_lfa1_sel
FROM lfa1
WHERE lifnr LIKE 'E%'.
SORT gt_lfa1_sel BY lifnr.
gt_lfa1_sel定义如下
TYPES:BEGIN OF ty_lfa1,
lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
END OF ty_lfa1.
"选择条件->业务员编码 搜索帮助
DATA: gt_lfa1_sel TYPE STANDARD TABLE OF ty_lfa1,
gs_lfa1_sel TYPE ty_lfa1.