ABAP语法基础篇(3)——赋值


三、赋值

在 ABAP/4中,可以在声明语句和操作语句中给数据对象赋值。在声明语句中,将初始值赋给声明的数据对象。为此,可以在DATA 、常量或 STATICS 语句中使用 VALUE 参数 。

要在操作语句中给数据对象赋值,可以使用:

MOVE 语句 和 WRITE TO 语句 ,对应于赋值运算符

3.1用MOVE赋值

3.1.1 基本赋值操作

要将值(文字)或源字段的内容赋给目标字段,可以使用 MOVE 语句或赋值运算符

MOVE 语句的语法如下所示:

MOVE TO .

MOVE 语句将源字段 的内容传送给目标字段
可以是任何数据对象。 必须是变量,不能是文字或常量。传送后,的内容保持不变。

赋值运算符 的语法如下所示:

= .

MOVE 语句和赋值运算符功能相同。

3.1.2 用指定偏移量赋值

可以在每条 ABAP/4 语句中为基本数据类型指定偏移量和长度。在这种情况下, MOVE 语句语法如下:

MOVE [+][()] TO [+][()].

将字段 +1 位置开始且长度为 的段内容赋给字段 ,覆盖从 +1 位置开始且长度为 的段。

MOVE 语句中,所有偏移量和长度指定都可为变量。

3.1.3 在字符串组件之间赋值

描述的 MOVE 语句赋值方法适用于基本数据对象和结构化数据对象。另外,还有一种 MOVE语句变体,允许将源字段串组件内容复制到目标字段串组件中。语法如下:

MOVE-CORRESPONDING TO .

该语句将字段串 组件的内容赋给有相同名称的字段串 组件。

对于每对名称,系统都执行 MOVE 语句,如下所示:

MOVE STRING1- TO STRING2-.

系统分别执行所有必要类型转换。该处理不同于包括整个字段串的赋值。在这种情况下,应用不兼容的字段串和基本字段所述的转换规则。

3.2 用WRITE TO 赋值

要将值(文字)或源字段内容写入目标字段,可以使用 WRITE TO 语句:

WRITE TO [

WRITE TO 语句将源字段 内容写入目标字段 可以是任何数据对象, 必须是变量,不能是文字或常量。写入后, 内容保持不变。

对于 ,可以使用 WRITE 语句的所有格式化选项( UNDER 和 NO-GAP 除外)。

WRITE TO语句总是检查用户主记录中的设置。例如,这些设置指定是将小数点显示为句号( .),还是逗号( , )。

WRITE TO 语句并不遵循类型转换中所述的转换规则。目标字段解释为 C类型字段。系统总是将源字段内容转换为类型 C,它不将结果字符串转换为目标字段的数据类型,而直接写入目标字段。因此 ,不应使用数值数据类型的目标字段。

3.2.1 运行时指定源字段

可以使用 WRITE TO 语句在运行时指定源段。为此, 需用括号将包含源字段名的数据对象名括起来,并将其放在源字段位置:

WRITE () TO .

系统将赋给 的数据对象值放到 中。

然而,如果要在运行时指定目标字段,则必须按使用字段符号中所述,使用字段符号。

3.2.2 用指定偏移量写入值

可以指定每条 ABAP/4 语句中基本数据对象的偏移量和长度。 WRITE TO 语句语法如下:

WRITE [+][()] TO [+][()].

将字段 中从 +1 位置开始且长度为 的内容赋给字段 ,覆盖从 +1 位置开始且长度为 的段。

WRITE TO 语句中,目标字段的偏移量和长度指定可为变量。