加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

效率优化-嵌套循环中的一个小坑

(2023-04-16 18:33:25)
标签:

abap

alv

cds

liumeng

sap

分类: 数据库相关
效率优化-嵌套循环中的一个小坑

昨天自己给自己挖了个坑,然后今天又填上了。

(1/3)需求:

有个需求要用到分类和特性的嵌套循环。这个需求中,物料分类=C 物料组。

部分关键代码如下:

 



TYPES:BEGIN OF ty_character,class TYPE klah-class, "分类编码atnam TYPE cabn-atnam, "特性编码atbez TYPE cabnt-atbez, "特性名称END OF ty_character.DATA: gt_character TYPE SORTED TABLE OF ty_character WITH NON-UNIQUE KEY class atnam.LOOP AT gt_makt INTO DATA(ls_makt)."第一种LV_CLASS的定义方法  DATA(lv_class) 'C' && ls_makt-matkl.      "第二种LV_CLASS的定义方法,进行了类型转换  DATA(lv_class) CONV klah-class( 'C' && ls_makt-matkl ).
LOOP AT gt_character INTO DATA(ls_character) WHERE class = lv_class....ENDLOOP.ENDLOOP.

(2/3)分析:

第一种写法,在检查时,编译器会报优化警告,如下图:

效率优化-嵌套循环中的一个小坑

第二种写法,class和lv_class的类型相同,不再有警告。

性能上,我做了一下测试,同样的数据量,第一种用时3.5秒,第二种用时0.008秒。

数据量越大,性能差距越大。


(3/3)总结:

内层嵌套循环在使用时,除了尽量使用sorted table外,还要注意where条件字段类型是否是一致的


 

我的SE38插件工具箱——视频介绍:

https://www.bilibili.com/video/BV1hP4y1N7Qz/

联系286503700获取

ABAP文章汇总:

https://mp.weixin.qq.com/s/djmMeM0qfDxPPwxbjuJABA

Excel文章汇总:

https://mp.weixin.qq.com/s/NwJ0SzIrn9hVmaCMo-UYyA

网盘永久链接:

https://mp.weixin.qq.com/s/f_WwKZdwM-vPEstTjjz_eQ

关注公众号,点下方菜单打开上面的链接,更方便哦。


笔者微信:286503700(QQ同号)

 

如果喜欢,谢谢转发。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有