SAP ABAP语法

基本语法

01-语句

        ABAP源程序由注释和ABAP语句组成。 ABAP中的每个语句都以关键字开头,以句点结尾,ABAP不区分大小写。

        程序中的第一个非注释行以单词REPORT开头。 报告将始终是创建的任何可执行程序的第一行。 该语句后面是创建的程序名称。 然后用一个句号终止该行。
语法是:

REPORT [Program_Name]. 
[Statements…].

        语句包括命令和以句点结尾的变量和选项。 只要句号出现在语句的结尾,就不会出现问题。 此时,标志着语句的完成。

02-冒号表示法

        如果每个语句的开头是相同的,则连续语句可以链接在一起。 这是使用冒号(:)运算符和逗号,用于终止单个语句,就像句点结束正常语句。
下面是一个程序的例子:

WRITE 'Hello’. 
WRITE 'ABAP’. 
WRITE 'World'.

使用冒号表示法,可以这样重写

WRITE: 'Hello’, 
              'ABAP’, 
             'World'.
WRITE: 'Hello', 'ABAP', 'World'

03-注释

 内联注释可以通过以下两种方法之一在程序中的任何位置声明:

        • 通过在行的第一个位置放置星号(*)来指示全行注释,在这种情况下,整个行被系统认为是注释。 注释不需要以句点终止,因为它们可能不会跨越多个行延伸。

        • 部分行注释通过在语句之后输入双引号(")来表示,双引号后面的所有文本都被系统视为注释。您无需在一段时间内终止部分行注释,因为它们不能跨越当前行。

04-抑制空白

  NO -ZERO命令在DATA语句之后。 它抑制包含空格的数字字段的所有前导零。 输出通常更容易阅读。

**基本语法-04-抑制空白
REPORT zhy01_hy101_20220612_01 NO STANDARD PAGE HEADING.
WRITE '000001234'.
**基本语法-04-抑制空白
REPORT zhy01_hy101_20220612_01 NO STANDARD PAGE HEADING.
WRITE '000001234' NO-ZERO.

05-空白行

SKIP 命令有助于在页面上插入空行;

**基本语法.05-空白行
REPORT zhy01_hy101_20220612_01 NO STANDARD PAGE HEADING.
WRITE 'This is the 1st line'.
SKIP.
WRITE 'This is the 2nd line'.

我们可以使用SKIP命令插入多个空白行。

**基本语法.05-空白行
**插入多个空白行
REPORT zhy01_hy101_20220612_01 NO STANDARD PAGE HEADING.
WRITE 'This is the 1st line'.
SKIP 5.
WRITE 'This is the 2nd line'.

06-插入线

ULIKE命令自动在输出插入一条水平线。 也可以控制线的位置和长度。

**基本语法.06-插入线
REPORT zhy01_hy101_20220612_01 NO STANDARD PAGE HEADING.
WRITE 'This is underlined'.
ULINE.

07-消息

MESSAGE命令显示由程序开始处REPORT语句中指定的消息ID定义的消息。

消息ID是一个2字符代码,用于定义在使用MESSAGE命令时程序将访问的1000个消息的集合。

消息编号从000到999 .与每个数字相关联的消息文本最多为80个字符。 调用消息号时,将显示相应的文本。

以下是用于Message命令的字符。

错误消息通常用于阻止用户做不应该做的事情。 警告消息通常用于提醒用户他们的行动的后果。 信息消息给用户有用的信息。

法一:直接定义

**基本语法.07-消息
**定义法一:直接定义
REPORT zhy01_hy101_20220612_01 NO STANDARD PAGE HEADING.
MESSAGE 'Hello ABAP' TYPE 'I'.

法二:创建类

激活保存

选择对应的包进行保存(也可以直接保存到本地)

数据类型

01-基本数据类型

类型关键词
字节字段X
文本域C
IntegerI
浮点F
打包数量P
文本字符串STRING

  一些字段和数字可以使用一个或多个名称来修改,如下所示:

  • byte
  • numeric
  • character-like

下表显示数据类型,将值存储在内存中需要多少内存,以及可以存储在此类变量中的最小值和最大值。

类型典型长度典型范围
X1字节任何字节值(00到FF)
C1个字符1〜65535
N(数字文本字段)1个字符1〜65535
D(类似字符的日期)8个字符8个字符
T(字符型时间)6个字符6个字符
I4字节-2147483648至2147483647
F8字节2.2250738585072014E-308至1.7976931348623157E + 308正或负
P8字节[-10 ^(2len -1)+1]到[+ 10 ^(2len -1)1](其中len =固定长度)
STRINGVariable任何字母数字字符
XSTRING(字节字符串)Variable任何字节值(00到FF)

02-例子

REPORT YR_SEP_12. 
DATA text_line TYPE C LENGTH 40. 
text_line = 'A Chapter on Data Types'. 
Write text_line. 

DATA text_string TYPE STRING. 
text_string = 'A Program in ABAP'. 
Write / text_string. 

DATA d_date TYPE D. 
d_date = SY-DATUM. 
Write / d_date.

在此示例中,我们有一个具有预定义长度40的C类型的字符串。STRING是可用于任何长度可变的字符串(文本字符串)的数据类型。 类型STRING数据对象通常应用于固定长度不重要的字符内容。

上面的代码产生以下输出:

A Chapter on Data Types 
A Program in ABAP 
12092015 

DATE类型用于存储日期信息,并且可以存储八位数字,如上所示。

03-复杂和参考类型

复杂类型分为结构类型表类型。 在结构类型中,基本类型和结构(即,嵌入在结构中的结构)被分组在一起。 你可以只考虑基本类型的分组。 但是你必须意识到结构的嵌套的可用性。

当基本类型被分组在一起时,数据项可以作为分组数据项被访问或者可以访问各个基本类型数据项(结构字段)。 表类型在其他编程语言中更好地称为数组。 数组可以是简单数组或结构数组。 在ABAP中,数组被称为内部表,并且与其他编程语言相比,它们可以以许多方式被声明和操作。 下表显示了表示内部表的参数。

S.No。参数& 描述
1

线或行类型

内部表的行可以是基本类型,复杂类型或引用类型。

2

将字段或一组字段指定为标识表行的内部表的键。 键包含基本类型的字段。

3

存取方法

描述ABAP程序如何访问单个表条目。

引用类型用于引用类,接口和运行时数据项的实例。 ABAP OOP运行时类型服务(RTTS)允许在运行时声明数据项。

变量

变量是用于在程序的分配的存储区域中存储值的命名数据对象。

0-1 变量声明的基本形式

DATA <f> TYPE <type> VALUE <val>. 

这里< f> 指定变量的名称。 变量的名称最多可包含30个字符。 < type> 指定变量的类型。 具有完全指定的技术属性的任何数据类型被称为< type&gt ;. < val> 指定< f>的初始值。 变量。 在定义基本固定长度变量的情况下,DATA语句会自动使用类型特定的初始值填充变量的值。 < val>的其他可能值 可以是文字,常量或显式子句,例如Is INITIAL。

以下是变量声明的有效示例。

DATA d1(2) TYPE C.  
DATA d2 LIKE d1.  
DATA minimum_value TYPE I VALUE 10. 

常量和字面量

文字是在程序的源代码中创建的未命名数据对象。 他们完全由他们的价值定义。

 常量是通过使用声明性语句静态创建的命名数据对象。 通过为程序的存储区域中存储的值分配一个常量来声明该常量。 分配给常数的值在程序执行期间不能更改。 这些固定值也可以被视为文字。

有两种类型的文字 - 数字和字符。

0-1 数字字面量

数字文字是可以有前缀符号的数字序列。 在数字文字中,没有十进制分隔符,也没有带尾数和指数的符号。

183. 
-97. 
+326.

0-2 字符文字

字符文字是用单引号括起来的ABAP程序的源代码中的字母数字字符序列。 用引号括起来的字符文字具有预定义的ABAP类型C,并被描述为文本字段文字。 包含在“后引号"中的文字具有ABAP类型STRING,并且被描述为字符串文字。 字段长度由字符数定义。
注意 - 在文本字段文字中,尾随空白将被忽略,但在字符串文字中,它们将被考虑在内。
以下是字符文字的一些示例。

文本字段字面值

REPORT YR_SEP_12. 
Write 'Tutorials Point'. 
Write / 'ABAP Tutorial'. 

字符串字面值

REPORT YR_SEP_12. 
Write 'Tutorials Point'. 
Write / 'ABAP Tutorial'. 

在上述两种情况下的输出相同 

Tutorials Point  
ABAP Tutorial

注意 - 当我们尝试更改常量的值时,可能会发生语法或运行时错误。 在类或接口的声明部分中声明的常量属于该类或接口的静态属性。

运算符

0-1 算术运算符

算术运算符在数学表达式中的使用方式与在代数中的使用方式相同。

下表介绍了算术运算符。假设整数变量 A 为 20,变量 B 为 40。

编号算术运算符和描述
1

+(添加)
在运算符的两侧添加值。 示例:A + B将给出60。

2

- (减法)

从左边操作数中减去右边操作数。 示例:A - B将给出-20。

3

*(乘法)

将运算符两侧的值相乘。 示例:A * B将给出800。

4

/(除法)
用右边操作数除左边操作数。 示例:B / A将给出2。

5

MOD(模量)
用右边操作数除左边操作数,并返回余数。 示例:B MOD A将给出0。

例子

REPORT YS_SEP_08. 
DATA: A TYPE I VALUE 150, 
B TYPE I VALUE 50, 
Result TYPE I. 
Result =  A / B. 
WRITE / Result.

上面的代码产生以下输出 

3

0-2 比较运算符

编号比较运算符 & 描述
1

= (equality test)。 替代形式是 EQ。

检查两个操作数的值是否相等,如果相等,则条件变为 true。 实例 (A = B) is not true。

2

<> (Inequality test)。 替代形式是 NE。

检查两个操作数的值是否相等如果值不相等,则条件变为 true。 实例 (A <> B) is true。

3

> (Greater than test)。替代形式是 GT。

检查左操作数的值是否大于右操作数的值如果是,则条件变为 true。 实例 (A > B) is not true。

4

< (Less than test)。 替代形式是 LT。

检查左操作数的值是否小于右操作数的值如果是,则条件变为 true。 实例 (A < B) is true。

5

>= (Greater than or equals) 。替代形式是 GE。

检查左操作数的值是否大于或等于右操作数的值如果是,则条件变为 true。 实例 (A >= B) is not true。

6

<= (Less than or equals test)。 替代形式是 LE。

检查左操作数的值是否小于或等于右操作数的值如果是,则条件变为 true。 实例 (A <= B) is true。

7

a1 BETWEEN a2 AND a3 (Interval test)

检查 a1 是否位于 a2 和 a3 之间(包括 a2 和 a3)如果是,则条件变为 true。 实例 (A BETWEEN B AND C) is true。

8

IS INITIAL

如果变量的内容没有更改并且已自动为其分配初始值,则条件变为 true。 实例 (A IS INITIAL) is not true

9

IS NOT INITIAL

如果变量的内容已更改,则条件变为 true。 实例 (A IS NOT INITIAL) is true。

注意:如果变量的数据类型或长度不匹配,则会执行自动转换。对一个或两个值执行自动类型调整,同时比较不同数据类型的两个值。转换类型由数据类型和数据类型的首选顺序决定。

以下是优先顺序:

  • 如果一个字段的类型为 I,则另一个字段将转换为 I 类型。
  • 如果一个字段的类型为 P,则另一个字段将转换为 P 类型。
  • 如果一个字段的类型为 D,则另一个字段将转换为 D 类型。但 C 和 N 类型不会转换,而是直接进行比较。T 型的情况类似。
  • 如果一个字段的类型为 N,另一个字段的类型为 C 或 X,则这两个字段都将转换为 P 类型。
  • 如果一个字段的类型为 C,另一个字段的类型为 X,则 X 类型将转换为 C 类型。
实例 1
REPORT YS_SEP_08.
DATA: A TYPE I VALUE 115,
B TYPE I VALUE 119.
IF A LT B.
WRITE: / 'A is less than B'.
ENDIF

结果如下:

A is less than B
实例 2
REPORT YS_SEP_08.
DATA: A TYPE I.
IF A IS INITIAL.
WRITE: / 'A is assigned'.
ENDIF.

结果如下:

A is assigned.

0-3 位运算符

~

0-4 字符串运算符

以下是字符串运算符列表:

编号字符串运算符 & 描述
1

CO (Contains Only)

检查 A 是否仅由 B 中的字符组成。

2

CN (Not Contains ONLY)

检查 A 是否包含不在 B 中的字符。

3

CA (Contains ANY)

检查 A 是否至少包含 B 的一个字符。

4

NA (NOT Contains Any)

检查 A 是否不包含任何 B 字符。

5

CS (Contains a String)

检查 A 是否包含字符串 B。

6

NS (NOT Contains a String)

检查 A 是否不包含字符串 B。

7

CP (Contains a Pattern)

它检查 A 是否包含 B 中的模式。

8

NP (NOT Contains a Pattern)

它检查 A 是否不包含 B 中的模式。

实例
REPORT YS_SEP_08.
DATA: P(10) TYPE C VALUE 'APPLE',
Q(10) TYPE C VALUE 'CHAIR'.
IF P CA Q.
WRITE: / 'P contains at least one character of Q'.
ENDIF.

结果如下:

P contains at least one character of Q.

循环控制

编程时经常会遇到需要多次执行代码块的情况。通常,语句是按顺序执行的:首先执行函数中的第一条语句,然后执行第二条语句,依此类推。

编程语言提供了各种控制结构,支持更复杂的执行路径。循环语句 可以让我们多次执行一条语句或一组语句,以下是大多数编程语言中循环语句的一般形式:

ABAP 编程语言提供以下类型的循环语句来处理循环需求

编号循环类型 & 描述
1WHILE 循环

当给定条件为 true 时,重复一条语句或一组语句它在执行循环体之前判断条件。

2Do 循环

DO 语句可用于将特定任务重复特定次数。

3嵌套循环

您可以在任何其他 WHILE 或 DO 循环中使用一个或多个循环。

循环控制语句

循环控制语句改变其正常顺序的执行。ABAP 包含支持提前结束循环的控制语句。

它支持以下控制语句:

编号控制语句 & 描述
1CONTINUE

使循环跳过其正文的其余部分并开始下一个循环过程。

2CHECK

如果条件为 false,则忽略检查后的其余语句,系统开始下一个循环过程。

3EXIT

完全终止循环,并将执行转移到紧跟在循环之后的语句。

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: ABAP是一种用于SAP系统开发的编程语言,它是一种高级语言,用于在SAP环境中编写业务逻辑。ABAP语法ABAP程序的书写规则,用于定义数据对象、变量、函数、方法等,以实现所需的功能。 ABAP的关键语法包括:数据类型定义、变量声明、语句结构、逻辑控制、循环结构、函数和方法定义等。通过这些语法开发人员可以对数据进行处理、进行条件判断、循环操作以及定义自定义的功能模块。 ABAP语法中的数据类型定义包括:整数、浮点数、字符串、日期、时间等。开发人员可以根据需要选择合适的数据类型来定义变量,并进行数据操作。变量声明可以通过关键字"DATA"或"FIELD-SYMBOLS"进行,这些关键字可以指定变量的数据类型、长度、可见性等属性。 在ABAP语法中,还有一些重要的语句结构。例如,条件语句(IF...ELSE...ENDIF)用于根据条件选择不同的执行路径;循环语句(DO...END...WHILE)用于多次执行同一段代码;选择语句(CASE...WHEN...ENDCASE)用于根据不同的条件选择执行不同的代码块。 除此之外,ABAP语法还支持函数和方法的定义。函数是一段独立的代码块,可以接受输入参数并返回结果;方法则是与对象关联的代码块,用于对特定对象进行操作。 总之,ABAP语法开发ABAP程序的基础,它提供了丰富的功能和灵活的语言结构,使得开发人员可以根据需要编写复杂的业务逻辑,并在SAP系统中实现各种功能。通过熟悉ABAP语法开发人员可以高效地进行开发工作,并实现各种业务需求。 ### 回答2: ABAP(Advanced Business Application Programming)是一种用于SAP系统的编程语言,它最初是为SAP R/3系统开发的。随着SAP系统的升级和改进,ABAP也进行了相应的发展,现今最新版本是ABAP S/4HANA。 ABAP S/4HANA是在SAP S/4HANA平台上使用的ABAP版本,它与传统的ABAP有一些重要的区别。首先,ABAP S/4HANA采用了新的数据模型,即S/4HANA物料管理(Material Ledger)和简化数据模型(SIMM)等,这些模型使用了新的内部数据技术,提高了数据处理性能和效率。 其次,ABAP S/4HANA引入了新的ABAP编程范式,例如ABAP CDS(Core Data Services)。ABAP CDS提供了一种声明式的编程方式,用于定义和处理数据模型、服务和视图。这种新的编程范式可以更好地支持SAP S/4HANA中的新功能,并且使开发人员能够更轻松地创建和维护ABAP应用程序。 此外,ABAP S/4HANA还引入了更多的功能和特性,以优化开发和运行ABAP应用程序的性能。例如,它引入了ABAP Managed Database Procedures(AMDP),用于在数据库中执行复杂的计算和处理。它还提供了更好的集成工具,如ABAP Test Cockpit和ABAP Development Tools,用于支持开发和测试过程。 总结而言,ABAP S/4HANA是ABAP语言SAP S/4HANA平台上的最新版本,它引入了新的数据模型、编程范式和功能,以更好地支持SAP S/4HANA系统,并提高开发和运行ABAP应用程序的性能。 ### 回答3: ABAP是一种高级业务应用程序编程语言,用于开发SAP软件解决方案。ABAP语法包括各种关键字、数据类型、操作符、语句和类等。 首先,在ABAP语法中,我们使用不同的关键字来声明变量、常量和数据类型。例如,使用“DATA”关键字来声明一个变量,使用“CONSTANTS”关键字来声明一个常量,并使用不同的数据类型(例如整数、字符、日期等)来定义变量或常量。这些关键字和数据类型使开发者能够方便地处理数据和进行计算。 其次,在ABAP语法中,我们可以使用各种操作符来进行数学、逻辑和比较操作。例如,加号“+”用于加法运算,减号“-”用于减法运算,等号“=”用于比较操作等。这些操作符帮助我们在编写程序时进行各种运算和判断。 然后,在ABAP语法中,我们使用各种语句来实现不同的功能。例如,我们可以使用“IF”语句来实现条件判断,根据条件的结果执行不同的操作。我们还可以使用“DO”语句来实现循环操作,重复执行一段代码。此外,还有其他语句,例如“CASE”语句、 “LOOP”语句等,用于不同的编程需求。 最后,在ABAP语法中,我们还可以创建和使用类来组织和管理代码。类是一种封装了数据和方法的数据结构,可以实现面向对象的编程。通过创建类和使用类的方法,我们可以更好地管理代码,并实现可重用的功能。 综上所述,ABAP是一种用于开发SAP软件解决方案的编程语言,它有着丰富的语法规则,包括关键字、数据类型、操作符、语句和类等。了解和掌握ABAP语法对于开发高效、可靠的SAP应用程序至关重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值