在AT SELECTION-SCREEN ON VALUE-REQUEST事件中,是不能直接取得选择屏幕字段的默认值或输入的值,如果搜索帮助的内容是根据选择屏幕的字段而变化的,那么需要通过函数 DYNP_VALUES_READ读取。对应的还存在一个更新到 屏幕 的函数 DYNP_VALUES_UPDATE
*&---开户行和银行账户号 搜索帮助
at selection-screen on value-request for p_bankn.
perform frm_request_f4_insmk using 'P_BANKN'.
form frm_request_f4_insmk using pv_field type help_info-dynprofld.
data: begin of ty_value_tab,
bankn type lfbk-bankn,
koinh type lfbk-koinh,
end of ty_value_tab.
data: lt_value_tab like table of ty_value_tab,
ls_value_tab like ty_value_tab.
data: l_path type string,
l_sel type string,
lit_zh type table of dynpread,
lwa_zh type dynpread,
lit_dyn type table of dynpread,
lwa_dyn type dynpread.
data l_lifnr type lfa1-lifnr .
clear l_lifnr.
if s_lifnr is initial.
lwa_dyn-fieldname = 'S_LIFNR-LOW'.
append lwa_dyn to lit_dyn.
call function 'DYNP_VALUES_READ' "获取选择屏幕上 供应商的值
exporting
dyname = sy-cprog "ABAP 系统字段:调用程序
dynumb = sy-dynnr "ABAP 系统字段:当前 Dynpro 的屏幕组
translate_to_upper = 'X'
tables
dynpfields = lit_dyn
exceptions
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
others = 11.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
read table lit_dyn into lwa_dyn with key fieldname = 'S_LIFNR-LOW'.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = lwa_dyn-fieldvalue
importing
output = l_lifnr.
else.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = s_lifnr-low
importing
output = l_lifnr.
endif.
select "根据选择屏幕上供应商的值取到合适的开户行和账户号
lfbk~bankn
lfbk~koinh
into corresponding fields of table lt_value_tab
from lfbk
where lifnr = l_lifnr.
call function 'F4IF_INT_TABLE_VALUE_REQUEST' "创建搜索帮助
exporting
retfield = 'BANKN' "搜索帮助的字段名
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = pv_field
value_org = 'S'
tables
value_tab = lt_value_tab "表内就是搜索帮助显示的值
exceptions
parameter_error = 1
no_values_found = 2
others = 3.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
endform.
二:调用SE11搜索帮助:MATCHCODE OBJECT
parameters:p_ddlx(10) matchcode object zfi003n obligatory.