拓冰建站拓冰建站
首页 / 资讯中心 / 正文

091、屏幕字段校验与用户交互

091、屏幕字段校验与用户交互那是一个周五下午,生产机报了个单据保存失败的工单。我看了一眼dump,不是权限问题,也不是数据库锁,问题出在屏幕字段上——用户录入了一个超过30位的“备注”,而底表字段最长只有20。为什么没拦住?因为当时用的是CHAIN…ENDCHAIN里的MODULE,但条件判断写反了,只在字段为空时报错,字段太长反而放行。这种问题不疼不痒,但一旦用户批量录入,后台一次dump,整批全回滚。从那以后,我对屏幕字段校验的态度就变了:宁可多写三行,也别让脏数据滚进数据库。屏幕字段校验的根基在PAI(Process After Input),也就是用户点了回车或保存按钮之后、程序逻辑跑起来之前的那段空隙。ABAP里做这事主要靠MODULE,挂在PBO里的是输出前处理,挂在PAI里的是输入后校验。咱们聊的是后者。你在屏幕布局器里双击那字段,或者直接在流程逻辑里写:PROCESS BEFORE OUTPUT.MODULE status_0100.PROCESS AFTER INPUT.MODULE check_zbz_field.这个check_zbz_field就是你的守门员。它内部长这样:MODULE check_zbz_field INPUT.IF zbz_field IS INITIAL.MESSAGE ‘备注不能为空’ TYPE ‘E’.ENDIF.ENDMODULE.注意,MESSAGE TYPE 'E’会把光标自动定位到触发错误的字段上,但有时候它定位不准。你想让它跳转到指定字段,得用FIELD语句配合:PR
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门