Hi Team,
I have created an F4 help for the select option.
Please find the below code.
REPORT ytest.
DATA: v_field TYPE fieldname.
SELECT-OPTIONS: s_field FOR v_field NO INTERVALS.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-name = 'S_FIELD-LOW'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_field-low.
* Local type declarations
TYPES : BEGIN OF t_flds,
tabname TYPE dfies-tabname,
fieldname TYPE dfies-fieldname,
keyflag TYPE dfies-keyflag,
fieldtext TYPE dfies-fieldtext,
END OF t_flds.
CONSTANTS: lc_field TYPE fieldname VALUE 'FIELDNAME'.
* Local data declarations
DATA:
ls_flds TYPE t_flds,
lt_flds TYPE STANDARD TABLE OF t_flds,
ls_values TYPE ddshretval,
lt_values TYPE STANDARD TABLE OF ddshretval,
l_values TYPE STANDARD TABLE OF ddshretval,
lt_dfies TYPE TABLE OF dfies,
ls_dfies TYPE dfies.
* Get field details of the Table
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = 'MARC''
langu = sy-langu
TABLES
dfies_tab = lt_dfies
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc = 0.
LOOP AT lt_dfies INTO ls_dfies WHERE fieldname NE 'MANDT'.
MOVE-CORRESPONDING ls_dfies TO ls_flds.
APPEND ls_flds TO lt_flds.
ENDLOOP.
ELSE.
EXIT.
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = lc_field
window_title = 'Select the Table Field'(001)
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_FIELD-LOW'
value_org = 'S'
multiple_choice = 'X'
display = 'F'
TABLES
value_tab = lt_flds
return_tab = lt_values.
IF sy-subrc EQ 0.
l_values[] = lt_values[].
ENDIF.
s_field-sign = 'I'.
s_field-option = 'EQ'.
LOOP AT l_values INTO ls_values .
s_field-low = ls_values-fieldval.
APPEND s_field.
ENDLOOP.
DATA: lt_dynpread TYPE STANDARD TABLE OF dynpread,
lwa_dynpread TYPE dynpread.
READ TABLE s_field INDEX 1.
IF sy-subrc = 0.
lwa_dynpread-fieldname = 'S_FIELD-LOW'.
lwa_dynpread-fieldvalue = s_field-low.
APPEND lwa_dynpread TO lt_dynpread.
* Update the screen field values
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynpread
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
undefind_error = 7
OTHERS = 8.
IF sy-subrc NE 0.
ENDIF.
ENDIF.
It will show checkboxes for the fields when you execute the program. once you select the field and go back again to update your selection it will get refreshed and the field which you selected initially will be unchecked. I need to retain my first selection and it should not get unchecked.
Please let me know how can we go about it.
Regards
Sunil Kumar