ABAP之显示当前查询进度

举报
百里丶落云 发表于 2023/08/29 18:09:47 2023/08/29
【摘要】 序HELLO ,这里是百里,一个学习中的ABAPER ,在工作中会出现数据量非常大的情况,比如接口,比如大型常用的ALV报表.这时,用户往往会体验非常差. 在web端一般会有个提示说什么等待啊,百分比啊等等.总之就是给用户更好的交互.要不就卡在一个界面对用用户来说体验非常差. 那么就讲到今天的内容,显示当前查询进度. 为什么要显示查询进度记得在前端时候学过一个知识,就是说用户的等待时间不会...

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个数据,在循环中的数据在一直变动. 当然百分比也可以,具体的自己写逻辑,这里只讲述一个用法.
image.png
当数据全部执行完毕后,显示导入成功.

image.png

技术总结

今天讲述的内容,可以说是经常使用,因为在SAP中数据量是非常大的,我们难免会有等待的情况,增加了该函数在代码中可以给用户更好的感官.多少可以让用户知道,我还要等多久.

百里鸡汤

看了本书,是法医推荐的,叫做蛤蟆先生去看心理医生.

困惑是学习过程的第一阶段,这说明固有知识的局限开始被打破了。你要直面新的信息,这些新的信息会挑战你现有的观念和行为模式。由此产生的焦虑是让你改变的动力,很可能也会开启你的
创造力 .

这里是百里,一个努力的学习者. 努力学习好好记录,点滴进步,就是成功.

wallhaven-jx5ezq.jpg

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。