Академический Документы
Профессиональный Документы
Культура Документы
Рисунки (Pictures)
Рис. Пример хранения числа 3502567 в разнотипных переменных (скриншот отладчика)...........5
Таблицы (Tables)
Табл. Соответствие между уровнем 2 (Dictionary Type) и уровнем 1 (ABAP Type)........................2
Табл. Примеры числовых типов CURR, QUAN, DEC, FLTP, INT4, NUMC, RAW в системе с ABAP
7.01...................................................................................................................................................... 3
Многоуровневая система типов в ABAP
Пояснения по типам данных в ABAP, на основе официальной справки Data Types in
ABAP Dictionary | SAP Help Portal к языку версии 7.01
Типы данных в ABAP делятся на несколько уровней, среди которых, начиная с самого
простого:
1. Встроенный ABAP-тип, он же технический тип (built-in ABAP type, Technical type).
2. Предопределенный тип из словаря данных (predefined ABAP Dictionary type), словарный
тип. Их больше, чем ABAP-типов.
3. Элементарный тип (Elementary type): это словарный тип плюс обозначение длины. Его
еще называют просто data type.
4. Прочие типы, построенные из элементарных: домены, элементы данных, структуры,
типы таблиц.
В спецификациях обычно указываются элементарные типы, т.е. уровня 3. Несколько разных
типов данных (data type) могут иметь один и тот же технический тип (Technical type).
валютах, с 15 цифр, 5 из них после 1 234 567 890,12345 P(8, 5) CURR(15,5) BASE_ BASE_PRICE_
дробной запятой. PRICE SCALE
количество цифр в целой и дробной части
REPORT ztg_num_data_types.
PARAMETERS:
* Zero decimal places mean that 0.999 will be rounded to 1.000
cur17_0 TYPE p LENGTH 9 DECIMALS 0 DEFAULT '12345678901234567.999',
cur17_1 TYPE p LENGTH 9 DECIMALS 1 DEFAULT '1234567890123456.1',
cur17_5 TYPE p LENGTH 9 DECIMALS 5 DEFAULT '123456789012.12345',
cur17_14 TYPE p LENGTH 9 DECIMALS 14 DEFAULT '12.12345678901234',
* 15 decimal places are allowed with warning "Maximum allowed is 14".
cur17_15 TYPE p LENGTH 9 DECIMALS 15 DEFAULT '12.123456789012345',
* cur17_16 TYPE p LENGTH 9 DECIMALS 16. "16 decimals are not allowed
int4 TYPE i
DEFAULT -1234567890,
int4_nos TYPE logsizetot "The type is "INT4 without sign"
DEFAULT 1234567890.
* Type F is not allowed for input field (see message id 37 number 048)
* PARAMETERS p_fltp type f. <-- This will not work, must use DATA
DATA:
gv_fltp TYPE f VALUE '12345.12345',
gv_fltp_calculated TYPE f.
gv_fltp_calculated = '24690.2469' / 2.
END-OF-SELECTION.
WRITE:
/ 'Numbers with 17 significant digits (max for CURR, QUAN):',
/(29) cur17_0, 'CURR(17,0)',
/(29) cur17_1, 'CURR(17,1)',
/(29) cur17_5, 'CURR(17,5)',
/(29) cur17_14, 'CURR(17,14)',
/(29) cur17_15, 'CURR(17,15)'.
ULINE.
WRITE:
/ 'The same numbers condensed (left-justified, no grouping):',
/ '12345678901234567890 ← positions',
/(29) cur17_0 LEFT-JUSTIFIED NO-GROUPING, 'CURR(17,0)',
/(29) cur17_1 LEFT-JUSTIFIED NO-GROUPING, 'CURR(17,1)',
/(29) cur17_5 LEFT-JUSTIFIED NO-GROUPING, 'CURR(17,5)',
/(29) cur17_14 LEFT-JUSTIFIED NO-GROUPING, 'CURR(17,14)',
/(29) cur17_15 LEFT-JUSTIFIED NO-GROUPING, 'CURR(17,15)'.
ULINE.
WRITE:
/ 'Quantities (Time unit truncates all zeroes after 1st):',
/(29) quan17_3, 'QUAN(17,3)',
/(29) quan17_u UNIT 'STD', 'QUAN(17,3) with UNIT = Time'.
ULINE.
WRITE:
/ 'Big numbers (25 significant digits, max for DEC)' &
' & their output length',
/ '(sufficient output length is autocalculated in domain in SE11)',
/ '12345678901234567890123456789012345 ← positions |↓ output length',
/(35) dec25_0, (1)' ', 'DEC(25,0) |35 (over sufficient)',
/(34) dec25_0, (2)' ', 'DEC(25,0) |34 (sufficient)',
/(30) dec25_0, (6)' ', 'DEC(25,0) |30 (insufficient)',
/(26) dec25_0, (10)' ','DEC(25,0) |26 (minimum)',
/(37) dec25_0 LEFT-JUSTIFIED NO-GROUPING,
'DEC(25,0) |condensed',
/(20) dec25_0, (16)' ','DEC(25,0) |20 (below minimum)'.
WRITE:
/ 'Place for sign is reserved by default, NO-SIGN option exists',
/(35) dec25_14, (1)' ', 'DEC(25,14)|35 (over sufficient)',
/(30) dec25_14, (6)' ', 'DEC(25,14)|30 (sufficient)',
/(30) dec25_14 NO-SIGN, (6)' ',
'DEC(25,14)|30 NO SIGN',
/(28) dec25_14, (8)' ', 'DEC(25,14)|28 (insufficient)',
/(27) dec25_14, (9)' ', 'DEC(25,14)|27 (minimum)',
/(37) dec25_14 LEFT-JUSTIFIED NO-GROUPING,
'DEC(25,14)|condensed',
/(20) dec25_14, (16)' ','DEC(25,14)|20 (below minimun)'.
ULINE.
WRITE:
/ 'Integers from -2147483648 to 2147483647 (4 bytes long):',
/(29) int4, 'INT(4)',
/(29) int4_nos, 'INT(4) NO SIGN'.
ULINE.
WRITE:
/ 'Floating point number (scientific notation):',
/(29) gv_fltp, 'FLTP(8) simple 12345.12345 is not exact here',
/(29) gv_fltp_calculated, 'FLTP(8) 2469.2469/2 isn''t either'.
Ссылки
1. ABAP 7.01 Documentation, Data Types in ABAP Dictionary —
https://help.sap.com/docs/SAP_NETWEAVER_701/6da3d9466c4b1014a5a2e370bd8c5dc8/
fceb3138358411d1829f0000e829fbfe.html?version=7.01.22
2. ABAP 7.54 Documentation, Predefined Numeric Types —
https://help.sap.com/doc/abapdocu_754_index_htm/7.54/en-US/index.htm?
file=abenbuiltin_types_numeric.htm
3. ABAP 7.54 Documentation, Overview of All Built-In Dictionary Types —
https://help.sap.com/doc/abapdocu_754_index_htm/7.54/en-US/index.htm?
file=abenddic_builtin_types.htm
4. ABAP 7.54 Documentation, Integers, Packed Numbers, Binary Floating Point Numbers —
https://help.sap.com/doc/abapdocu_754_index_htm/7.54/en-US/index.htm?
file=abenddic_builtin_types.htm