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