Да, можно, через CALLBACK-подпрограмму. Вот пример:
Code:
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'VBKD'
fieldname = 'BSTKD_E'
searchhelp = 'ZR2RE071_SPECIF_ZKZN'
shlpparam = 'BSTKD_E'
callback_program = sy-repid
callback_form = 'AT_F4_CALLBACK'
TABLES
return_tab = lt_return_tab
EXCEPTIONS
OTHERS = 5.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
LOOP AT lt_return_tab INTO ls_return_tab.
CASE ls_return_tab-fieldname.
WHEN 'BSTKD_E'.
cv_value = ls_return_tab-fieldval.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form at_f4_callback
*&---------------------------------------------------------------------*
* Callback- подпрограмма, вызываемая из Ф.М.'F4IF_FIELD_VALUE_REQUEST'
*----------------------------------------------------------------------*
FORM at_f4_callback
TABLES tp_record_tab STRUCTURE seahlpres
CHANGING ct_shlp TYPE shlp_descr_t
cs_callcontrol LIKE ddshf4ctrl.
DATA:
ls_selopt TYPE ddshselopt.
FIELD-SYMBOLS:
<fieldprop> TYPE ddshfprop,
<fielddescr> TYPE dfies.
* ограничение параметра 'Пр.номер спецификации'
CLEAR ls_selopt.
ls_selopt-shlpname = space.
ls_selopt-shlpfield = 'VBELN'.
ls_selopt-sign = 'I'.
ls_selopt-option = 'EQ'.
ls_selopt-low = ТРЕБУЕМОЕ ЗНАЧЕНИЕ.
ls_selopt-high = space.
APPEND ls_selopt TO ct_shlp-selopt.
* ограничение параметра 'Определение проекта'
CLEAR ls_selopt.
ls_selopt-shlpname = space.
ls_selopt-shlpfield = 'ZZPSPID'.
ls_selopt-sign = 'I'.
ls_selopt-option = 'EQ'.
ls_selopt-low = ТРЕБУЕМОЕ ЗНАЧЕНИЕ.
ls_selopt-high = space.
APPEND ls_selopt TO ct_shlp-selopt.
* запрет изменения параметра 'Определение проекта'
READ TABLE ct_shlp-fieldprop ASSIGNING <fieldprop>
WITH KEY fieldname = 'ZZPSPID'.
IF sy-subrc EQ 0.
<fieldprop>-shlpseldis = 'X'.
ENDIF.
* свойство средства поиска - "немедленный вывод"
ct_shlp-intdescr-dialogtype = 'D'.
ENDFORM. "at_f4_callback