相对高性能的表关联

 

 

DATA: BEGIN OF it_mara OCCURS 0,

matnr LIKE mara-matnr,

maktx LIKE makt-maktx,

END OF it_mara.

第一种写法:

Select matnr

INTO it_mara

FROM mara.

APPEND it_mara.

ENDSelect. 

第二种写法(high performace):

Select matnr

INTO TABLE it_mara

FROM mara.

==========================================

DATA: BEGIN OF it_mara OCCURS 0,

matnr LIKE mara-matnr,

maktx LIKE makt-maktx,

END OF it_mara.

DATA: BEGIN OF it_makt OCCURS 0,

matnr LIKE mara-matnr,

maktx LIKE makt-maktx,

END OF it_makt.

第一种写法:

LOOP AT it_mara.

Select SINGLE maktx

INTO it_mara-maktx

FROM makt

Where matnr = it_mara-matnr AND

spras = sy-langu.

MODIFY it_mara TRANSPORTING maktx.

ENDLOOP. 

第二种写法(high performace) 

Select matnr maktx

INTO TABLE it_makt

FROM makt

FOR ALL ENTRIES IN it_mara

Where matnr = it_mara-matnr and

spras = sy-langu.

=========================================

 

1 数据——>工作区,工作区——>内表,

2 数据——>内表 

很明显少了一个过程 效率自然高了 如果数据量越大,效果是可想而知的

=========================================

1 每遍历内表一下 都要select一下 select 本身就是循环 循环套循环 时间消耗度是n*n

2select出已经存在内表中的所有满足条件的值 不敢说时间消耗度是n*n 但至少时间上大大地打了一下折

 

 

 

我定义了一个内表ECW并且录入了数据在里面,我像把ECW的表里的数据查询并添加另一个内表到WA_ECW里.我写的语法是SELECT * INTO TABLE IT_ECW FROM ECW

  但是系统显示错误"ECW" is not defined in the ABAP Dictionary as a table, projection view 

 

  如何解决.麻烦高手帮下忙,谢谢.

最佳答案

select:抽出数据库表中的数据时候使用。

检索内部表请用read table *** with key *** 。

 

example: read table ECW with key *** = "***" into ***(your work area).

 

更具体的请查询read table的用法。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值