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

作者:郑德鼎 约 3 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Basis, Data Engineering, MM, WM, 仓库管理, 开发, 数据工程, 物料管理, 系统管理
效率优化嵌套循环中的一个小坑 - 封面图
效率优化嵌套循环中的一个小坑 - 封面图

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

** (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同号)** ****

**如果喜欢,谢谢转发。**

郑德鼎

关于作者:郑德鼎

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「效率优化嵌套循环中的一个小坑.md」整理生成,仅用于内部技术分享与学习交流。