要向内表读入3百50万条数据,如果一次读入就会产生运行错误,错误提示为,没有内存对于扩展 
内表。 我考虑使用SELECT...INTO TABLE...PACKAGE SIZE 和ENDSELECT来解决这个问题,每次比 
如只让10000条数据读入。第二次再让10000条数据读入等等。 现在我有个问题,对于3百50万 条 
数据最后输出是应该有顺序的。 但是每次SELECT和ENDSELECT之中只能对10000条数据进行排序, 
第二次循环又有10000条新的,并且代替了老的10000,这样导致了只能对内表的10000条数据进行 
排序。

You might do your sorting upon the database side.

Here are my two "forms" for your reference. If they don't work for you, mind letting 
me take a look at your code here?

*&---------------------------------------------------------------------* 
*&      Form  implicit_cursor 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
FORM implicit_cursor. 
 DATA lt_billing TYPE TABLE OF zbilling.

SELECT * FROM zbilling INTO TABLE lt_billing 
   PACKAGE SIZE pk_size 
     WHERE vbeln   IN vbeln 
       AND aubel   IN aubel 
       AND erfdate IN erfdate 
       AND fkdat   IN fkdat 
      ORDER BY aubel aupos augrp erfdate DESCENDING erftime DESCENDING.

PERFORM process_data TABLES lt_billing. 
 ENDSELECT. 
ENDFORM.                    "implicit_cursor 
*&---------------------------------------------------------------------* 
*&      Form  explicit_cursor 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
FORM explicit_cursor. 
 DATA a_cursor TYPE cursor. 
 DATA lt_billing TYPE TABLE OF zbilling.

OPEN CURSOR a_cursor FOR 
   SELECT * FROM zbilling 
     WHERE vbeln   IN vbeln 
       AND aubel   IN aubel 
       AND erfdate IN erfdate 
       AND fkdat   IN fkdat 
       ORDER BY aubel aupos augrp erfdate DESCENDING erftime DESCENDING. 
 CHECK sy-subrc = 0.

DO. 
   FETCH NEXT CURSOR a_cursor INTO TABLE lt_billing 
     PACKAGE SIZE pk_size.

IF sy-subrc <> 0. 
     EXIT.  " done Fetch 
   ENDIF.

PERFORM process_data TABLES lt_billing. 
 ENDDO. 
 CLOSE CURSOR a_cursor. 
ENDFORM.                    "explicit_cursor

谢谢你的回复。请看我的部分代码: 
loop at g_t_grid into wa_g_t_grid. 
   s_grid-y = wa_g_t_grid-y. 
   s_grid-x = wa_g_t_grid-x. 
   s_grid-data = wa_g_t_grid-data. 
   if s_grid-data(1) = m1.                   "删除冒号 
   shift s_grid-data. 
   endif.

INSERT INTO zubpgrid VALUES  s_grid.   "运行错误在这里,以前我是直接把3百50万 
数据插入到内表,现在我想用一个数据库来代替.

endloop.

refresh g_t_grid.

CLEAR s_grid.

SELECT * FROM zubpgrid INTO TABLE ii_grid PACKAGE SIZE 10000."这里从数据库倒入到内 
表,并且限制每次的数量.

SORT ii_grid BY y. 
LOOP AT ii_grid. 
    at new y.                         "行号 
     refresh i_quellzeile. 
   endat.                            "new y

i_quellzeile-x    = ii_grid-x. 
   i_quellzeile-data = ii_grid-data. 
   append i_quellzeile. 
   at end of y. 
.....对属于同个行号的信息进行汇总. 
ENDSELECT.

在这个案例中我觉得不需要cursor 和 fetch; 现在我需要整个内表都是有循序的,我想只要在 
select后面加上order by y 就可以了.不只到是否正确.但是对于AT NEW y and AT END OF 
y,应该在加入if语句,因为每次只要10000条数据进来,在下一次10000可能还有相同 
Y 的信息. 
请shaw1236帮我看看.谢谢.

==>在这个案例中我觉得不需要cursor 和 fetch; 现在我需要整个内表都是有循序的,我想只要 
在select后面加上order by y 就可以了.不只到是否正确. 
[Shaw1236] Yes. I think so. No explicit cursor is need. 
I am not sure that you are able to loop table "ii_grid" by using "at new y" and "at 
end of y" due to the package restriction. Can you simply use "on change of ii_grid- 
y" after sorting(order by) data from the database?


