`
王三
  • 浏览: 174888 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ABAP 报表程序OpenSQL性能调优

    博客分类:
  • ABAP
阅读更多

 临上线了,需求还在改,报表也得改,需求满足了,程序性能又不满足了,净折腾啊. 可客户是付钱的上帝,所以程序要调优要改进,不然,要钱不给!

SAP 系统是经典的三层架构,分为DB, 应用服务器,展示层三层.ABAP程序运行在应用服务器层,访问的数据存储在DB,而我们要做的就是把数据从DB中取出来,然后送到展示层以展现给用户. 而这里DB是作为集中式资源存在的,难以水平扩展,而应用服务器则可以水平进行扩展以满足系统性能需求.所以,调优要尽可能地优先在应用服务器做,其次在 DB层.而报表程序中,往往对数据库的访问会占用大部分的程序运行时间,而且在SAP系统中,业务数据表数据量都很大, 在实现业务逻辑时,要考虑到OpenSQL的效率问题.

1. 避免Table full scan, 尽可能的使用表的索引.
  在使用索引时,索引的字段要匹配其顺序,并且索引的字段要尽可能靠前. 可以使用ST05查看程序使用索引的情况.
     另外,有一些表并没有直接的索引字段,譬如SD中的表如VBRK等,可以通过索引表VBRKPA等预先取得主键再去访问VBRK.
  有意思的是在 的DDIC透明表在ORACLE中并没有真正的主键,而是将DDIC的主键字段作为primary index使用的.

2.   对于FOR ALL ENTRIES 的使用
  它一般是根据内表中记录的数量分割成多条SQL语句来执行,所以当内表比较大时,使用FOR ALL ENTRIES对程序运行时间有影响,使用时多考虑.
  另外,连接的内表中不要有重复纪录,这样会重复对数据库的访问.

3.    直接将数据缓存在内表
   譬如在访问如Sales office等数据量不大的主数据表时,可以将记录预先读出.

 

4.    使用 database hints
   这是杀招,谨慎使用.
 它是一些基于特定数据库的优化技巧,使用这些技巧可以影响数据库优化器对表使用的访问策略. 注意,ABAP语法并不能检查它的对错,一定要保证hints的正确性, 另外它只能用于透明表.
  示例:
   %_HINTS ORACLE 'LEADING(T_01) USE_NL (T_00 T_02)'.
    使用T_01作为首要访问的表,并将T_00作为内部表联接.
 Note 129385 - Database hints in Open SQL
 Note 130480 - Database Hints in Open SQL for Oracle

 

0
0
分享到:
评论
2 楼 王三 2009-12-30  
ai2ming 写道
hints不对不会造成dump的,在oralce里面如果hints里面的信息错误,会把hints当成注释处理。

  SELECT SINGLE matnr
    INTO matnr
    FROM mara
    WHERE matnr = 'C075'
  %_HINTS ORACLE 'INDEX(MARA~Z99)'.

Z99的索引其实不存在,这时候程序照常运行。


谢谢指正. dump掉是因为数据的问题.
1 楼 ai2ming 2009-12-29  
hints不对不会造成dump的,在oralce里面如果hints里面的信息错误,会把hints当成注释处理。

  SELECT SINGLE matnr
    INTO matnr
    FROM mara
    WHERE matnr = 'C075'
  %_HINTS ORACLE 'INDEX(MARA~Z99)'.

Z99的索引其实不存在,这时候程序照常运行。

相关推荐

    SAP ABAP程序性能调优介绍.pptx

    程序调优是 SAP 系统性能调优的核心部分,包括内表相关、内表类型、Binary Search、Secondary Key、Loop Where、内表 Join、Function 内表传递等多个方面。这些技术可以帮助管理员优化程序的执行效率,提高系统性能...

    abap报表程序事例,学习报表

    在ABAP(Advanced Business Application Programming)中,报表程序是用于生成和展示数据的重要工具,尤其在SAP系统中,它们是数据分析和业务处理的核心部分。本篇将通过两个简单的报表程序示例,深入探讨ABAP报表的...

    SAP ABAP程序性能调优介绍.pdf

    本文将详细介绍 SAP ABAP 程序性能调优的技术创新、用户交互过程、系统监控、程序跟踪、程序调优、SQL 优化等方面的知识点。 用户交互过程 在 SAP 系统中,用户交互过程是指用户与 SAP 服务器之间的交互过程。该...

    SAP ABAP 性能调优开发教程

    SAP ABAP 性能调优开发教程旨在帮助开发者提高ABAP程序的性能,提高系统的响应速度和稳定性。该课程涵盖了ABAP性能调优的基本概念、性能优化技术、性能监控和分析工具等方面的知识。 课程概述 本课程主要面向SAP ...

    ABAP报表中加入权限判断

    报表通常由程序头、数据声明区、选择屏幕定义、程序体和结束区组成。在程序体中,我们进行数据处理和逻辑控制,而权限判断就在这里发挥作用。 权限判断主要依赖于ABAP的数据字典(Data Dictionary)和授权对象...

    ABAP报表程序开发规范.doc

    ABAP报表程序开发规范主要涉及了在SAP R/3系统中使用ABAP语言进行报表程序开发的标准和流程。这份规范旨在确保代码的规范性和一致性,降低开发人员之间的依赖,提高代码可读性和维护性。以下是规范的关键点: 1. **...

    ABAP 报表开发实例

    ABAP 报表开发实例 ABAP 报表开发实例是指使用 ABAP 语言开发报表的实践过程。在这个实例中,我们将一步步地讲解如何开发一个报表,从确定所需表开始,到定义内表和数据,接着是选择屏幕、查询数据、输出结果等步骤...

    abap 关于SQL语句的性能

    ### ABAP中的SQL性能考量 在ABAP中,SQL查询的性能受到多种因素的影响,包括数据量的大小、索引的使用、查询结构的复杂度等。特别是在处理大量数据时,一个小小的性能瓶颈就可能导致整个系统的响应时间显著增加。...

    ABAP报表程序开发规范标准.doc

    在SAP R/3系统中,ABAP语言是进行报表程序开发的核心工具。为了确保开发出的报表程序具有良好的规范性与可维护性,同时降低代码与特定开发者的关联性,一份名为“ABAP报表程序开发规范标准”的文档应运而生。这套...

    ABAP打印报表程序模板.rar

    "ABAP打印报表程序模板"是一个资源包,提供了预设的代码框架,帮助开发者快速构建具有ALV报表显示和打印功能的程序。 ALV(ABAP List Viewer)报表是一种标准的SAP输出形式,它提供了灵活的数据展示和交互功能。ALV...

    ABAP报表开发实例.pdf

    本文主要讲解了ABAP报表开发的实例,通过一个简单的示例程序,讲解了ABAP开发报表的基本过程。 首先,在任何程序的开始阶段,我们都要确定将会用到的表。在这个示例程序中,我们将用到三个表:EKKO、EKPO、EKET。...

    sap abap 报表格式设置方法

    在SAP ABAP环境中,创建和格式化报表是常见的任务,尤其对于企业内部的数据报告和分析至关重要。报表格式设置能够确保输出的报表整洁、易读,满足特定的打印需求。以下将详细介绍如何进行SAP ABAP报表的格式设置: ...

    生成ABAP查询报表_4.1.xls

    EXCEL生成ABAP报表程序

    ABAP报表开发基础

    SAP-ABAP-报表开发基础教程

    ABAP SQL 查询 程序

    在ABAP(Advanced Business Application Programming)编程环境中,Open SQL是一种高度抽象化的SQL语法,它使得开发者能够方便地在ABAP程序中直接与数据库进行交互。本篇将详细讲解ABAP Open SQL的概念、特点以及...

    ABAP报表性能优化注意事项

    在ABAP报表开发中,性能优化是至关重要的,因为低效的报表会导致用户满意度下降,尤其是在数据量庞大的情况下。以下是一些关于ABAP报表性能优化的注意事项和技巧: 1. **表连接策略**: - **连接顺序**:在编写...

    ABAP报表的事件介绍

    ### ABAP报表的事件介绍与应用详解 #### ABAP程序类型概述 在深入探讨ABAP报表的事件前,我们先...熟练掌握这些事件的使用时机和方法,将极大地提升报表程序的性能和用户体验,是每一位ABAP开发人员不可或缺的技能。

    ABAP 子程序及其调用

    ### ABAP 子程序及其调用 #### 一、概述 在ABAP编程语言中,子程序是一种重要的编程工具,它允许程序员将复杂的任务分解成更小、更易于管理的部分。这种模块化的编程方法不仅可以提高代码的可读性和可维护性,还...

    ABAP程序相互调用

    ABAP程序相互调用 ABAP程序相互调用是指在ABAP中,通过SUBMIT关键字实现程序之间的调用,这是一个非常有用的关键字。下面我们将详细介绍ABAP程序相互调用的方法和用法。 一、调用另一个程序 在ABAP中,我们可以...

Global site tag (gtag.js) - Google Analytics