`
skewen
  • 浏览: 74635 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

(转)ABAP 程序性能 小技巧

    博客分类:
  • ABAP
阅读更多

1、使用where语句
不推荐
Select * from zflight.
Check : zflight-airln = ‘LF’ and zflight-fligh = ‘BW222’.
Endselect.
推荐
Select * from zflight where airln = ‘LF’ and fligh = ‘222’.
Endselect.

2、使用聚合函数
不推荐
Maxnu = 0.
Select * from zflight where airln = ‘LF’ and cntry = ‘IN’.
Check zflight-fligh > maxnu.
Maxnu = zflight-fligh.
Endselect.
推荐
Select max( fligh ) from zflight into maxnu where airln = ‘LF’ and cntry = ‘IN’.

3、使用视图代替基本表查询
不推荐
Select * from zcntry where cntry like ‘IN%’.
Select single * from zflight where cntry = zcntry-cntry and airln = ‘LF’.
Endselect.
推荐
Select * from zcnfl where cntry like ‘IN%’ and airln = ‘LF’.
Endselect.

4、使用INTO table 代替select endselect
不推荐
Refresh: int_fligh.
Select * from zflight into int_fligh.
Append int_fligh. Clear int_fligh.
Endselect.
推荐
Refresh: int_fligh.
Select * from zflight into table int_fligh.

5、使用批量修改内表代替逐行修改
不推荐
Loop at int_fligh.
If int_fligh-flag is initial.
Int_fligh-flag = ‘X’.
Endif.
Modify int_fligh.
Endloop.
推荐
Int_fligh-flag = ‘X’.
Modify int_fligh transporting flag where flag is initial.

6、使用二分法查询,提高查询内表数据速度
不推荐
Read table int_fligh with key airln = ‘LF’.
推荐
Read table int_fligh with key airln = ‘LF’ binary search.

7、两个内表添加使用批量增加代替逐行
不推荐
Loop at int_fligh1.
Append int_fligh1 to int_fligh2.
Endloop.
推荐
Append lines of int_fligh1 to int_fligh2.

8、使用table buffering
Use of buffered tables is recommended to improve the performance considerably. The buffer is bypassed while using the following statements
Select distinct
Select … for update
Order by, group by, having clause
Joins
Use the Bypass buffer addition to the select clause in order to explicitly bypass the buffer while selecting the data.

9、 使用FOR ALL Entries
不推荐
Loop at int_cntry.
Select single * from zfligh into int_fligh where cntry = int_cntry-cntry. Append int_fligh.
Endloop.
推荐
Select * from zfligh appending table int_fligh
For all entries in int_cntry
Where cntry = int_cntry-cntry.

10、正确地使用where语句,使查询能使用索引When a base table has multiple indices, the where clause should be in the order of the index, either a primary or a secondary index
To choose an index, the optimizer checks the field names specified in the where clause and then uses an index that has the same order of the fields. One more tip is that if a table begins with MANDT, while an index does not, there is a high possibility that the optimizer might not use that index.

11、正确地使用MOVE语句
Instead of using the move-corresponding clause it is advisable to use the move statement instead. Attempt should be made to move entire internal table headers in a single shot, rather than moving the fields one by one.

12、正确地使用inner joinLet us take an example of 2 tables, zairln and zflight. The table zairln has the field airln, which is the airline code and the field lnnam, which is the name of the airline. The table zflight has the field airln, the airline code and other fields which hold the details of the flights that an airline operates.
Since these 2 tables a re logically joined by the airln field, it is advisable to use the inner join.
Select a~airln a~lnnam b~fligh b~cntry into table int_airdet
From zairln as a inner join zflight as b on a~airln = b~airln.
In order to restrict the data as per the selection criteria, a where clause can be added to the above inner join.

13、使用sort by 代替order by

14、避免使用SELECT DISTINCT语句
使用的 ABAP SORT + DELETE ADJACENT DUPLICATES 代替.


分享到:
评论

相关推荐

    ABAP技巧与性能改进[收集].pdf

    ABAP(Advanced Business Application Programming)是SAP系统中的一种编程语言,...以上知识点覆盖了ABAP开发过程中的性能监控、代码优化、数据处理和屏幕交互等多个方面,对于提升ABAP程序的效率和质量具有指导意义。

    ABAP Performance

    本教程主要探讨ABAP性能调优的一些技巧和策略,旨在帮助开发者编写出高效、响应迅速的ABAP程序。 1. 选择标准(Selection criteria):在编写查询时,应尽可能在数据库层面限制数据的选取,而非在ABAP代码中进行...

    sap abap web dynpr

    对于初学者而言,可以从官方文档、在线教程、社区论坛和专业书籍中获取学习资源,逐步掌握Web Dynpro ABAP的开发技巧。实践是学习的最佳途径,通过实际项目或小规模的实验,可以加深对Web Dynpro ABAP的理解,提高...

    ABAP 基础入门(BC ABAP/4 用户指南)

    - **性能优化**:分享一些提高报表性能的小技巧,比如如何减少数据库访问次数、如何利用缓存等。 #### 第三部分:编写ABAP/4事务 事务处理是ABAP/4中的一个重要组成部分,这部分内容将涉及: - **事务设计**:...

    BI中的abap使用

    例如,可以通过编写一个简单的ABAP程序来动态地获取当前日期,并将其作为文件名的一部分,以便每次加载的数据都能被明确地标识出来。 ##### 示例代码:动态生成文件名 ```abap DATA: p_file TYPE string. * 在...

    abap三月通

    - 第一个ABAP程序通常是一个简单的“Hello World”程序,它有助于新手快速理解ABAP的基本语法结构和执行流程。 4. **ABAP语法简介** - ABAP语法结合了传统编程语言的特点,如控制流语句(IF、DO、WHILE)、变量...

    最新 SAP_ABAP_PA教材及视频下载地址

    这可能是由SAP官方或者资深专业人士整理的完整教程,涵盖了ABAP的基础知识到进阶技巧。对于初学者来说,这是一个很好的起点,而对于有一定基础的开发者而言,则可以通过这份材料进一步提升自己的技能水平。 ### 三...

    SAP_ABAP.rar_ERP_SAP_abap_erp sap_sap bw

    在描述中提到的"ERP SAP ABAP开发的一下小技巧",意味着这个压缩包可能包含了一些开发者在实际工作中可能会遇到的问题解决方法、最佳实践或者是提高效率的技巧。这可能包括如何编写更高效的ABAP代码、如何调试、如何...

    Abap效率.docx

    下面将详细探讨如何通过各种技巧和最佳实践来提升ABAP程序的效率。 首先,降低数据库负载是提升程序效率的关键。减少IO操作是实现这一目标的重要手段。在编写SELECT语句时,避免使用`SELECT *`,应只选择需要的字段...

    ABAP4大全之老白_高_码_无_清_版.pdf

    - **指定变量的数据类型和长度**:不同类型的数据需要不同的存储空间,合理指定这些参数可以提高程序性能。 - **指定初始值**:初始化变量可以避免未定义的行为。 - **指定小数位数**:对于需要精确数值计算的应用...

    Abap基础学习文档8_创建和处理内表.doc

    ### Abap基础学习文档8_创建和处理内表 #### 一、内表概述 ...通过合理的设计和使用,内表可以在提高程序性能的同时简化复杂的业务逻辑。掌握内表的创建和处理技巧对于任何ABAP开发者来说都是非常重要的。

    SAPTips.rar

    本压缩包"SAPTips.rar"包含了一些关于ABAP开发的小技巧文档,帮助开发者提高效率和解决实际问题。 1. **Tips2.doc** - 可能涵盖了变量和数据类型的优化。在ABAP中,理解何时使用内部表、结构、字段符号以及正确的...

    SAP 18种查询表的方法

    4. **使用SE38**:通过运行ABAP程序,可以调用特定的函数模块来查询数据。 5. **事务代码SE80**:用于管理所有ABAP/4的开发对象,包括程序、函数组和数据字典。这可以帮助识别与特定屏幕字段相关的ABAP程序或功能...

    SAP Web Dynpro .pdf

    - **性能优化:**减少不必要的数据加载和处理,提高应用程序响应速度。 #### 六、OTR与消息(Unit 6: OTR and Messages) **6.1 OTR(Online Transaction Reporting)** - **定义:**OTR是用于处理在线交易报告的...

    tipps & tricks wda

    在ABAP WebDynpro(WDA)开发中,掌握一些实用的技巧和建议可以极大地提升应用的质量和效率。本文将围绕“tipps & tricks wda”这一主题,深入探讨ABAP WebDynpro的相关知识点。 首先,我们要理解Web Dynpro ABAP...

    创建和处理内表.doc

    在处理大量数据时,为了优化性能,可以使用ABAP/4开发工作台中的运行时刻分析工具,查看和应用内表处理的最佳实践和技巧。 总之,内表是ABAP/4中的核心数据结构之一,它提供了一种灵活、高效的方式来处理和管理程序...

    SAP读取Access数据

    通过ODBC(Open Database Connectivity)驱动,ABAP程序可以执行SQL查询来读取Access数据库。 - **BAPI(Business Application Programming Interface)**:SAP提供了一种标准接口,允许外部系统调用SAP的功能。...

Global site tag (gtag.js) - Google Analytics