SAP培训

赛跑网

 找回密码
 注册

QQ登录

只需一步,快速开始

快捷登录

查看: 1154|回复: 21

赛跑网-ERP效能优化之内表

[复制链接]
发表于 2013-3-31 17:46:42 | 显示全部楼层 |阅读模式
内表有三种分类:标准、哈希、排序。
哈希内表和排序内表必须指定键值(键值不能重复)。三种内表在读取的时候时间是有差异的,用如下代码进行验证:有兴趣的可以在自己系统中执行如下代码,
PS:客户号 = 系统存在的客户号。
语句1
TYPES:BEGIN OF ty_kna1 ,
      kunnr TYPE   kunnr,
      land1 TYPE  land1_gp,
      name1  TYPE name1_gp,
     END OF ty_kna1.
DATA gs_kna1 TYPE ty_kna1.
DATA gt_kna1 TYPE STANDARD TABLE OF ty_kna1.

SELECT kunnr  land1   name1  FROM kna1 CLIENT SPECIFIED
    INTO  TABLE gt_kna1
    WHERE mandt = '400'.
SORT gt_kna1 BY KUNNR.

DO 1000000 TIMES.
  READ TABLE gt_kna1 INTO gs_kna1 WITH KEY KUNNR = '客户号'
                                           BINARY SEARCH.
ENDDO.

游客,如果您要查看本帖隐藏内容请回复

语句3
TYPES:BEGIN OF ty_kna1 ,
      kunnr TYPE   kunnr,
      land1 TYPE  land1_gp,
      name1  TYPE name1_gp,
     END OF ty_kna1.
DATA gs_kna1 TYPE ty_kna1.
DATA gt_kna1 TYPE SORTED  TABLE OF ty_kna1 WITH UNIQUE key kunnr .

SELECT kunnr  land1 name1 FROM kna1  CLIENT SPECIFIED
    INTO  TABLE gt_kna1
    WHERE mandt = '400'.

DO 1000000 TIMES.
  READ TABLE gt_kna1 INTO gs_kna1 WITH TABLE  KEY KUNNR = '客户号'.
ENDDO.
游客,如果您要查看本帖隐藏内容请回复


**********************************************
如果在LOOP循环中更新内表数据,通常有如下两种做法
语句1
TYPES:BEGIN OF ty_kna1 ,
      kunnr TYPE   kunnr,
      land1 TYPE  land1_gp,
      name1  TYPE name1_gp,
     END OF ty_kna1.
DATA gs_kna1 TYPE ty_kna1.
DATA gt_kna1 TYPE STANDARD   TABLE OF ty_kna1 .

SELECT kunnr land1 name  FROM kna1 CLIENT SPECIFIED
    INTO  TABLE gt_kna1
    WHERE mandt = '400'.

游客,如果您要查看本帖隐藏内容请回复
语句2
TYPES:BEGIN OF ty_kna1 ,
      kunnr TYPE   kunnr,
      land1 TYPE  land1_gp,
      name1  TYPE name1_gp,
     END OF ty_kna1.
DATA gs_kna1 TYPE ty_kna1.
DATA gt_kna1 TYPE STANDARD   TABLE OF ty_kna1 .

SELECT kunnr  land1  name1 FROM  kna1 CLIENT SPECIFIED
    INTO  TABLE gt_kna1
    WHERE mandt = '400'.

DO 10 TIMES.
  LOOP AT gt_kna1 INTO gs_kna1.
    gs_kna1-land1 = 'CN'.
    MODIFY gt_kna1 FROM gs_kna1.
  ENDLOOP.
ENDDO.
        很明显,使用指针处理内表的执行效能更高,这种优势在内表数据很大时,非常明显。原理就不在说了,大家都知道!

该贴已经同步到 SAPOK_ABAP的微博

帖子的最近访客查看更多↓





上一篇:利用BADI出口ME_PROCESS_PO_CUST修改HEADER
下一篇:赛跑网-ERP效能优化之SQL(一)
本楼点评(0) 收起
推广排名:
回复

使用道具 举报

发表于 2013-3-31 21:54:44 | 显示全部楼层
学习了

本楼点评(0) 收起
     
发表于 2013-3-31 21:56:44 | 显示全部楼层
来说学习啦

本楼点评(0) 收起
     
发表于 2013-3-31 23:00:03 | 显示全部楼层
通过SE30进行测试发现,标准内表效能最低,哈希内表跟排序内表都不耗DB的或者说消耗很少,响应时间快!

本楼点评(0) 收起
发表于 2013-4-1 00:14:04 | 显示全部楼层
Study

本楼点评(0) 收起
 楼主| 发表于 2013-4-1 19:27:14 | 显示全部楼层
ronnieshuai 发表于 2013-3-31 23:00
通过SE30进行测试发现,标准内表效能最低,哈希内表跟排序内表都不耗DB的或者说消耗很少,响应时间快!

实践出真知

本楼点评(0) 收起
发表于 2013-4-11 09:28:12 | 显示全部楼层
顶!有营养!

本楼点评(0) 收起
发表于 2013-4-13 09:49:53 | 显示全部楼层
xuexi

本楼点评(0) 收起
发表于 2013-4-28 01:37:58 | 显示全部楼层

thanks

cx楼主辛苦啦,这个问题对我很重要

本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 注册

本版积分规则

SAP培训

QQ|手机版|联系我们|赛跑网 ( QQ:108519493 ) QQfsq

GMT+8, 2019-6-19 00:59 , Processed in 0.470904 second(s), 57 queries .

Powered by Discuz! X3.2

© 2001-2014

快速回复 返回顶部 返回列表