Speicherbedarf Char

Getting started ... Alles für einen gelungenen Start.
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

Speicherbedarf Char

Beitrag von L0w-RiDer (Specialist / 249 / 46 / 1 ) » 15.09.2019 10:33
Hallo,

ich wollte mal ganz kurz fragen, weil ich es nicht gefunden habe.

Weiß jemand wie groß der Speicherbedarf für ein Char ist?? In Java sind es ja 2 Byte. Wie ist es denn in ABAP?? Und wie hoch wäre er für ein integer?

Danke


Re: Speicherbedarf Char

Beitrag von edwin (Specialist / 293 / 7 / 62 ) » 15.09.2019 21:24
Hi,

F1 im Abap Editor auf Type c, oder type i ... liefert dir die Antwort.

c: In Unicode-Systemen wird UTF-16 als System-Codepage verwendet und die Länge eines Zeichens ist zwei Byte.
i : 4-Byte-Integer
p : 1-16 Bytes
f : 8 Bytes
decfloat16 : 8 Bytes
decfloat34 : 16 Bytes

/Edwin

Re: Speicherbedarf Char

Beitrag von L0w-RiDer (Specialist / 249 / 46 / 1 ) » 16.09.2019 09:18
Danke schon mal.

Ich habe gerade nachgeschaut. Wir haben kein Unicode-System und somit ist es nur 1 Byte.

Re: Speicherbedarf Char

Beitrag von edwin (Specialist / 293 / 7 / 62 ) » 16.09.2019 14:42
du kannst auch das hier verwenden:

cl_abap_char_utilities=>charsize

das liefert dir die Länge eines Char

/Edwin

Re: Speicherbedarf Char

Beitrag von L0w-RiDer (Specialist / 249 / 46 / 1 ) » 15.10.2019 10:56
Versteh ich das eigentlich dann so richtig, dass wenn ich wie folgt eine Variable oder ein Feld in einer internen Tabelle deklariere:

lv_var1(8) type c. <---- in diesem Fall verbraucht es 8 Byte in einem nicht Unicodefähigen System.

lv_var1(8) type d. <------ in diesem Fall verbraucht es 64 Byte, da Dats 8 Byte verbraucht.

Wäre das so richtig??

Re: Speicherbedarf Char

Beitrag von a-dead-trousers (Top Expert / 3437 / 105 / 884 ) » 15.10.2019 11:11
L0w-RiDer hat geschrieben:
15.10.2019 10:56
lv_var1(8) type d. <------ in diesem Fall verbraucht es 64 Byte, da Dats 8 Byte verbraucht.
Wäre das so richtig??
Ne, D(ats) braucht immer nur 8 Bytes. Die Längenangabe hier ist irreführend. Wenn man etwas anderes als 8 nimmt meckert der Kompiler. Ergo ist die Angabe optional und kann auch weggelassen werden, womit wir wieder bei den 8 Bytes wären.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: Speicherbedarf Char

Beitrag von L0w-RiDer (Specialist / 249 / 46 / 1 ) » 15.10.2019 11:33
hmmm

und wenn ich einen Integer als Datentyp nehmen z.B.

lv_var1(40) type i. <--- dann wäre es auch nur 4 Byte, egal wie lang ich es mache??

Re: Speicherbedarf Char

Beitrag von schick (ForumUser / 52 / 5 / 14 ) » 15.10.2019 11:45
L0w-RiDer hat geschrieben:
15.10.2019 11:33
hmmm

und wenn ich einen Integer als Datentyp nehmen z.B.

lv_var1(40) type i. <--- dann wäre es auch nur 4 Byte, egal wie lang ich es mache??
Da sollte folgende Meldung kommen: "Eine Längenangabe hat im Zusammenhang mit Typ 'I' keine Wirkung".

Integer ist in ABAP wie folgt ausgeprägt (siehe Doku: Eingebaute Typen):

i -2.147.483.648 bis +2.147.483.647
int8 -9.223.372.036.854.775.808 bis +9.223.372.036.854.775.807

Re: Speicherbedarf Char

Beitrag von L0w-RiDer (Specialist / 249 / 46 / 1 ) » 15.10.2019 13:01
es verbraucht somit immer 4 Byte, egal ob ich der Variabel den Wert 2 zuweise oder 2.000.000, oder?

Re: Speicherbedarf Char

Beitrag von a-dead-trousers (Top Expert / 3437 / 105 / 884 ) » 15.10.2019 13:39
L0w-RiDer hat geschrieben:
15.10.2019 13:01
es verbraucht somit immer 4 Byte, egal ob ich der Variabel den Wert 2 zuweise oder 2.000.000, oder?
Ja.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
L0w-RiDer (15.10.2019 14:02)

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: Speicherbedarf Char

Beitrag von L0w-RiDer (Specialist / 249 / 46 / 1 ) » 15.10.2019 14:02
Vielen Dank :).

Re: Speicherbedarf Char

Beitrag von fr-g (ForumUser / 56 / 6 / 18 ) » 15.10.2019 17:05
Ich glaube, es wurde hier noch nicht erwähnt. Du kannst ja so ganz einfach feststellen, wieviele Bytes ein Feld hat (auf deinem jeweiligen System, Unicode oder nicht):

Code: Alles auswählen.

  
  DATA char TYPE c LENGTH 3 VALUE 'abc'.
  DATA dats TYPE d VALUE '19851003'.
  DATA len TYPE i.

  DESCRIBE FIELD char LENGTH len IN BYTE MODE. 
  DESCRIBE FIELD dats LENGTH len IN BYTE MODE.

Seite 1 von 1