当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
uniapp中动态修改导航栏标题
金仓数据库 Pro*C 迁移指南( 5. 程序开发示例)
(2022牛客多校五)H-Cutting Papers(签到)
七夕??继续肝文章才是正道!!Auto.js 特殊定位控件方法
基于 jetpack compose,使用MVI架构+自定义布局实现的康威生命游戏
中非合作论坛非洲产品电商推广季启动 外交部:推动中非合作转型升级
MediaRecorder录制屏幕时在部分机型上报错prepare failed:-22
Dynamically modify the title of the navigation bar in uniapp
有大佬知道 使用flinksql是 同步的日期字段为null的话怎么处理吗
找不到符号@SuperBuilder,你以为真的是Lombok的问题?
第3周 用1层隐藏层的神经网络分类二维数据
QT之鼠标和键盘事件重写
高等代数_证明_不同特征值的特征向量线性无关
关于#sql#的问题,如何解决?
ROS2自学笔记:机器视觉基础
基于 Cyclone IV 在 Quartus 中配置 IP 核中的 PLL、RAM 与 FIFO 的详细步骤及仿真验证
工业边缘计算研究现状与展望
stdio.h(本机代码)
正则表达式绕过
els 计分








