<p>15、使用select 字段列表代替 Select *<br />不推荐<br />SELECT * FROM DD01L INTO DD01L_WA<br /> WHERE DOMNAME LIKE 'CHAR%'<br /> AND AS4LOCAL = 'A'.<br />ENDSELECT.<br />推荐<br />SELECT DOMNAME FROM DD01L<br /> INTO DD01L_WA-DOMNAME<br /> WHERE DOMNAME LIKE 'CHAR%'<br /> AND AS4LOCAL = 'A'.<br />ENDSELECT.</p><p>16、使用subquery代替多个select语句<br />不推荐<br />SELECT * FROM SPFLI<br /> INTO TABLE T_SPFLI<br /> WHERE CITYFROM = 'FRANKFURT'<br /> AND CITYTO = 'NEW YORK'.<br />SELECT * FROM SFLIGHT AS F<br /> INTO SFLIGHT_WA<br /> FOR ALL ENTRIES IN T_SPFLI<br /> WHERE SEATSOCC < F~SEATSMAX<br /> AND CARRID = T_SPFLI-CARRID<br /> AND CONNID = T_SPFLI-CONNID<br /> AND FLDATE BETWEEN '19990101' AND '19990331'.<br />ENDSELECT.<br />推荐<br />SELECT * FROM SFLIGHT AS F INTO SFLIGHT_WA<br /> WHERE SEATSOCC < F~SEATSMAX<br /> AND EXISTS ( SELECT * FROM SPFLI<br /> WHERE CARRID = F~CARRID<br /> AND CONNID = F~CONNID<br /> AND CITYFROM = 'FRANKFURT'<br /> AND CITYTO = 'NEW YORK' )<br /> AND FLDATE BETWEEN '19990101' AND '19990331'.<br />ENDSELECT.</p><p>17、如何快速删除重复内表的记录<br />不推荐<br />READ TABLE ITAB INDEX 1 INTO PREV_LINE.<br />LOOP AT ITAB FROM 2 INTO WA.<br /> IF WA = PREV_LINE.<br /> DELETE ITAB.<br /> ELSE.<br /> PREV_LINE = WA.<br /> ENDIF.<br />ENDLOOP.<br />推荐<br />DELETE ADJACENT DUPLICATES FROM ITAB<br /> COMPARING K.</p><p>18、如何快速删除内表一定范围内的记录<br />不推荐<br />DO 101 TIMES.<br /> DELETE ITAB INDEX 450.<br />ENDDO.<br />推荐<br />DELETE ITAB FROM 450 TO 550.</p><p>19、使用collect语句代替人工合计计算结果<br />不推荐<br />LOOP AT ITAB1 INTO WA1.<br /> READ TABLE ITAB2 INTO WA2 WITH KEY K = WA1-K BINARY SEARCH.<br /> IF SY-SUBRC = 0.<br /> ADD: WA1-VAL1 TO WA2-VAL1,<br /> WA1-VAL2 TO WA2-VAL2.<br /> MODIFY ITAB2 FROM WA2 INDEX SY-TABIX TRANSPORTING VAL1 VAL2.<br /> ELSE.<br /> INSERT WA1 INTO ITAB2 INDEX SY-TABIX.<br /> ENDIF.<br />ENDLOOP.<br />推荐<br />LOOP AT ITAB1 INTO WA.<br /> COLLECT WA INTO ITAB2.<br />ENDLOOP.<br />SORT ITAB2 BY K.</p><p>20、使用显示的work area 代替默认的work area<br />不推荐<br />ITAB = WA.<br />APPEND ITAB.<br />推荐<br />APPEND WA TO ITAB.</p><p>21、使用LOOP ...ASSIGNING代替loop ... modify.<br />不推荐(整条记录更新)<br />LOOP AT ITAB INTO WA.<br /> I = SY-TABIX MOD 2.<br /> IF I = 0.<br /> WA-FLAG = 'X'.<br /> MODIFY ITAB FROM WA.<br /> ENDIF.<br />ENDLOOP.<br />推荐(只会更新需要修改内容)<br />LOOP AT ITAB ASSIGNING <WA>.<br /> I = SY-TABIX MOD 2.<br /> IF I = 0.<br /> <WA>-FLAG = 'X'.<br /> ENDIF.<br />ENDLOOP.<br /></p><br><br><p id="TBPingURL">
如何调整ABAP程序的性能(续)
最新推荐文章于 2025-08-25 22:58:31 发布
本文介绍ABAP中SQL查询与内表操作的最佳实践,包括使用字段列表而非通配符选择、利用子查询、高效删除重复及指定范围记录等方法,并提供了具体的代码示例。
870

被折叠的 条评论
为什么被折叠?



