当前位置:网站首页>SM30 表维护视图数据保存前 数据校验事件
SM30 表维护视图数据保存前 数据校验事件
2022-08-03 03:38:00 【rogerix4】
1. 效果
- 数据校验结果
2. 实现
- 修改表维护视图事件
- 新建数据保存前校验子程序
- 转到子程序
- 实现代码
FORM frm_save_before.
DATA: l_lenght TYPE i,
l_text TYPE string,
l_error TYPE c,
wa_tab TYPE zvsd_zz001.
LOOP AT total.
IF <action> = 'U' OR
<action> = 'N'.
"必填校验
MOVE-CORRESPONDING <vim_total_struc> TO wa_tab.
IF wa_tab-city1 IS INITIAL.
l_text = '行:' && sy-tabix && ' 城市必填!'.
MESSAGE l_text TYPE 'S' DISPLAY LIKE 'E'.
vim_abort_saving = abap_true."c_abrt_save.
sy-subrc = 4.
RETURN.
ELSEIF wa_tab-city2 IS INITIAL.
l_text = '行:' && sy-tabix && ' 区域必填!'.
MESSAGE l_text TYPE 'S' DISPLAY LIKE 'E'.
l_error = 'E'.
vim_abort_saving = abap_true."c_abrt_save.
sy-subrc = 4.
RETURN.
ELSEIF wa_tab-street IS INITIAL.
l_text = '行:' && sy-tabix && ' 详细地址必填!'.
MESSAGE l_text TYPE 'S' DISPLAY LIKE 'E'.
l_error = 'E'.
vim_abort_saving = abap_true."c_abrt_save.
sy-subrc = 4.
RETURN.
ENDIF.
"自动去除空格
CONDENSE wa_tab-city1 NO-GAPS. "城市
CONDENSE wa_tab-city2 NO-GAPS. "区域
CONDENSE wa_tab-str_suppl1 NO-GAPS. "街道
CONDENSE wa_tab-street NO-GAPS. "详细地址
MOVE-CORRESPONDING wa_tab TO <vim_total_struc>.
"数据校验
CLEAR l_lenght.
l_lenght = strlen( wa_tab-city1 ) - 1.
IF wa_tab-city1+l_lenght(1) NE '市'.
l_text = '行:' && sy-tabix && ' 输入错误,请输输入正确的城市信息(XX市)!'.
MESSAGE l_text TYPE 'S' DISPLAY LIKE 'E'.
l_error = 'E'.
vim_abort_saving = abap_true."c_abrt_save.
sy-subrc = 4.
RETURN.
ENDIF.
CLEAR l_lenght.
l_lenght = strlen( wa_tab-city2 ) - 1.
IF wa_tab-city2+l_lenght(1) NE '市' AND
wa_tab-city2+l_lenght(1) NE '区' AND
wa_tab-city2+l_lenght(1) NE '县'.
l_text = '行:' && sy-tabix && ' 输入错误,请输正确区县信息(XX市/XX区/XX县)!'.
MESSAGE l_text TYPE 'S' DISPLAY LIKE 'E'.
l_error = 'E'.
vim_abort_saving = abap_true."c_abrt_save.
sy-subrc = 4.
RETURN.
ENDIF.
IF wa_tab-str_suppl1 IS NOT INITIAL.
CLEAR l_lenght.
l_lenght = strlen( wa_tab-str_suppl1 ) - 2.
IF wa_tab-str_suppl1+l_lenght(2) NE '街道'.
l_text = '行:' && sy-tabix && ' 输入错误,请输正确街道信息(XX街道)!'.
MESSAGE l_text TYPE 'S' DISPLAY LIKE 'E'.
l_error = 'E'.
vim_abort_saving = abap_true."c_abrt_save.
sy-subrc = 4.
RETURN.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. "FRM_SAVE_BEFORE
边栏推荐
猜你喜欢
随机推荐
9 椭圆曲线密码体制
QT之鼠标和键盘事件重写
ORACLE中文乱码
关于#sql#的问题,如何解决?
Smart fitness gesture recognition: PP - TinyPose build AI virtual trainer!
ClickHouse - Getting Started
什么是数据标注? 数据标注公司主要做什么?
PSSecurityException
程序包简单解释
TCP 和UDP 的详细介绍
Redshift贴logo的方法
第3周 用1层隐藏层的神经网络分类二维数据
Auto.js Pro write the first script hello world
数商云供应链集成系统开发方案:多行业集成平台管理自动化
瑞鹄转债上市价格预测
MATLAB(5)绘图
SkiaSharp 之 WPF 自绘 五环弹动球(案例版)
log4j设置日志的时区
软件测试技术之如何编写测试用例(2)
(2022牛客多校五)G-KFC Crazy Thursday(二分+哈希)