一、利用内表缓冲减少数据库访问次数
REPORT zmmi003.
data: it_vbap type table of vbap,
wa_vbap type vbap,
it_makt type table of makt,
wa_makt type makt.
perform process.
perform process_using_cursor.
*&---------------------------------------------------------------------*
*& Form process
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM process .
DATA: t1 TYPE i,
t2 TYPE i,
tmin TYPE i.
get run time field t1.
select * into wa_vbap
up to 10000 rows
from vbap .
select single * into wa_makt
from makt
where matnr = wa_vbap-matnr.
* write:/ wa_makt-MAKTX.
endselect.
get run time field t2.
tmin = t2 - t1.
write:/ '------------------------------------------------------------------'.
write:/ 'Time(ms):' ,tmin.
ENDFORM. " process
*&---------------------------------------------------------------------*
*& Form process_using_cursor
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM process_using_cursor .
DATA: t1 TYPE i,
t2 TYPE i,
tmin TYPE i.
get run time field t1.
select * into wa_vbap
up to 10000 rows
from vbap .
read table it_makt into wa_makt with key matnr = wa_vbap-matnr binary search.
if sy-subrc = 0.
* write:/ wa_makt-MAKTX.
else.
select single * into wa_makt
from makt
where matnr = wa_vbap-matnr.
* write:/ wa_makt-MAKTX.
APPEND wa_makt to it_makt SORTED BY matnr.
endif.
endselect.
get run time field t2.
tmin = t2 - t1.
write:/ '------------------------------------------------------------------'.
write:/ 'Time(ms):' ,tmin.
ENDFORM. " process_using_cursor
Time(ms): 4.735.194
Time(ms): 3.411.177
二、利用一条read table来提高loop 访问速度
data: it_mara type table of mara,
wa_mara type mara,
it_makt type table of makt,
wa_makt type makt.
select *
up to 100 rows
from mara
into table it_mara.
select *
up to 100 rows
from makt
into table it_makt.
perform process.
perform process_using_cursor.
*&---------------------------------------------------------------------*
*& Form process
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM process .
DATA: t1 TYPE i,
t2 TYPE i,
tmin TYPE i.
get run time field t1.
* sort it_mara by matnr.
sort it_makt by matnr.
loop at it_mara into wa_mara.
loop at it_makt into wa_makt where matnr = wa_mara-matnr.
endloop.
endloop.
get run time field t2.
tmin = t2 - t1.
write:/ 'Time(ms):' ,tmin.
ENDFORM. " process
*&---------------------------------------------------------------------*
*& Form process_using_cursor
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM process_using_cursor .
DATA: t1 TYPE i,
t2 TYPE i,
tmin TYPE i,
tabix type sy-tabix.
get run time field t1.
* sort it_mara by matnr.
sort it_makt by matnr.
loop at it_mara into wa_mara.
read table it_makt transporting no fields with key matnr = wa_mara-matnr.
if sy-subrc = 0.
tabix = sy-tabix.
loop at it_makt into wa_makt from tabix.
if wa_makt-matnr <> wa_mara-matnr.
exit.
endif.
endloop.
endif.
endloop.
get run time field t2.
tmin = t2 - t1.
write:/ 'Time(ms):' ,tmin.
ENDFORM. " process_using_cursor
分享到:
相关推荐
(3)数据量大的时候用For All Entries In效率会比较低,因为系统里面的处理就像两个SelECT语句循环,其原理等同于Where字句后用Or条件,会占用大量内存,不如一次选出,然后用Delete筛选。 4. 多用内表处理数据...
为了提高ABAP程序的执行效率,确保系统响应时间和资源利用率达到最佳状态,制定一套有效的ABAP代码性能指导原则显得尤为重要。 #### 二、代码性能优化关键点 ##### 1. 使用FORALL ENTRIES与表驱动 - **确保驱动表...
本文将从多个方面探讨如何在ABAP编程中优化SQL语句,提高程序运行效率。 #### 一、使用WHERE子句进行筛选 1. **简化查询**:直接在SELECT语句中使用WHERE子句来限制结果集,而不是先执行一个全表扫描再通过CHECK...
这种方法不仅可以提高系统的整体性能,还可以降低维护难度,确保代码的健壮性和稳定性。 总之,SAP ABAP开发中的BOM展开是一项关键任务,直接影响到企业的供应链管理效率。合理选择并优化展开算法,如采用循环方法...
SCI,即SAP Code Inspector,是SAP系统中一款强大的代码审查工具,旨在帮助开发者优化和维护ABAP代码的质量。它通过全面检查代码的各个方面,如性能、安全性、结构和命名规范,确保代码遵循最佳实践和企业标准。SCI...
在ABAP(Advanced Business Application Programming)编程中,找表是一个常见的...熟练掌握这些方法,不仅可以提升代码效率,还能更好地响应用户需求。记住,实践中不断尝试和优化,是成为ABAP开发大师的关键步骤。
在SAP ABAP开发的学习过程中,BDC是一个非常重要的章节,它能够帮助开发者自动化处理数据传输,从而提高工作效率。 首先,我们来理解一下BDC的基本概念。BDC主要用于处理标准SAP事务代码的数据输入,通过预先定义好...
它的一致性和易用性使得开发者无需关注底层数据库的具体差异,从而提高了开发效率和代码的可移植性。 #### OpenSQL的特点 - **统一的SQL语法和语义**:无论是在Oracle、SQL Server还是其他数据库上运行,OpenSQL都...
- 在SAT中比较这两个跟踪记录。 通过这种方式,可以直观地看到不同数据量对程序执行时间的影响,这对于优化程序设计至关重要。 ### 结论 总之,SAT作为一款新型的ABAP跟踪工具,通过其在跟踪存储、用户界面、分析...
在编写ABAP程序时,理解并正确使用系统字段是提高代码效率和可维护性的关键步骤。 总的来说,SAP ABAP中的系统字段是一组预定义的变量,用于传递运行时信息,它们可以帮助开发者更好地理解和控制程序的执行流程。...
1. **调试范围受限:**由于传统的ABAP调试器与被调试的应用运行在同一内部会话中,导致并非所有的ABAP代码都能被有效调试,例如转换和字段出口等特殊功能。 2. **存在副作用:**使用F1或F4帮助功能、列表输出等功能...
- **PBO (Process Before Output)** 和 **PAI (Process After Input)**:这两个过程是ALV处理中的关键步骤,分别发生在数据输出前和用户输入后。 #### 三、具体步骤 ##### 1. 创建GUI Status - **步骤**: 首先需要...
在ABAP环境中,SQL语句的性能优化是提高系统响应速度和资源利用效率的关键环节。本文将基于给定的代码片段,深入探讨两种不同的SQL查询方法,并分析它们在性能上的差异,以帮助开发者理解如何编写更高效、更经济的...
ABAP是一种专为SAP系统设计的编程语言,主要用于企业应用开发。在ABAP中,SELECT语句是用于从数据库中检索数据的关键命令。...在实际开发中,理解并熟练掌握这些概念对于编写高效、健壮的ABAP代码至关重要。
- **步骤3**:编写相应的ABAP代码实现增强逻辑。 - **步骤4**:测试增强后的程序是否按预期工作。 #### 四、二代增强 二代增强引入了更加强大且灵活的机制,支持更复杂的业务需求。 ##### 4.1 增强查找 二代增强...
2. **通用缓冲**:根据一个或两个键字段来缓冲表数据。适用于有多个键字段但其中某些键更常用的场景。 3. **单记录缓冲**:根据所有键字段来缓冲每个记录。适用于记录更新频繁且每个记录都需要单独缓冲的情况。 4. *...
模块化编程允许开发者将复杂的程序分解为独立、可重用的代码块,从而提高代码的可读性、可维护性和效率。 1. **模块化编程基础** - **模块(Module)**:在ABAP中,模块通常指的是子程序(Subroutine)或函数模块...
- 第一个ABAP程序通常是一个简单的“Hello World”程序,它有助于新手快速理解ABAP的基本语法结构和执行流程。 4. **ABAP语法简介** - ABAP语法结合了传统编程语言的特点,如控制流语句(IF、DO、WHILE)、变量...
新ABAP调试器是SAP NetWeaver 2004s中的一个重要组件,旨在提高开发人员与支持团队在处理ABAP代码时的工作效率。该文档介绍了新ABAP调试器的主要特点、架构设计以及用户界面的基本元素。 ### 动机与背景 传统的...