ABAP之显示当前查询进度
序
HELLO ,这里是百里,一个学习中的ABAPER ,在工作中会出现数据量非常大的情况,比如接口,比如大型常用的ALV报表.这时,用户往往会体验非常差. 在web端一般会有个提示说什么等待啊,百分比啊等等.总之就是给用户更好的交互.要不就卡在一个界面对用用户来说体验非常差. 那么就讲到今天的内容,显示当前查询进度.
为什么要显示查询进度
记得在前端时候学过一个知识,就是说用户的等待时间不会超过3秒.意思就是说,当某个界面卡了3秒以上,用户机会觉得体验非常差.如果我们在等待数据中增加一个动画效果,或者提示内容的话虽然解决不了卡的问题,但是给用的体验相对而言还是不错的.在SAP中我们可以通过调用系统函数的方式进行实现该功能,显示当前查询的进度.
语法介绍
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = lv_text.
我们在选择屏幕界面,ALV过账界面,按钮,数据下发等等使用时均可以使用该函数.
案例
我们这里拿VBAP表做一个简单的例子,这个例子是展示当前循环的行数,当循环完成时我们提示一个导入成功 .
数据准备
TABLES :vbap .
data: gw_Data TYPE vbap .
data: gt_Data TYPE table of vbap .
data : lv_pect TYPE p .
select * from vbap into CORRESPONDING FIELDS OF table gt_Data .
data(lv_line) = lines( gt_data ) .
创建子例程
FORM frm_show_progress USING pv_text lv_mes.
DATA : lv_text TYPE c LENGTH 20.
IF pv_text IS INITIAL.
lv_text = TEXT-001.
ELSE.
lv_text = pv_text.
ENDIF.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = lv_text && '/' && lv_mes.
IF lv_text = lv_mes.
MESSAGE '导入成工' TYPE 'I' .
ENDIF.
ENDFORM.
调用子例程
我们这里直接在 START-OF-SELECTION . 中进行调用,当然还有很多中情况, 一般在选择屏幕阶段可能会非常多.
LOOP AT gt_Data into data(gs_Data) .
lv_pect = sy-tabix .
PERFORM frm_show_progress USING lv_pect lv_line.
ENDLOOP.
通过循环内表数据我们过去对应的行数,可以在GET_DAta 的界面进行显示该函数 .
结果
总共3685个数据,在循环中的数据在一直变动. 当然百分比也可以,具体的自己写逻辑,这里只讲述一个用法.
当数据全部执行完毕后,显示导入成功.
技术总结
今天讲述的内容,可以说是经常使用,因为在SAP中数据量是非常大的,我们难免会有等待的情况,增加了该函数在代码中可以给用户更好的感官.多少可以让用户知道,我还要等多久.
百里鸡汤
看了本书,是法医推荐的,叫做蛤蟆先生去看心理医生.
困惑是学习过程的第一阶段,这说明固有知识的局限开始被打破了。你要直面新的信息,这些新的信息会挑战你现有的观念和行为模式。由此产生的焦虑是让你改变的动力,很可能也会开启你的
创造力 .
这里是百里,一个努力的学习者. 努力学习好好记录,点滴进步,就是成功.
- 点赞
- 收藏
- 关注作者
评论(0)