当前位置:
文档之家› SAP ABAP程序设计基础教程第4章ABAP语言基本语法
SAP ABAP程序设计基础教程第4章ABAP语言基本语法
为代码行设置断点
ABAP程序的流程控制-逻辑表达式
比较所有基本类型的数据对象
运算符 含义
EQ
或 =
等于
NE
或 <> 或
><
不等于
LT
或 <
小于
LE
或 <=
小于等于
GT 或 >
大于
GE
或 >=
大于等于
比较字符串
运算符 含义 CO 仅包含
CN
不仅包含
CA
包含任何
NA
不包含任何
CS
包含字符串
NS
不包含字符串
CP
包含模式
处理字符串
连接字符串 : CONCATENATE <s1> ... <sn> INTO <s> [SEPARATED BY <c>]. 拆分字符串 : SPLIT <s> AT <sep> INTO <s1> ... <sn>. 搜索字符串 : SEARCH <s> FOR <sub>. 获得字符串长度 [COMPUTE] <n> = STRLEN( <s> ). 替换字符串内容 : REPLACE <s1> WITH <s2> INTO <src> [LENGTH <l>]. 字符串的大小写转换: TRANSLATE <s> TO UPPER CASE. :将字符串转换成大写 TRANSLATE <s> TO LOWER CASE. :将字符串转换成小写
第4章ABAP语言基本语法
数据类型: 数据类型是纯粹的类型说明,不与任何实际的 内存相关联,但可以表明由一个数据类型定义 出来的数据对象占有多少内存;数据类型描述 了数据对象的技术属性,用于定义数据对象。
ABAP数据类型的使用场合
ABAP 数据类型
下列ABAP 类型是完整指定的,可以直接用它们定 义 数据对象类型:d、t、i、f、string 和 xstring。string 和xstring 的特殊之处在于它 们的长度是在运行时自动 调整的,因此长度不 是类型的组成部分。
ABAP数据对象分类 变量 常量 文字 文本文字 数字文字
系统定义的数据对象
系统定义的数据对象是系统预先定义好的数据对象,无需声 明,可在程序中直接使用,其中系统全局结构体变量中的很多 系统字段在编程中非常重要。所有系统字段都有格式为 sy<fieldname> 的名称,其 中 <fieldname>是该结构体中单 个字段。
ABAP程序的流程控制-循环语句
DO循环 DO [<n> TIMES] [VARYING <f> FROM <f1> NEXT <f2> ]. <statement block> ENDDO. 带条件的WHILE循环 WHILE <condition> [VARY <f> FROM <f1> NEXT <f2> ]. <statement block> ENDWHILE. LOOP … ENDLOOP循环,用于处理内表(Internal Table)变量。 SELECT … ENDSELECT循环,用于从数据表中循环地读取数据。
CASE的条件分支 CASE <v>. WHEN <v1>. <statement block1> WHEN <v2>. <statement block2> WHEN <v3>. <statement block3> WHEN ... ...... WHEN OTHERS. <statement blockn> ENDCASE.
计算:语法
– 在ABAP 中,可以任意多层嵌套数学表达式。必须 记 住圆括号和操作符都是关键字,在前后都要带 至少一 个空格。 – ABAP 运行时环境位不同数据类型提供一系列函数。 开放圆括号属于函数名称的一部分(不能用空格 与函 数名分开),其余表达式中的元素则都必须 用空格分 开。 – 表达式按一般的代数顺序处理——圆括号最高,接 下 来是函数、幂、乘除,最后是加减。 – DIV(整数除)和MOD(余数)操作都返回整数。
全局的数据类型存储在ABAP字典中的类型:
数据元素(Data Element):用于定义一个的字段类型的变 量 结构体(Structure):用于定义一个内存中的结构体变量, 又称为工作区(Work Area) 透明表(Transparent Table):对于定义内存变量来说,其 功能与结构体类型是一致的,即用于定义一个内存中的工作区 (Work Area),但是其定义的工作区一定是扁平的。 内表(Internal Table):用于定义一个内存的多维表格,如 果定义采用的行类型是基本的数据类型,则相当于一个一维数 组;若其行类型为扁平结构体或透明表,则定义出来的是一个 二维数组;若其行类型为复杂结构体,则定义出来的是一个多 维数组。
SY-SUBRC: 返回代码值(0代表操作成功) SY-UNAME:用户的登录名 SY-TCODE: 当前事务 SY-DATUM:当前日期 SY-UZEIT: 当前时间
ABAP语法元素
ABAP关键字分类
声明型关键字:TYPES, DATA, TABLES 事件关键字: AT SELECTION SCREEN, 程序流程控制关键字: IF, WHILE, CASE 操作关键字:WRITE, MOVE, ADD
计算:语法
– 在计算时会产生下列四类运行时错误: • 应该被转换乘数值的字段无法被解释成数值 • 在转换、赋值或存储中间结果时的值范围太 小 • 除以0 • 在内建函数中使用非法变量,例如: log( -3 ) – 更多信息可参考COMPUTER 语句的关键字 文档。
数据对象赋值 通过声明性赋初始值: DATA myid(10) TYPE c VALUE '100'. 通过操作性语句给数据对象赋值: MOVE source TO destination. 通过CLEAR操作使数据对象具有缺省值: CLEAR var1.
ABAP数据类型分类
在ABAP程序中,定义一个数据对象可以采用三种数据类型中的一 种。 ABAP语言中预定义的标准数据类型,如图中的① 数据字典中的全局数据类型,如图中的② 用户在程序中自定义的数据类型,如图中的③ 在ABAP中,还可以通过“DATA <变量1> LIKE <变量2>” 的方式来定义一个新的变量1,如图4-2中的符号④。图中的符 号⑤是指采用ABAP语言的标准数据类型定义新的用户自定义 数据 类型。
终止循环
CONTINUE 无条件终止本次循环过程 CHECK 有条件终止循环过程 EXIT 完全终止循环
发送对话消息
MESSAGE tnnn(message_class) [ WITH v1 [ v2 ] [ v3 ] [ v4 ] ].
类型t
类型描述
对话行为
消息显示位置
I
消息提示
程序执行被对话框中断,用户选择后程序继续
定义数据对象
1、一般来说,数据对象用DATA 语句按如下方法定义, 在数据对象名字后面,用TYPE 附加关键字分配指定 的 完整类型。类型静态连接到数据对象,在运行时不 能被 修改。 2、所有类型都基于预定义ABAP 类型。部 分ABAP 类型 是完整的,可以直接用来定义数据对象 的类型。其他则 需要包含长度或小数点位数等信息, 这就是用户自定义 类型的最简单例子。 3、可以根据基本类型建立任意复杂层级的复杂结构类型。 4、还可以直接在ABAP 字典中定义类型。以后就可以在 系统的所有适当的知识库对象中使用这些全局类型。
NP
不包含模式
检查字段的初始值
要检查字段是否设置为初始值,应使用带有IS INITIAL参数的 逻辑表达式,其语法为: .... <v> IS INITIAL ..... 如果<v>的值是其数据类型对应的初始值,则表达式为真。一 般情况下,任何字段,包括基本的或结构化的(字符串和内 表),在CLEAR <v> 语句执行后,<v>中都包含其初始值
整数和整数运算
– 当系统执行整数运算时,通常四舍五入到最接近的 整 数。例如:
DATA int TYPE i.
int = 4 / 10. "结果为0 int = 5 / 10. "结果为1 – 使用整数运算的计算速度比用定点数或浮点数都快。 – 可以在DATA 语句的VALUE 附加关键字为整数变 量 指定开始值。通常在VALUE 输入一个数字文本。 如 果用字符文本的形式(用单引号括起来),运行时 系 统会进行转化。 – 对于整数可执行的计算的更多信息,可以参考 COMPUTER 语句的关键字文档。
组合逻辑表达式
可以将几个逻辑表达式组合成一个符合的逻辑表达式,使用逻辑连 接运算符AND、OR 和 NOT,将几个逻辑表达式组合为一个表达 式: 用AND连接:要将几个逻辑表达式组合为一个表达式,且该表达式 中仅当其所有的子表达式为真时总结果才为真,则 表达式之间要用AND连接。 用OR连接:要将几个逻辑表达式组合为一个表达式,且只要其中 的某一个子表达式为真时,该表达式即为真,则表达 式之间要用OR连接。 用NOT取反: 要将逻辑表达式的结果在真和假之间转换,则应在 该表达式前面加 NOT。 它们之间的优先级为:NOT优先于AND,AND 优先于OR。建议 使用任何小括号组合
DATA x1(4) TYPE x VALUE '3D6F'.