需求
在屏幕PAI事件中输入销售订单,点击回车带出相关描述等字段信息.
问题
在输入销售订单后回车可以正常带出描述相关字段信息,然后在下面的红框中手动输入一些数据,然后回车这时手动输入的数据将被清楚掉了.
分析原因
原因其实很简单:当我在输入销售订单回车后带出来的相关字段信息会直接存放到这个屏幕工作区中,(我把屏幕中所有字段全部放在了一个工作区GS_DATA). 当我每次回车的时候都会触发一次PAI事件,也就是说每一次都会更新当前的的工作区GS_DATA,
看代码(请多指教[抱拳])
SELECT SINGLE
vbap~ernam
vbap~zddyy AS zelwfyy
vbap~vbeln
vbap~ywtsj
vbap~vkaus
vbap~zaufnr AS aufnr
vbap~arktx AS zcpmc
vbak~bstnk
vbak~zysxm
vbak~zhzxm
vbak~zwadat AS zchrq
vbak~zwadat AS zscsj
zscwfd~zzwflx
zscwfd~zscwfdh
zscwfd~ztplx
zscwfd~zelwfyy
zscwfd~zwfyyms
zscwfd~zzrqf
zscwfd~zzrbm
zscwfd~zzrgx
zscwfd~zzrxr
zscwfd~zldzr
FROM vbap
LEFT JOIN vbak ON vbap~vbeln = vbak~vbeln
LEFT JOIN zscwfd ON vbap~vbeln = zscwfd~vbeln
INTO lvs_data
WHERE vbap~vbeln = gs_data-vbeln.
IF sy-subrc = 0.
MOVE-CORRESPONDING lvs_data TO gs_data.
" gs_data-zzrxr = lvs_ygmc.
IF gs_data-zscwfdh IS INITIAL.
gs_data-zifsc = '未创建'.
ELSE.
gs_data-zifsc = '已创建'.
ENDIF.
CASE gs_data-vkaus.
WHEN 'A' . gs_data-vkaus = '标准'.
WHEN 'B' . gs_data-vkaus = '试做'.
WHEN 'C' OR 'E' .
gs_data-vkaus = '重做'.
gs_data-vkaus = '修改'.
WHEN 'D' . gs_data-vkaus = '样品'.
WHEN OTHERS.
ENDCASE.
CLEAR lvs_data.
ENDIF.
解决方案 1
我目前想到道的是创建一个变量用来存放销售订单,然后在前面加个判断,判断在触发PAI是当前的销售订单号和上一次的是否一样,如果一样就EXIT
,不一样就把当前的销售订单号赋给一个变量.
看代码.
解决方案 2
这个解决的方法很简单,只需要加个语法即可ON CHAIN-REQUEST
FIELD: gs_data-vbeln MODULE get_data_pbi ON CHAIN-REQUEST .
欢迎各位大佬补充