临上线了,需求还在改,报表也得改,需求满足了,程序性能又不满足了,净折腾啊. 可客户是付钱的上帝,所以程序要调优要改进,不然,要钱不给!
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
分享到:
相关推荐
程序调优是 SAP 系统性能调优的核心部分,包括内表相关、内表类型、Binary Search、Secondary Key、Loop Where、内表 Join、Function 内表传递等多个方面。这些技术可以帮助管理员优化程序的执行效率,提高系统性能...
在ABAP(Advanced Business Application Programming)中,报表程序是用于生成和展示数据的重要工具,尤其在SAP系统中,它们是数据分析和业务处理的核心部分。本篇将通过两个简单的报表程序示例,深入探讨ABAP报表的...
本文将详细介绍 SAP ABAP 程序性能调优的技术创新、用户交互过程、系统监控、程序跟踪、程序调优、SQL 优化等方面的知识点。 用户交互过程 在 SAP 系统中,用户交互过程是指用户与 SAP 服务器之间的交互过程。该...
SAP ABAP 性能调优开发教程旨在帮助开发者提高ABAP程序的性能,提高系统的响应速度和稳定性。该课程涵盖了ABAP性能调优的基本概念、性能优化技术、性能监控和分析工具等方面的知识。 课程概述 本课程主要面向SAP ...
报表通常由程序头、数据声明区、选择屏幕定义、程序体和结束区组成。在程序体中,我们进行数据处理和逻辑控制,而权限判断就在这里发挥作用。 权限判断主要依赖于ABAP的数据字典(Data Dictionary)和授权对象...
ABAP报表程序开发规范主要涉及了在SAP R/3系统中使用ABAP语言进行报表程序开发的标准和流程。这份规范旨在确保代码的规范性和一致性,降低开发人员之间的依赖,提高代码可读性和维护性。以下是规范的关键点: 1. **...
ABAP 报表开发实例 ABAP 报表开发实例是指使用 ABAP 语言开发报表的实践过程。在这个实例中,我们将一步步地讲解如何开发一个报表,从确定所需表开始,到定义内表和数据,接着是选择屏幕、查询数据、输出结果等步骤...
### ABAP中的SQL性能考量 在ABAP中,SQL查询的性能受到多种因素的影响,包括数据量的大小、索引的使用、查询结构的复杂度等。特别是在处理大量数据时,一个小小的性能瓶颈就可能导致整个系统的响应时间显著增加。...
在SAP R/3系统中,ABAP语言是进行报表程序开发的核心工具。为了确保开发出的报表程序具有良好的规范性与可维护性,同时降低代码与特定开发者的关联性,一份名为“ABAP报表程序开发规范标准”的文档应运而生。这套...
"ABAP打印报表程序模板"是一个资源包,提供了预设的代码框架,帮助开发者快速构建具有ALV报表显示和打印功能的程序。 ALV(ABAP List Viewer)报表是一种标准的SAP输出形式,它提供了灵活的数据展示和交互功能。ALV...
本文主要讲解了ABAP报表开发的实例,通过一个简单的示例程序,讲解了ABAP开发报表的基本过程。 首先,在任何程序的开始阶段,我们都要确定将会用到的表。在这个示例程序中,我们将用到三个表:EKKO、EKPO、EKET。...
在SAP ABAP环境中,创建和格式化报表是常见的任务,尤其对于企业内部的数据报告和分析至关重要。报表格式设置能够确保输出的报表整洁、易读,满足特定的打印需求。以下将详细介绍如何进行SAP ABAP报表的格式设置: ...
EXCEL生成ABAP报表程序
SAP-ABAP-报表开发基础教程
在ABAP(Advanced Business Application Programming)编程环境中,Open SQL是一种高度抽象化的SQL语法,它使得开发者能够方便地在ABAP程序中直接与数据库进行交互。本篇将详细讲解ABAP Open SQL的概念、特点以及...
在ABAP报表开发中,性能优化是至关重要的,因为低效的报表会导致用户满意度下降,尤其是在数据量庞大的情况下。以下是一些关于ABAP报表性能优化的注意事项和技巧: 1. **表连接策略**: - **连接顺序**:在编写...
### ABAP报表的事件介绍与应用详解 #### ABAP程序类型概述 在深入探讨ABAP报表的事件前,我们先...熟练掌握这些事件的使用时机和方法,将极大地提升报表程序的性能和用户体验,是每一位ABAP开发人员不可或缺的技能。
### ABAP 子程序及其调用 #### 一、概述 在ABAP编程语言中,子程序是一种重要的编程工具,它允许程序员将复杂的任务分解成更小、更易于管理的部分。这种模块化的编程方法不仅可以提高代码的可读性和可维护性,还...
ABAP程序相互调用 ABAP程序相互调用是指在ABAP中,通过SUBMIT关键字实现程序之间的调用,这是一个非常有用的关键字。下面我们将详细介绍ABAP程序相互调用的方法和用法。 一、调用另一个程序 在ABAP中,我们可以...