当前位置:网站首页>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
边栏推荐
- urlencode 和rawurlencode的区别
- 【GraphQL】使用Hot Chocolate和.NET 6构建GraphQL应用
- 银微转债,洁特转债上市价格预测
- PyTorch installation - error when building a virtual environment in conda before installing PyTorch
- 云原生(三十一) | Kubernetes篇之平台基本预装资源
- Redis-Redisson介绍和用途
- 【动态规划--01背包】HJ16 购物单
- 智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
- (一)Nacos注册中心集群环境搭建
- 正则表达式与绕过案例
猜你喜欢
随机推荐
肖sir___面试就业课程____app
els 结束判断
【无标题】2022-7-24
TCP 和UDP 的详细介绍
有大佬知道 使用flinksql是 同步的日期字段为null的话怎么处理吗
Auto. Js scripts run time calculated Pro
List<Object>转List<User>:
数字3d虚拟交互展厅顺应时代发展需求和趋势
(2022牛客多校五)G-KFC Crazy Thursday(二分+哈希)
Ask next useful SQL server flink - SQL - connector - essentially a CDC - 2
Linux-Docker-Redis安装
这个困扰程序员50年的问题,终于要被解决了?
Kotlin multiplication, how do I multiply smaller and smaller?
利用索引机制进行绕过
compose 位移视图
【基础数学--埃氏筛】204. 计数质数
SMP 需要考虑的事情
金仓数据库 MySQL 至 KingbaseES 迁移最佳实践(3. MySQL 数据库移植实战)
uniapp中动态修改导航栏标题
密码学的基础:X.690和对应的BER CER DER编码