如何使用按钮调用标准搜索F4帮助

280 阅读1分钟

通常我们都是通过SE11,创建一个搜索帮助,然后通过把这个搜索帮助配置到数据元素,或者结构表中,在表单维护或者搜索条件中就会在input field里面带出一个搜索帮助的小框。但是有的时候我们又需要通过一个按钮事件或者下拉事件,或者其他事件去主动调用SE11创建的搜索帮助,那我们是如何写代码呢?那就是调用函数F4IF_START_VALUE_REQUEST

在事件的方法里面:

 1. 读取SE11搜索帮助的基本信息

CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
      EXPORTING
        shlpname = 'APB_LPD_ICONS' "<--搜索帮助的名称
      IMPORTING
        shlp     = ls_shlp.

2. 据搜索帮助的信息,我们进行告诉需要告诉函数F4IF_START_VALUE_REQUEST,我们需要在用户选择之后获取那行字段。

    LOOP AT ls_shlp-interface ASSIGNING FIELD-SYMBOL(<ls_interface>).
      <ls_interface>-valtabname = <ls_interface>-valfield = abap_true.
    ENDLOOP.

    LOOP AT ls_shlp-fieldprop ASSIGNING FIELD-SYMBOL(<ls_fieldprop>).
      <ls_fieldprop>-shlpoutput = abap_true.
    ENDLOOP.

3. 调用搜索帮助,并获得用户选择的数据。

    CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
      EXPORTING
        shlp          = ls_shlp
      IMPORTING
        rc            = lv_subrc
      TABLES
        return_values = lt_retval.

    IF lt_retval IS NOT INITIAL.
      READ TABLE lt_retval
      INTO ls_retval
      INDEX 1.
      MESSAGE i000(oo) WITH ls_retval-fieldval.
    ENDIF.

如下图: