ABAP 分次数取数(分包) PACKAGE SIZE

当碰到大数据处理时,某一次取数会导致内存不够,或者是超出了内表最大的限制。就需要用到分包取数 PACKAGE SIZE n . N为多少次而不是空间(可以自己试验一下,跟循环DO 循环一样 制定次数)。
使用分包取时,要用,SELECT ENDSELECT 打开循环,依次从DB数据库获取数据。这里面涉及到一个SQL 的INTO 或者APPEND ,之前也说过,INTO 有隐式操作会覆盖上一次数据,那为什么又要用INTO TABLE 呢?
SAP中,一个C类型的字符占用两个字节(2Byte)。内存设置方面,分配给一个前台进程(Dialog Process)默认是4000000000字节(2000000000的Extended Memory和2000000000的Heap Memory,这个大小可以调整),也就是不到4GB的内存空间,当一个内表的行结构是512个字符(1024个字节时),

最多大约可以容纳400万条不到的记录数

,如果超过了这个容量,就会发生DUMP或者程序强制关闭,关于这个问题之前的文章也提到过怎么看,以及怎么调节内存。内存管理 短转储问题 dump 临时修改内存设置

以下代码示例,示范了分包取时的数据操作,是把表更改记录的两张标准表复制数据出来,因为表更改记录是很庞大的一个

猜你喜欢

转载自blog.csdn.net/Pegasus666/article/details/119714320