3

abap中String类型的缺点是什么?什么时候用,什么时候不用?

一个例子:我有一个文本字段应该保存从 0 到 12 个字符的值,最好使用字符串或 Char(12)?

谢谢!

4

5 回答 5

7

字符串存储为动态字符数组,而 char 是静态分配的。

字符串的一些缺点包括:

  • 开销 - 因为它们是动态的,除了实际字符串之外,还必须存储长度。
  • 子字符串和偏移运算符不适用于字符串。
  • 字符串不能转换为可翻译的文本元素。

因此,要回答您的问题,字符串应该只用于长度范围很广的相当长的值,其中额外的开销相对于静态char(x)变量的潜在浪费空间可以忽略不计。

于 2010-10-01T17:07:00.503 回答
2

我认为 CHAR 是最好的,因为您 100% 确定该字段只能包含 0-12 个字符。

于 2013-05-08T08:26:50.890 回答
1

string 是可变长度数据类型,而在 char 中,您必须为类型 C(Text field (alphanumeric characters)) 定义长度 .. 并且 String X 或十六进制字符串具有初始值 (X'0 … 0') 。避免初始值,并使用实际长度 C 类型使用

于 2013-11-29T10:45:14.377 回答
0

字符串变量: 字符串是一种可变长度数据类型,用于存储任意长度的数据。使用可变长度字段是因为它们节省空间。字符串,可以存储任意数量的字符。字符串会在运行时分配内存,也称为动态内存分配,会根据字符串的大小来分配内存。字符串不能使用参数声明,因为分配的内存是动态的。

但是在您的情况下,您已经知道字段的最大长度(0 - 12 个字符),因此CHAR type最适合您的情况。一种STRING类型,通常用于可变长度数据或长值。

阅读更多

于 2013-11-29T12:24:16.913 回答
0

字符串在以下情况下很好:

  • 文本长度将是可变的。
  • 空格是字符串的一部分(CHAR 字段中的尾随空格丢失)
  • 您经常传递它们(当 STRING 变量元数据小于 char 字段大小时)
  • 您需要经常获取 STRING 长度。它比使用 CHAR 字段更优化。

CHAR 字段很好:

  • 如果它们很小,它们很快(在 unicode 系统上少于 32 个字符)
  • 使用 (') 引号而不是 (`) 的 CHAR 字段文字可以制成可翻译的文本。

要记住的事情:

  • 所有变量都有元数据,但字符串也有一些指向字符串数据的内部指针,这可能会增加多达 64 个字节的内存消耗。要记住的事情。
  • 将文字文本分配给变量时,请尝试将文字类型与变量类型匹配。用于'test'CHAR 和`test`STRING。这通常会稍微快一些。
于 2017-12-15T16:07:51.540 回答