浅谈SAP 中ABAP循环和取数代码优化
来源:互联网 发布:support v4 源码下载 编辑:程序博客网 时间:2024/05/21 03:16
转自:桥风的博客空间-daringz-共舞SAP
本着尽量少的访问数据库,将数据多放在内存中处理,提高数据的处理速度。一般不建议使用loop循环,在循环中select 数据库。如数据量不大,建议直接提取所有数据,再通过内表处理。或者通过for all entries in 处理。简列两例:
例一、
***取客户名称,直接去kna1表所有记录,因数据量不大
select kunnr name1 into corresponding fields of table tkna1 from
kna1 where loevm <> 'X'.
***对应客户名称
sort tvbak by kunnr.
sort tkna1 by kunnr.
fcount = 1.
loop at tvbak.
fcount = sy-tabix.
read table tkna1 with key kunnr = tvbak-kunnr binary search.
tvbak-namef = tkna1-name1.
modify tvbak index fcount.
endloop.
这里有几点需要注意:
1、将两需要处理的数据库排序。(read 处理时需要)
2、最好先去掉重复数据。(本次取数没有重复数据,故没做处理)
3、如果限制表中没有数据,则会取所有数据。(如下例中若tvbak表为空,则会取所有数据)
4、into corresponding 相比appending corresponding会自动去掉重复数据。
例二、
***选择订单的行项目
select vbeln posnr matnr arktx kbmeng vrkme into corresponding
fields of table tvbap from vbap for all entries in tvbak where vbeln =
tvbak-vbeln.
***给订单行项目添加单据条件数。(前面代码(没有列出)已经对tvbak按vbeln重新排序过)
sort tvbap by vbeln.
fcount = 1.
loop at tvbap.
fcount = sy-tabix.
read table tvbak with key vbeln = tvbap-vbeln binary search.
tvbap-knumv = tvbak-knumv.
modify tvbap index fcount.
endloop.
注意点同上
====================================
此处提供代码三例,仅供参考,还望指正。
1、(se30可以找到)
I = 1.
LOOP AT ITAB1 INTO WA1.
LOOP AT ITAB2 INTO WA2 FROM I.
IF WA2-K <> WA1-K.
I = SY-TABIX.
EXIT.
ENDIF.
" ...
ENDLOOP.
ENDLOOP.
2、(和上述有些不同)
DATA: fcount TYPE i.
fcount = 1.
SORT tvbrk BY vbeln.
SORT tvbrp BY vbeln.
LOOP AT tvbrp.
LOOP AT tvbrk FROM fcount.
IF tvbrk-vbeln = tvbrp-vbeln.
fcount = sy-tabix.
tvbrp-bukrs = tvbrk-bukrs.
tvbrp-vkorg = tvbrk-vkorg.
tvbrp-kunag = tvbrk-kunag.
tvbrp-fkdat = tvbrk-fkdat.
tvbrp-fkart = tvbrk-fkart.
MODIFY tvbrp.
EXIT.
ENDIF.
ENDLOOP.
ENDLOOP.
3、(se30提示)
LOOP AT tvbrp.
READ TABLE tvbrk WITH KEY vbeln = tvbrp-vbeln BINARY SEARCH.
tvbrp-bukrs = tvbrk-bukrs.
tvbrp-vkorg = tvbrk-vkorg.
tvbrp-kunag = tvbrk-kunag.
tvbrp-fkdat = tvbrk-fkdat.
tvbrp-fkart = tvbrk-fkart.
MODIFY tvbrp.
ENDLOOP.
- 浅谈SAP 中ABAP循环和取数代码优化
- SAP-ABAP中强大的循环控制
- SAP ABAP性能优化
- SAP ABAP代码优化(5)之空间换取时间策略
- ABAP模块-SQL取数优化第一篇
- ABAP模块-SQL取数优化第二篇
- SAP簇表BSEG取数优化的方法
- [性能] SAP销售订单取数逻辑优化---索引表
- SAP ABAP程序性能优化
- SAP ABAP程序性能优化
- SAP ABAP程序优化方法
- SAP ABAP程序性能优化
- SAP ABAP程序优化方法
- ABAP--在SAP中设计自动刷新的报表代码
- ABAP--在SAP中设计自动刷新的报表代码
- ABAP--在SAP中设计自动刷新的报表代码
- sap abap中实现密码输入框代码
- ABAP--在SAP中设计自动刷新的报表代码
- 谁有《ASP.NET开发典型模块大全》
- [收藏] request 相关对象参考
- 汇编语言资料
- normal 、sysdba、 sysoper 、sys,sysdba,dba概念—区别
- CSMA/CA
- 浅谈SAP 中ABAP循环和取数代码优化
- Oracle学习笔记--Oracle入门
- CSMA/CD
- Eclipse的源文件问题
- Android Building System 分析
- 初学prototype,发个JS接受URL参数的代码
- 电子元件符号及字母表示
- CSMACA 与 CSMA/CD 区别
- 如果使用SQLExpress 2005时要求'sp_configure 'User instances enabled''