应用场景:选择屏幕值不回车或者第一次进入读取memory中的值,在点选搜索帮助的时候是获取不到其它字段值的变化的。
解决方案:使用函数DYNP_VALUES_READ获取当前屏幕值
DATA: lt_dynpread TYPE STANDARD TABLE OF dynpread WITH HEADER LINE.
DATA: lw_dynpread TYPE dynpread .
lw_dynpread-fieldname = 'P_BUKRS'.
APPEND lw_dynpread TO lt_dynpread .
CALL FUNCTION 'DYNP_VALUES_READ'
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
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE lt_dynpread INTO lw_dynpread INDEX 1.
p_bukrs = lw_dynpread-fieldvalue.