当碰到大数据处理时,某一次取数会导致内存不够,或者是超出了内表最大的限制。就需要用到分包取数 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 ,临时修改内存设置
以下代码示例,示范了分包取时的数据操作,是把表更改记录的两张标准表复制数据出来,因为表更改记录是很庞大的一个系统表,一次性取数必定DUMP,所以采用分包,没取数一次进行一次数据操
在处理大数据时,由于内存限制,需要使用ABAP的PACKAGE SIZE技术分批次获取数据。通过SELECT...ENDSELECT循环从数据库中分批读取,避免内存溢出。在操作中,理解INTO与INTO TABLE的区别至关重要,尤其是在处理字符类型数据时。SAP系统中,每个C类型字符占2字节,内表最大容量限制可能导致超过400万条记录时程序崩溃。为解决此问题,示例代码展示了如何分批复制大型系统表的数据并存储。
订阅专栏 解锁全文
 PACKAGE SIZE&spm=1001.2101.3001.5002&articleId=119714320&d=1&t=3&u=f01394e280ce418d8f8dcbe77f786bcf)
143

被折叠的 条评论
为什么被折叠?



