使用事物码 SCC9
进行 client 之间数据拷贝时,遇到如下错误:63999 table too wide
这个错误在 SAP NOTE 2099033里有介绍。问题的根源是:
Limitation in the source code when table length is greater than 63999 Bytes
意思是试图拷贝一个 length 超过 63999 字节的数据库表。
在事物码 SE11 里,菜单 Utilites->Runtime Objects->Display 查看一个数据库表的 length:
解决方法
- 执行 report RSCCEXPT,将引起 copy 错误的数据库表,剔除出 client copy 过程。
- 使用
customizing transport
手动将被剔除出 client copy 的数据库表的内容进行传输。
SAP ABAP 中的表缓冲是 ABAP 表中的一个概念,用于提高性能(通常是 10 到 100 倍的数量级提升)并减少处理(访问)表的时间。
表的缓冲区是数据库层和应用程序层之间的接口。 应用层与缓冲区通信,缓冲区与数据库层通信,反之亦然。
数据库接口确定数据是否在缓冲区中。 如果没有,它会从数据库中获取数据并同步缓冲区。
ABAP 支持下列几种缓冲类型:
- 当使用完全缓冲(full bufferred)时,要么缓冲整个表,要么不缓冲任何记录。 当访问单个记录时,该表的整个数据/记录都会被缓冲。 缓冲是指所有记录都在缓冲表中。
完全缓冲适应于频繁读取但是极少写入的数据库表。
- 当使用 Generic Buffering 时,所有带有 Generic 键的记录都会被一次性缓冲。通用键仅用于从表中过滤数据的某些键的组合键。
通用键是主键的一部分。在 SELECT 语句的 WHERE 条件中应提及所有通用键,否则会绕过缓冲区并直接从数据库中读取数据。 - Single-Record Buffering:仅缓冲已经被访问过的记录。
在事物码 SE11 里选中 Buffering Type 点 F1,能看到更多的帮助信息: