ABAP 資料型態 (ABAP Data Types)

下圖顯示ABAP中所使用的不同資料型態,資料型態可分為ElementaryReference以及Complex型態。

abap_data_types.webp

Elementary Types

Elementary types是最基本不可分割的型態單元,可分為固定長度(fixed length)和可變長度(variable length)。

固定長度(Fixed-Length) Elementary Types

ABAP中有8種固定長度的預定義型態:

  • 4種Character類型:

    • Character (C), Numeric character (N), Date (D), and Time (T)
  • 1種hexadecimal類型:

    • Byte field (X)
  • 3種numeric類型:

    • Integer (I), Floating-point number (F) and Packed number (P)
    CategoryTypeDescriptionInitial ValueLength
    CharacterCCharacterSpace1 - 65535
    CharacterNNumeric character‘0’4 bytes
    CharacterDDate (FORMAT: YYYYMMDD)‘00000000’8
    CharacterTTime (FORMAT: HHMMSS)‘000000’1 - 16 bytes
    NumericPPacked number01 - 65535
    NumericIInteger08 bytes
    NumericFFloating Point number0.0characters
    HexadecimalXHexadecimalX’00’6 characters

可變長度(Variable-Length) Elementary Types

ABAP中有2種長度可變的預定義型態:

  • Character strings (STRING)
  • Byte strings (XSTRING)

Reference Types

Reference Types在ABAP中是指定包含對其他物件的參考/指向資料的物件。這些物件沒有預先定義的參考,因此在程式中必須進行定義。

簡單來說,Reference Types是用於指向其他物件的一個類型。在ABAP中,Reference Types通常用於傳遞複雜的資料結構,例如結構、內部表等。使用Reference Types可以避免將複雜的資料結構作為參數進行傳遞,從而簡化代碼並提高效率。


Complex Types

Complex Types是由其他型態所組成。Complex Types允許我們在一個名稱下管理和處理概念相關的資料。Complex Types可以作為一個整體或單個元件個別地進行處理。

Structures

Structure用於對邏輯上屬於在一起的元素進行組合,元素(element)可以是任何elementary types、reference types或complex types。

Structures根據其定義,可分類為4種型態,分別是:

Table TypeDescription
Non-nested只包含固定/可變長度(fixed/variable length)的elementary資料型態
Nested包含一個或多個structure
Flat只包含固定長度(fixed length)的elementary 資料型態(無internal tables、reference types或是string)
Deep任何包含internal tables、reference types或是string元素的structure都是deep structure

Internal Tables

Internal Tables與Structures基本上很類似,它同樣是程式中被臨時創建的一個儲存空間,是一個可包含多行資料的資料表。

Internal Table有3種類型:
Standard: 當主要使用索引存取Internal table時,應選擇此類型。
sorted: 若主要使用Key值存取Internal table或希望能自動按照Key值排序,則應選擇此類型。
Hashed:若Internal table非常大並且您只想通過Key值存取,則應該選擇此類型。

TypeIndex AccessKey AccessUniqueness of Key
StandardNON-UNIQUE KEY
SortedUNIQUE KEY
HashedUNIQUE KEY