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
The name of AA will be auto populated
*&———————————————————————*
*& 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.