Skip to Content

Hy everybody,

i recently had the requirement to get the values of an existing searchhelp. Pretty simple when u are dialog modus. But unfortunatly the requirement was, that the search help had to be called in backgroud without opening the searchhelp dynpros (it’s called in a oData Service Implementation). I didn’t want to recreate the existing search logic, because it wasn’t a simple search help. Most of the logic has been put in a search help exit and i didn’t want to write any kind of wrapper by myself or implement the search logic again. I would like to share following code with u, so next time somebody has this requirement, less research has to be done as i found nothing on scn. For my requirement this solution works fine, as all dynpro fields are supressed. I think you can use it as approach when u have similiar requirements. I’ve also provided the source as attachment.

If you are using this approach, test it well, as i made the experience, that search helps can be called in various ways & behaviour might be different on your system depending on release & user settings.

Any comments & improvements are kindly welcomed.

Have a nice day.

Best regards,

Michael


*&---------------------------------------------------------------------*
*& Report  ZZTAB_SHLP_BG *&
*&---------------------------------------------------------------------*
*& Albrecht Michael, 28.01.2015 *&
*&---------------------------------------------------------------------*
REPORT zztab_shlp_bg.
DATA:
lv_search_help      TYPE ddobjname,
lv_search_help_f4if TYPE shlpname,
lt_return_tab        TYPE STANDARD TABLE OF ddshretval,
ls_search_help_infos TYPE dd30v.
PARAMETER: p_shlp TYPE string DEFAULT 'Z_YOURHELP'.
START-OF-SELECTION.
lv_search_help = p_shlp.
lv_search_help_f4if = lv_search_help.
* Get Search Help Information
CALL FUNCTION 'DDIF_SHLP_GET'
EXPORTING
name          = lv_search_help
IMPORTING       dd30v_wa      = ls_search_help_infos
EXCEPTIONS
illegal_input = 1
OTHERS        = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
* Call Search Help in Background
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname             = ls_search_help_infos-selmethod
fieldname           = ''
searchhelp          = lv_search_help
value               = '*'
display             = ' '
suppress_recordlist = 'X'
selection_screen    = ' '
TABLES
return_tab          = lt_return_tab
EXCEPTIONS
field_not_found     = 1
no_help_for_field   = 2
inconsistent_help   = 3
no_values_found     = 4
OTHERS              = 5.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.


To report this post you need to login first.

Be the first to leave a comment

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

Leave a Reply