屏幕多个字段需要通过程序客户化搜索帮助时,通过封装一个共用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.