Ну не знаю, как на счёт SH, но сделать что-то ОЧЕНЬ похожое возможно
Я обрабатывал событие
Code:
process on value-request.
field mara-mstae module xyz.
Вот содержание модуля
Code:
data: begin of namelist occurs 1,
feldname(21),
end of namelist.
namelist-feldname = 'MARA-MSTAE'.
append namelist.
namelist-feldname = 'T141T-MTSTB'.
append namelist.
data: begin of fields occurs 10.
include structure help_value.
data: end of fields.
* формируем таблицу для результатов поиска
call function 'TRANSFER_NAMES_TO_FIELDS'
exporting
selectfield = 'MSTAE'
tables
fields = fields
namelist = namelist.
data: begin of full_table occurs 0,
mmsta like t141-mmsta,
mtstb like t141t-mtstb,
end of full_table.
select t141~mmsta mtstb into table full_table
from t141 inner join t141t on t141~mmsta = t141t~mmsta
and t141t~spras = sy-langu.
data select_value like help_info-fldvalue.
* выводим экран с результатами поиска
call function 'HELP_VALUES_GET_NO_DD_NAME'
exporting
display = ''
selectfield = 'MSTAE'
titel = 'Статус материала нескольких заводов'
importing
select_value = select_value
tables
fields = fields
full_table = full_table
exceptions
full_table_empty = 1.
* обновляем данные 100го экрана
data val_tab like dynpread occurs 1 with header line.
val_tab-fieldname = 'MSTAE_TEXT'.
val_tab-fieldvalue = mstae_text.
val_tab-fieldinp = 'C'.
append val_tab.
call function 'DYNP_VALUES_UPDATE'
exporting
dyname = 'ZNMM_MSTAE_SET'
dynumb = '0100'
tables
dynpfields = val_tab
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 <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
Получается по f4 моя табличка