dynamic search help to auto populate screen

Here is an sample program I created where a parameter has a search help that will auto populate another parameter. The program is not perfect and I will continue to update and explain in my next post.

Here you can also see how to disabled or grey out a field by using screen attribute input = 0 during selection screen output.

The function to be call are F4IF_INT_TABLE_VALUE_REQUEST, DYNP_VALUES_UPDATE. The rest I will let the code do the talking 😉

In this screenshot, I chose AA

Capture

The name of AA will be auto populated

Capture2

*&———————————————————————*
*& Report  ZALEX_SEARCHHELP_F4_SFLIGHT
*&
*&———————————————————————*
*&
*&
*&———————————————————————*

REPORT  ZALEX_SEARCHHELP_F4_SFLIGHT.

TYPES:BEGIN OF T_SCARR,
CARRID       TYPE SCARR-CARRID,
END OF T_SCARR,
T_RETURN_TAB  TYPE DDSHRETVAL.

DATA:S_SCARR      TYPE T_SCARR,
W_RETURN_TAB TYPE T_RETURN_TAB.
DATA:I_SCARR      TYPE STANDARD TABLE OF T_SCARR,
I_RETURN_TAB TYPE STANDARD TABLE OF T_RETURN_TAB.
DATA:W_DYNPFIELDS TYPE DYNPREAD,
I_DYNPFIELDS LIKE STANDARD TABLE OF DYNPREAD,
lv_carrname type SCARR-carrname.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS :P_ID TYPE SCARR-CARRID.
PARAMETERS :P_NAME TYPE SCARR-CARRNAME.
SELECTION-SCREEN END OF BLOCK B1.

“Disable parameter
at selection-screen output.
loop at screen.
if screen-name = ‘P_NAME’.
screen-input = 0.
modify screen.
endif.
endloop.

“F4 Help for CARRID
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_ID.
IF I_SCARR[] IS INITIAL.
SELECT CARRID
FROM SCARR
INTO TABLE I_SCARR.
ENDIF.

“Function module for F4 help
CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST’
EXPORTING
RETFIELD    = ‘CARRID’   “field name on f4 help window
DYNPPROG    = SY-REPID
DYNPNR      = SY-DYNNR
DYNPROFIELD = ‘P_CARRID’ “Screen field name
VALUE_ORG   = ‘S’
TABLES
VALUE_TAB   = I_SCARR
RETURN_TAB  = I_RETURN_TAB.

READ TABLE I_RETURN_TAB INTO W_RETURN_TAB INDEX 1.
P_ID = W_RETURN_TAB-FIELDVAL.
READ TABLE I_SCARR INTO S_SCARR WITH KEY CARRID = P_ID.

IF SY-SUBRC = 0.

select single CARRNAME
from SCARR
into lv_carrname
where CARRID = P_ID.

if sy-subrc EQ 0.
W_DYNPFIELDS-FIELDNAME    = ‘P_NAME’.
W_DYNPFIELDS-FIELDVALUE   = lv_carrname.

APPEND W_DYNPFIELDS TO I_DYNPFIELDS.
CLEAR W_DYNPFIELDS.

“DYNP_VALUES_UPDATE
CALL FUNCTION ‘DYNP_VALUES_UPDATE’
EXPORTING
DYNAME     = SY-REPID
DYNUMB     = SY-DYNNR
TABLES
DYNPFIELDS = I_DYNPFIELDS.
endif.
ENDIF.

Leave a comment