FM实现F4帮助系列三:弹出框多筛选条件的搜索帮助(根据搜索帮助筛选字段)
 函数:F4IF_GET_SHLP_DESCR
 F4IF_START_VALUE_REQUEST
 效果图:
  
本例子代码:
 找到需要的帮助:
 
*&---------------------------------------------------------------------*
 *& Report  ZLM_TEST_045
 REPORT  zlm_test_045.
 TABLES makt.
 DATA:
 BEGIN OF str_f4,
 matnr TYPE matnr,
 maktx  TYPE maktx,
 END OF str_f4.
 DATA:l_it_f4 LIKE TABLE OF str_f4.
 SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
 SELECT-OPTIONS:
 s_matnr  FOR makt-matnr NO INTERVALS.
 SELECTION-SCREEN END OF BLOCK b1.
 "帮助
 AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_matnr-low.
 SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE l_it_f4.
 PERFORM frm_f4."  USING 'S_MATNR-LOW' .
 *&-------------------------------------------------------------------
 *& 搜索帮助
 *&-------------------------------------------------------------------
 FORM frm_f4.
 DATA g_shlp_descr_t             TYPE shlp_descr_t.
 DATA gwa_shlp_descr_t_interface TYPE ddshiface.
 DATA: gt_return_tab   TYPE TABLE OF ddshretval WITH HEADER LINE.
 "调用标准帮助
 CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
 EXPORTING
 shlpname = 'MAT1W'
 shlptype = 'SH'
 IMPORTING
 shlp     = g_shlp_descr_t.
 LOOP AT g_shlp_descr_t-interface INTO gwa_shlp_descr_t_interface.
 IF gwa_shlp_descr_t_interface = 'MATNR'.
 gwa_shlp_descr_t_interface-valfield = 'X'.
 MODIFY g_shlp_descr_t-interface FROM gwa_shlp_descr_t_interface.
 ENDIF.
 ENDLOOP.
 CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
 EXPORTING
 shlp          = g_shlp_descr_t
 maxrecords    = 500
 multisel      = 'X'
 TABLES
 return_values = gt_return_tab.
 "获取选中值 可以多选 拥有select options
 LOOP AT gt_return_tab.
 s_matnr-sign = 'I'.
 s_matnr-option = 'EQ'.
 s_matnr-low = gt_return_tab-fieldval.
 APPEND s_matnr.
 ENDLOOP.
 ENDFORM.                    " FRM_F4
 另外一个F4增强的例子,也是添加筛选字段:
 http://blog.sina.com.cn/s/blog_c0978c9b0101h1qf.html