最近做屏幕开发的时候,通过屏幕的POV事件动态生成Search Help时候,不能取到当面屏幕字段的值(必须要打一个回车键),为了解决此问题,可以通过Call 一个Function来动态取到屏幕的值,代码如下:
1、 100屏幕的POV事件
2、事件代码
DATA: wls_return TYPE ddshretval,
wlt_return LIKE TABLE OF wls_return.
data: it_dynpfields TYPE STANDARD TABLE OF dynpread,
wa_dynpfields TYPE dynpread.
CLEAR ws_t012.
REFRESH wt_t012.
CLEAR wa_dynpfields.
CLEAR it_dynpfields.
*解决屏幕输入时捕捉不到值的问题
**取公司代码屏幕字段的输入值
wa_dynpfields-fieldname = ‘P_BUKRS’.
APPEND wa_dynpfields TO it_dynpfields.
CALL FUNCTION ‘DYNP_VALUES_READ’
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = it_dynpfields.
READ TABLE it_dynpfields WITH KEY fieldname = ‘P_BUKRS’ INTO wa_dynpfields.
IF NOT wa_dynpfields-fieldvalue IS INITIAL.
P_BUKRS = wa_dynpfields-fieldvalue. “得到屏幕录入的值
ENDIF.
IF p_zz001 NE space.
CONCATENATE ‘%’ p_zz001 INTO p_zz001.
select zz001 zbanktxt
into corresponding fields of table wt_t012
* FROM ZFBANK WHERE BUKRS = P_BUKRS.
from zfbank where BUKRS = P_BUKRS AND zz001 like p_zz001.
ELSE.
select zz001 zbanktxt
into corresponding fields of table wt_t012
FROM ZFBANK WHERE BUKRS = P_BUKRS.
ENDIF.
CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST’
EXPORTING
retfield = ‘ZZ001′
value_org = ‘S’
TABLES
value_tab = wt_t012
return_tab = wlt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE wlt_return INDEX 1 INTO wls_return.
IF sy-subrc EQ 0.
p_zz001 = wls_return-fieldval.
ENDIF.
1、 100屏幕的POV事件
2、事件代码
DATA: wls_return TYPE ddshretval,
wlt_return LIKE TABLE OF wls_return.
data: it_dynpfields TYPE STANDARD TABLE OF dynpread,
wa_dynpfields TYPE dynpread.
CLEAR ws_t012.
REFRESH wt_t012.
CLEAR wa_dynpfields.
CLEAR it_dynpfields.
*解决屏幕输入时捕捉不到值的问题
**取公司代码屏幕字段的输入值
wa_dynpfields-fieldname = ‘P_BUKRS’.
APPEND wa_dynpfields TO it_dynpfields.
CALL FUNCTION ‘DYNP_VALUES_READ’
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = it_dynpfields.
READ TABLE it_dynpfields WITH KEY fieldname = ‘P_BUKRS’ INTO wa_dynpfields.
IF NOT wa_dynpfields-fieldvalue IS INITIAL.
P_BUKRS = wa_dynpfields-fieldvalue. “得到屏幕录入的值
ENDIF.
IF p_zz001 NE space.
CONCATENATE ‘%’ p_zz001 INTO p_zz001.
select zz001 zbanktxt
into corresponding fields of table wt_t012
* FROM ZFBANK WHERE BUKRS = P_BUKRS.
from zfbank where BUKRS = P_BUKRS AND zz001 like p_zz001.
ELSE.
select zz001 zbanktxt
into corresponding fields of table wt_t012
FROM ZFBANK WHERE BUKRS = P_BUKRS.
ENDIF.
CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST’
EXPORTING
retfield = ‘ZZ001′
value_org = ‘S’
TABLES
value_tab = wt_t012
return_tab = wlt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE wlt_return INDEX 1 INTO wls_return.
IF sy-subrc EQ 0.
p_zz001 = wls_return-fieldval.
ENDIF.