Тип строки по сравнению с символом в abap - PullRequest
2 голосов
/ 01 октября 2010

Каковы недостатки типа String в abap?Когда его использовать, когда нет?

Пример: у меня есть текстовое поле, в котором следует сохранять значения в диапазоне от 0 до 12 символов, лучше использовать строку или символ (12)?

Спасибо!

Ответы [ 5 ]

7 голосов
/ 01 октября 2010

Строка хранится в виде динамического массива символов, в то время как символ статически размещается.

Некоторые недостатки строк включают в себя:

  • Накладные расходы - поскольку они являются динамическими, длина должна быть сохранена в дополнение к фактической строке.
  • Операторы подстроки и смещения не работают со строками.
  • Строки нельзя превратить в переводимые текстовые элементы.

Таким образом, чтобы ответить на ваш вопрос, строки следует использовать только для довольно длинных значений с широким диапазоном длин, где дополнительные издержки незначительны по сравнению с потенциальным потерянным пространством статической char(x) переменной.

2 голосов
/ 08 мая 2013

Я думаю, что CHAR лучший, потому что вы на 100% уверены, что поле должно содержать только 0-12 символов.

1 голос
/ 29 ноября 2013

строка является типом данных переменной длины, в то время как в символе вы должны определить длину .. для типа C (текстовое поле (буквенно-цифровые символы)) и строка X или шестнадцатеричная строка имеют начальное значение (X'0… 0 '),чтобы избежать начального значения и использовать фактическую длину, используется тип C

0 голосов
/ 15 декабря 2017

Строки хороши, когда:

  • Длина текста будет переменной.
  • Пробелы являются частью строки (конечные пробелы в полях CHAR теряются)
  • Вы много их передаете (когда метаданные переменной STRING меньше размера поля символа)
  • Вам нужно часто получать длину STRING. Это более оптимально, чем с полями CHAR.

Поля CHAR хороши:

  • Если они маленькие, они быстрые (менее 32 символов в системах Юникод)
  • Литералы поля CHAR, использующие кавычки (') вместо (`), можно преобразовать в переводимые тексты.

Что следует помнить:

  • Все переменные имеют метаданные, но у строк также есть некоторый внутренний указатель на строковые данные, который может добавить до 64 байтов к потреблению памяти. Что-то иметь в виду.
  • При назначении литерального текста переменной, попытайтесь сопоставить литеральный тип с типом переменной. Используйте 'test' для CHAR и test для STRING. Обычно это немного быстрее.
0 голосов
/ 29 ноября 2013

String Variable: String - это тип данных переменной длины, который используется для хранения данных любой длины.Поля переменной длины используются потому, что они экономят место.Строка, может хранить любое количество символов.Строка выделяет память во время выполнения, которая также называется динамическим распределением памяти, выделяет память в соответствии с размером строки.Строки не могут быть объявлены с использованием параметров, поскольку память выделения динамическая.

Но в вашем случае вы уже знаете максимальную длину поля (0–12 символов), поэтому CHAR type лучше всего подходит для использованиядело.Тип STRING, обычно используемый для данных переменной длины или длинных значений.

Подробнее

...