2010-10-01 87 views
2

abap中字符串類型的缺點是什麼?何時使用它,何時不使用?字符串類型與abap中的char

一個例子:我有一個文本字段,應該保存值範圍從0到12個字符,最好使用字符串或Char(12)?

謝謝!

回答

7

字符串存儲爲字符的動態數組,而char是靜態分配的。

一些字符串的缺點包括:

  • 開銷 - 因爲它們是動態的長度必須存儲在除了實際的字符串。
  • 子字符串和偏移量運算符不能使用字符串。
  • 字符串不能轉換爲可翻譯的文本元素。

因此,要回答你的問題,字符串應該只用於相當長的值與各種長度的地方的額外開銷相對於靜態char(x)變量的潛在浪費的空間可以忽略不計。

+3

1. ABAP存儲每個變量的元數據,而不僅僅是字符串2.子串和偏移量操作符可以用於最新的NetWeaver安裝。 -1對我來說。 – tomdemuyt 2013-05-08 23:39:48

+0

子串&抵消不起作用,雖然 – tomdemuyt 2013-05-14 19:43:56

1

我認爲CHAR是最好的,因爲你100%確定該字段只能容納0-12個字符。

+0

這似乎是對我來說正確的答案,不知道你爲什麼得到-1'd。 – tomdemuyt 2013-05-08 23:40:14

1

字符串是可變長度數據類型,而在字符中必須爲類型C(文本字段(字母數字字符))定義長度.. 並且字符串X或十六進制字符串具有初始值(X'0 ... 0 ')。 避免初始值,並且使用實際長度C類型用於

0

字符串變量: 一個字符串是用於存儲數據的任意長度的可變長度的數據類型。使用可變長度字段是因爲它們節省了空間。 字符串,可以存儲任意數量的字符。字符串將在運行時分配內存(也稱爲動態內存分配),將根據字符串的大小分配內存。由於分配的內存是動態的,因此不能使用參數聲明字符串。

但在你的情況下,你已經知道字段的最大長度(0-12個字符),所以CHAR type是最適合你的情況。 A STRING類型通常用於可變長度數據或長整型值。

Read more

0

字符串是好當:

  • 文本長度是可變的。
  • 空間是字符串(尾隨在煤焦領域的空間丟失)的一部分
  • 你通過他們身邊很多時(STRING變量的元數據小於焦炭場大小)
  • 您需要經常得到的字符串的長度。它比CHAR字段更優化。

煤焦領域都不錯:

  • 如果他們是小,他們速度快(小於約32個字符Unicode的系統)使用
  • CHAR場文字引號('),而不是(` )可以製作成可翻譯的文本。

請注意以下事項:

  • 所有變量有元數據,但字符串也有一些內部的字符串指針數據,這可能多達64個字節增加內存消耗。要記住的事情。
  • 將文字文本分配給變量時,嘗試將文字類型與變量類型相匹配。 STR用'test'test用於STRING。這通常稍微快一點。
相關問題