Von Peter Langner auf Samstag, 12. März 2011
Kategorie: Tipps und Tricks

Wie Kann Ich Eine Suchhilfe Aufrufen?

Im Data Dictonary definierte Suchhilfen werden in der Regel einem Datenelement oder einem Datenfeld in einer Tabelle oder Struktur zugeordnet. Wenn diese Struktur eine Anzeigestruktur eines Dynpros ist, so wird zur Laufzeit auf dem Dynpro die F4-Hilfe angeboten.

Manchmal ist es notwendig z.B. in einem Report eine Suchhilfe explizit aufzurufen. Der folgende Programmausschnitt zeigt beispielhaft, wie dies umgesetzt werden kann.

Dabei ist "p_ibi" ein Selektionsparameter, für den der Aufruf der Suchhilfe "IBSP" erfolgen soll. Zurückgegeben werden soll von der Suchhilfe das Feld "INSTANCE".

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ibi.
DATA:
lt_return_values TYPE TABLE OF ddshretval,
ls_return_values TYPE ddshretval,
l_rc TYPE sy-subrc,
l_shlp TYPE shlp_descr,
ls_interface TYPE ddshiface.

* Die Struktur der Suchhilfe füllen
CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
EXPORTING
shlpname = 'IBSP'
shlptype = 'SH'
IMPORTING
shlp = l_shlp.

* Die Rückgabewerte festlegen
READ TABLE l_shlp-interface WITH KEY shlpfield = 'INSTANCE' INTO ls_interface.
IF sy-subrc = 0.
ls_interface-valfield = 'X'.
MODIFY l_shlp-interface FROM ls_interface INDEX sy-tabix.
ENDIF.

* Die Suchhilfe aufrufen
CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
EXPORTING
shlp = l_shlp
disponly = ' '
maxrecords = 500
multisel = ' '
cucol = sy-cucol
curow = sy-curow
IMPORTING
rc = l_rc
TABLES
return_values = lt_return_values.

* Den ausgewählten Wert setzen
IF l_rc = 0.
READ TABLE lt_return_values INTO ls_return_values INDEX 1.
p_ibi = ls_return_values-fieldval.
ENDIF.

Kommentare hinterlassen