Skip to Content

Sometimes we need to create a custom search help and fill more than one field in screen with a single selection.

This can be easily achieved by using FM to create this Search Help.

Here is an example to use in a screen with two fields.

Considering our screen has two fields:

VBAP-VBELN

VBAP-POSNR

We are going to set a Search help for VBAP-POSNR, but popup will show VBELN and POSNR, and will fill this two fields in our screen.

First we need to set PROCESS ON VALUE-REQUEST for VBAP-POSNR.

In screen Flow Logic, insert this code after PAI.

PROCESS ON VALUE-REQUEST.

  FIELD vbap-posnr MODULE zm_sh_posnr.

 

Now we have to code zm_sh_posnr module.

Here it is:

MODULE zm_sh_posnr INPUT.

  ” Types

  ” Table type for SH popup

  TYPES: BEGIN OF ys_sh,

           vbeln TYPE vbap-vbeln,

           posnr TYPE vbap-posnr,

         END OF ys_sh.

  ” Local Vars

  DATA: lt_sh  TYPE TABLE OF ys_sh,

        ls_sh  TYPE ys_sh,

        lt_map TYPE TABLE OF dselc,

        ls_map TYPE dselc.

  ” Load data

  SELECT vbeln posnr

    FROM vbap

    INTO TABLE lt_sh

    UP TO 50 ROWS.

  ” Set return fields

  ” Order

  CLEAR ls_map.

  ls_map-fldname = ‘F0001’.        ” Set that field 1 of SH table fills VBAP-VBELN

  ls_map-dyfldname = ‘VBAP-VBELN’.

  APPEND ls_map TO lt_map.

  ” Item

  CLEAR ls_map.

  ls_map-fldname = ‘F0002’.        ” Set that field 2 of SH table fills VBAP-VBELN

  ls_map-dyfldname = ‘VBAP-POSNR’.

  APPEND ls_map TO lt_map.

  ” Call Search Help Popup Function

  CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST’

    EXPORTING

      retfield        = ‘POSNR’

      dynpprog        = sy-repid

      dynpnr          = sy-dynnr

      dynprofield     = ‘VBAP-POSNR’

      value_org       = ‘S’

    TABLES

      value_tab       = lt_sh

      dynpfld_mapping = lt_map

    EXCEPTIONS

      parameter_error = 1

      no_values_found = 2

      OTHERS          = 3.

ENDMODULE.

It’s Done!

To report this post you need to login first.

2 Comments

You must be Logged on to comment or reply to a post.

Leave a Reply