优化这段ABAP代码LOOP AT GT_FAGLFLEXA INTO GS_FAGLFLEXA. IF GS_RESULT2-RBUKRS = GS_FAGLFLEXA-RBUKRS AND GS_RESULT2-DOCNR = GS_FAGLFLEXA-DOCNR AND GS_RESULT2-RYEAR = GS_FAGLFLEXA-RYEAR . DELETE GT_RESULT2 WHERE RBUKRS = GS_FAGLFLEXA-RBUKRS AND DOCNR = GS_FAGLFLEXA-DOCNR AND RYEAR = GS_FAGLFLEXA-RYEAR . GS_RESULT2-HSL = GS_RESULT2-HSL + GS_FAGLFLEXA-HSL . ELSE. GS_RESULT2-HSL = GS_FAGLFLEXA-HSL . ENDIF. GS_RESULT2-RBUKRS = GS_FAGLFLEXA-RBUKRS. GS_RESULT2-DOCNR = GS_FAGLFLEXA-DOCNR . GS_RESULT2-RYEAR = GS_FAGLFLEXA-RYEAR . APPEND GS_RESULT2 TO GT_RESULT2 . ENDLOOP.
时间: 2024-04-09 12:32:27 浏览: 32
优化后的代码如下:
LOOP AT GT_FAGLFLEXA INTO GS_FAGLFLEXA.
READ TABLE GT_RESULT2 WITH KEY RBUKRS = GS_FAGLFLEXA-RBUKRS
DOCNR = GS_FAGLFLEXA-DOCNR
RYEAR = GS_FAGLFLEXA-RYEAR
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
DELETE GT_RESULT2 INDEX SY-TABIX.
GS_RESULT2-HSL = GS_RESULT2-HSL + GS_FAGLFLEXA-HSL.
ELSE.
GS_RESULT2-HSL = GS_FAGLFLEXA-HSL.
ENDIF.
GS_RESULT2-RBUKRS = GS_FAGLFLEXA-RBUKRS.
GS_RESULT2-DOCNR = GS_FAGLFLEXA-DOCNR.
GS_RESULT2-RYEAR = GS_FAGLFLEXA-RYEAR.
APPEND GS_RESULT2 TO GT_RESULT2.
ENDLOOP.
优化的主要改动如下:
1. 使用READ TABLE语句代替DELETE和APPEND的组合,以减少循环内部的操作次数。
2. 使用TRANSPORTING NO FIELDS选项在读取行时不传输任何字段,以提高性能。
3. 使用SY-SUBRC检查表格行是否存在,避免使用DELETE INDEX时出现错误。
4. 使用SY-TABIX获取当前索引,并使用DELETE INDEX删除指定的行。
5. 将GS_RESULT2-HSL的增量计算移动到DELETE操作之前,以避免重复计算。
通过这些优化,可以减少循环内部的操作次数,提高代码的执行效率。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)