下面是引用shaw1236于2008-4-7 19:20发表的回复:: 
==>在这个案例中我觉得不需要cursor 和 fetch; 现在我需要整个内表都是有循序的,我想只要 
在select后面加上order by y 就可以了.不只到是否正确. 
[Shaw1236] Yes. I think so. No explicit cursor is need. 
I am not sure that you are able to loop table "ii_grid" by using "at new y" and "at 
.......

What's the length of each row? I think you will be fine. Probably you need check the 
table technical setting and monitor the table space.

Hi,

each row consists of x(int4 10), y( int4 10) and data(Char 73). I have set the 
information about table technical Setting eg. Maximum data entries: 
1,900,000 to 3,800,000

I am not sure if  an error for inserting in Databank table occurs?

3500000 * (10 + 10 + 73) is roughly 310MB. 
I think you will be fine. Ensure the table buffer is turned off. Just curious why 
you save so much data into a z-table.

Maximum data entries: 1,900,000 to 3,800,000 is only a threshold number, which won't 
absolutely block the size growing.

转自:http://11643599.blog.hexun.com/37289101_d.html

SAP ABAP将大数据量排序后输入到内表的更多相关文章

  1. [SAP ABAP开发技术总结]CLEAR、REFRESH、FREE内表清理区别

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. SAP ABAP ALV构建动态输出列与构建动态内表(包留备用),包含操作abap元类型表及类

    https://blog.csdn.net/zhongguomao/article/details/51095946

  3. MySQL数据库如何解决大数据量存储问题

    利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开 ...

  4. 利用MySQL数据库如何解决大数据量存储问题?

    提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如何做,对于一个存储设计,必须考虑业务特点,收集的信息如下:1.数据的容量:1-3年内会大概多少条数据,每条 ...

  5. MySQL数据库解决大数据量存储问题

    转载自:https://www.cnblogs.com/ryanzheng/p/8334915.html 提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如 ...

  6. jquery.datatable.js与CI整合 异步加载(大数据量处理)

    http://blog.csdn.net/kingsix7/article/details/38928685 1.CI 控制器添加方法 $this->show_fields_array=arra ...

  7. php 大数据量及海量数据处理算法总结

    下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题.下面的一些问题基本直接来源于公司的面试笔试题目, ...

  8. 【1】MySQL大数据量分页查询方法及其优化

    ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适应场景: 适用于数据量较少的情况(元组百/千 ...

  9. java大数据量调优

    从总体上来看,对于大型网站,比如门户网站,在面对大量用户访问.高并发请求方面,基本的解决方案集中在这样几个环节:1.首先需要解决网络带宽和Web请求的高并发,需要合理的加大服务器和带宽的投入,并且需要 ...

随机推荐

  1. Java多线程系列--“JUC线程池”04之 线程池原理(三)

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/3509960.html 本章介绍线程池的生命周期.在"Java多线程系列--“基础篇”01之 基 ...

  2. Socket桥(转载)

    最好方案:使用haproxy 或者nginx转发.自己写程序性能和监控难保证,推荐使用开源软件替代. 源地址为:http://baishaobin2003.blog.163.com/blog/stat ...

  3. 为什么需要Bundler

    对于从Node.js转Ruby的人很可能会有和我一样的疑惑,为什么要有Bundler这个东西?Rubygems不够吗? 从Node.js到Ruby的包管理器 在Node的世界里,依赖管理是由npm来完 ...

  4. Linux下通过源码编译安装程序

    本文简单的记录了下,在linux下如何通过源码安装程序,以及相关的知识.(大神勿喷^_^) 一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件: ...

  5. 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要四

    又是一个周末,刚好有时间,又继续复习与总结了,希望能让大家受益,不足之处欢迎指正,谢谢! 十八. Lambda 1.Lambda表达式:匿名方法的另一种表现形式,它可以包含表达式和语句,且用于创建委托 ...

  6. ado.net 用c#与数据库连接实现增删改查

    ADO.NET: 数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 是所有数据访问技术的基础 ...

  7. html 组装table 指定列自动换行

    4列后自动换行思路:int i = 0;while (dr.Read()){    if (i % 4 == 0) 输出一行的开始     输出这个数据    if (i % 4 == 3) 输出一行 ...

  8. 介绍开源的.net通信框架NetworkComms框架 源码分析(十二)PriorityQueue

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  9. iOS阶段学习第20天笔记(MRC内存管理)

    iOS学习(OC语言)知识点整理 一.OC中的内存管理 1)概念:内存管理的对象为所有继承了NSObject的对象,对基本数据(如:int .float.double...)无效      OC中采用 ...

  10. Android录音应用

    首先是xml布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xm ...