ABAP01 基本数据类型
1、ABAP基本数据类型-10种
数据类型 | 类型说明 | 示例 | 类似 Java | 备注 |
---|---|---|---|---|
C | 文本字符 | ‘Name’ | char/boolean | 长度不够的从左开始截取 |
N | 数字文本 | ‘0123’ | 0~9之间组成的数字字符串 | 长度不够的从右开始截取 |
T | 6位时间(HHMMSS) | ‘132051’ | 6位数,24小时制 | |
D | 8位日期(yyyymmdd) | ‘20211027’ | 8位数 | |
I | 整型 | 94 | short/int/long | |
F | 浮点数 | 5E+04 | float | |
P | 压缩数 | 12.91 | double | |
X | 十六进制数 | ‘3A’ | 基本不用 | |
String | 字符串(长度可变) | ‘Hello SAP’ | String | |
XString | 十六进制字符串(长度可变) | ‘A3FF’ | 基本不用 |
2、变量定义
格式:DATA 变量名[(len)] TYPE 数据类型 [DECIMALS 精度长度] [VALUE 默认值]
* 示例
DATA I_C TYPE C." 定义的变量默认长度=1
DATA I_C2(30) TYPE C." 长度=30
DATA I_C3(4) TYPE C VALUE 'ABCD'." 长度=4,默认值=ABCD
DATA I_P TYPE P DECIMALS 2." 定义保留2位小数
3、Coding举例说明
C 类型-文本
* 情景 1:变量长度不够的,自动从左开始截取'
DATA I_C1 TYPE C.
I_C1 = 'AB'.
WRITE: I_C1,/." 输出结果:A
* 情景 2:变量长度足够的,全部输出'
DATA I_C2(2) TYPE C.
I_C2 = 'CD'.
WRITE: I_C2,/." 情景2输出结果:AB
* 情景 3:变量带长度带默认值的—用value
DATA I_C3(3) TYPE C VALUE 'FG'.
WRITE: I_C3,/." 情景3输出结果:FG
N 类型-数字文本
* N类型
DATA I_N TYPE N.
I_N = '123'.
WRITE:I_N." 输出结果:3
WRITE /." 换行
DATA I_N3(3) TYPE N.
I_N3 = '123'.
WRITE:I_N3." 输出结果:123 .
WRITE /." 换行
I_N3 = I_N3 + 1.
WRITE:I_N3." 输出结果:124 .
*此行代码检查时OK,但执行会报错,因为'a' 不是N类型,相加会有异常 .
*WRITE /." 换行
*I_N3 = I_N3 + 'a'.
*WRITE:I_N3." 输出结果:124 .
T 类型-时间
DATA I_T TYPE T.
I_T = '235059'.
WRITE:I_T." 结果:235059 .
I_T = I_T + 1.
WRITE:I_T." 结果:235100 .
D 类型-日期
DATA I_D TYPE D.
I_D = SY-DATUM." SY-DATUM=系统当前日期
WRITE I_D." 输出结果:20211027 .
I_D = I_D + 1.
WRITE I_D." 输出结果:20211028 .
求2021年8月的最后一天
* 求2021年8月份的最后一天
DATA I_DA TYPE D VALUE '20210901'.
I_DA = I_DA - 1.
WRITE I_DA." 输出结果:20210831 .
I 类型-整数
* 输出结果都是100,请注意NUM1 和 NUM2 赋值的区别,有小数点的需要单引号.
DATA NUM1 TYPE I.
NUM1 = 100.
WRITE:NUM1." 输出结果都是100 .
WRITE /.
DATA NUM2 TYPE I.
NUM2 = '100.04'.
WRITE:NUM2." 输出结果都是100 .
F类型/P类型
SAP中小数运算基本只用P类型
DATA I_F TYPE F.
I_F = '100.566'.
WRITE I_F." 正常输出 .
DATA I_P1 TYPE P. " 没有设置精度,相当于= DATA I_P1 TYPE I.
DATA I_P2 TYPE P DECIMALS 2. " 设置2位小数.
I_P1 = I_F.
I_P2 = I_F.
WRITE I_P1." 输出结果:101.带四舍五入功能.
WRITE I_P2." 输出结果:100.57 带四舍五入功能.
String类型
字符串拼接用:CONCATENATE A B INTO C SEPARATED BY ‘-’. 表示A和B用符号-拼接在一起,结果:A-B
DATA I_STR TYPE STRING.
I_STR = '联系中'.
WRITE: I_STR,/. " 輸出:联系中
CONCATENATE 'LION' 'hello' INTO I_STR." String字符串拼接方式不用+,用CONCATENATE.
WRITE:I_STR,/. " 輸出:LIONhello
CONCATENATE 'LION' 'hello' INTO I_STR SEPARATED BY '-'." String字符串拼接方式不用+,用CONCATENATE.
WRITE I_STR. " 輸出:LION-hello
4、注意事项
1、单行输出用WRITE。
2、多行输出用WRITE: ,比上面多了一个冒号,以后写代码尽量用带冒号的,单/多行可通用。
3、换行用/。
4、整行备注用*,后面注释用英文的双引号" 。
5、一条横线用:ULINE 。
6、字符串拼接用:CONCATENATE A B INTO C SEPARATED BY ‘-’。
7、类型T加减会进位,如132059+1=132100。
7、类型D加减会进位,如20210901-1=202108031。