ABAP基本语法概述
ABAP语法背景
ABAP语法,相对于Java、Python,有点晦涩难懂,但熟悉之后,相比于Java较为简单,没有数据库连接,没有Java生态圈诸多框架(Spring全家桶、消息中间件等等),没有Java那么多繁琐的配置,没有jar包版本的兼容问题,只需要基于企业业务,专注于开发报表、接口即可。
笔者复制粘贴习惯了,现在开始睁眼看世界,所以整理难免会有一些错误,虚心接受诸位的批评指正,我会不断完善内容
01、数据类型
基本数据类型表
数据类型 | 含义 | 默认值 | 自定义值 | 长度 | 作用 |
---|---|---|---|---|---|
C | 字符 |
‘ ’(空格) | ‘ABAP’ | 默认长度为1,最大长度无限制 | 标识、文本 |
N | 数值型文本 |
‘0’ | ‘520’ | 默认长度为1,最大长度无限制 | 数值文本 |
T | 时间:HHMMSS |
‘000000’ | ‘083606’ | 固定长度为6 | 时分秒 |
D | 日期:YYYYMMDD |
‘00000000’ | ‘20240606’ | 固定长度为8 | 年月日 |
I | 整型 |
0 | 1314 | 默认长度为1,取值范围过亿,足够用 | 库存计算 |
F | 浮点型 |
0.0000000000000000E+00 | 754 | 长度按机器类型(操作系统位数)固定 | 金额计算 |
P | 包类型 |
00 | 123456789 | 默认长度为1,最大长度为16 | 商务标准值 |
X | 十六进制数 |
00 | ‘6B’ | 默认长度为2,最大长度无限制 | |
String | 可变字符串 |
’ '(空格) | ‘521’ | 默认长度为1,最大长度无限制 | 字符串可追加 |
XString | 十六进制字符串 |
’ '(空格) | ‘A3FF’ | 默认长度为1,最大长度无限制 | 文件压缩 |
02、变量
(1)普通变量定义
DATA: a Type I. "定义整型变量
(2)常量定义
CONSTANTS PI TYPE P DECIMALS 2 VALUE '3.14'. "定义常量
(3)结构体变量定义
结构体变量是一个内表变量,可以存储数据
DATA: BEGIN OF item,
matnr LIKE mara-matnr, "物料编号
werks LIKE marc-werks, "工厂
END OF item.
(4)结构类型定义
结构体类型仅是一个数据类型,不占用内存,不存储数据
TYPES: BEGIN OF TY_item,
matnr(40) TYPE C, "物料编号
werks(4) TYPE C, "工厂
END OF TY_item.
(5)工作区定义
DATA: it_item TYPE LINE OF TY_item.
(6)内表定义
DATA: it_item LIKE TABLE OF TY_item.
03、变量操作
(1)变量赋值
DATA text_line TYPE C LENGTH 40.
text_line = '520'.
Write text_line.
MOVE '1314' TO text_line." MOVE可以用WRITE替换
Write / text_line.
text_line = '5201314'." 不同编程语言通用赋值方法
Write / text_line.
(2)变量清空
DATA text_line TYPE C LENGTH 40.
text_line = '520'.
clear text_line . "清空变量
04、算术运算符
算术运算符 | 含义 | 例子 | 结果 |
---|---|---|---|
+ | 加 |
1+1 | 2 |
- | 减 |
2-1 | 1 |
* | 乘 |
6*6 | 36 |
/ | 除 |
6/2 | 3 |
DIV | 整除 |
6.9 DIV 2 | 3 |
MOD | 取余 |
6.9 MOD 2 | 1 |
** | 幂次方 |
2 ** 3(相当于23) | 8 |
05、比较运算符
比较运算符 | 含义 | 替代写法 | 英文全称 |
---|---|---|---|
= | 等于 |
EQ | Equal |
< | 小于 |
LT | Less Than |
<= | 小于等于 |
LE | Less Equal |
> | 大于 |
GT | Greater Than |
>= | 大于等于 |
GE | Greater Equal |
<> | 不等于 |
NE | Not Equal |
06、流程控制
(1)条件判断
DATA a TYPE I.
a = 9.
* IF条件判断
IF a > 6.
WRITE: 'a大于6'.
ELSEIF a > 3 and a <= 6.
WRITE: 'a大于3,小于6'.
ELSE.
WRITE: 'a小于等于3'.
ENDIF.
------------------------------------------------------------