当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
Redis-Redisson介绍和用途
Auto.js Pro 计算脚本运行时间
urlencode 和rawurlencode的区别
肖sir__面试就业课___数据库
Redshift贴logo的方法
ClickHouse—入门
数据库性能系列之索引(中)
js Fetch返回数据res.json()报错问题
电子设备行业智能供应链系统:打破传统供应链壁垒,提升电子设备企业管理效能
再讲Promise
ClickHouse—高级
【动态规划--01背包】HJ16 购物单
QT之鼠标和键盘事件重写
(一)Nacos注册中心集群环境搭建
ClickHouse删除表
瑞鹄转债上市价格预测
Auto. Js scripts run time calculated Pro
密码学的基础:X.690和对应的BER CER DER编码
有大佬知道 使用flinksql是 同步的日期字段为null的话怎么处理吗
els 计分