Вот примерчик - в отладчике все увидешь.
А к знающим вопрос - обратите внимание на пораметр DYNPROFIELD.
Почему все работает если передать в параметр что угодно, но
если совсем ничего не передать, то значение не возвращается в поле
экрана?
Code:
REPORT ztest_01 .
PARAMETERS p_werks TYPE werks_d.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_werks.
PERFORM f4_for_werks.
*---------------------------------------------------------------------*
* FORM f4_for_werks *
*---------------------------------------------------------------------*
FORM f4_for_werks.
DATA: ls_value TYPE seahlpres,
lt_values TYPE TABLE OF seahlpres.
DATA: field TYPE dfies,
it_field TYPE dfies OCCURS 0.
DATA: BEGIN OF it_werk occurs 0,
werks LIKE t001w-werks,
name1 LIKE t001w-name1,
END OF it_werk.
DATA: repid LIKE sy-repid.
repid = sy-repid.
SELECT t~werks t~name1
INTO TABLE it_werk
FROM t001w AS t.
CLEAR field.
field-tabname = 'T001W'.
field-fieldname = 'WERKS'.
APPEND field TO it_field.
CLEAR field.
field-tabname = 'T001W'.
field-fieldname = 'NAME1'.
APPEND field TO it_field.
LOOP AT it_werk.
ls_value-string = it_werk-werks.
APPEND ls_value TO lt_values.
CLEAR ls_value.
ls_value-string = it_werk-name1.
APPEND ls_value TO lt_values.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'WERKS'
dynpprog = repid
dynpnr = sy-dynnr
dynprofield = 'Лишьбычто'
TABLES
value_tab = lt_values
field_tab = it_field.
ENDFORM. " F4_for_werks