Loading

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

三、赋值

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

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

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

3.1用MOVE赋值

3.1.1 基本赋值操作

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

MOVE 语句的语法如下所示:

MOVE <f1> TO <f2>.

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

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

<f2> = <f1>.

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

3.1.2 用指定偏移量赋值

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

MOVE <f1>[+<o1>][(<l1>)] TO <f2>[+<o2>][(<l2>)].

将字段 <f1><o1>+1 位置开始且长度为 <l1> 的段内容赋给字段 <f2>,覆盖从 <o2>+1 位置开始且长度为 <l2> 的段。

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

3.1.3 在字符串组件之间赋值

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

MOVE-CORRESPONDING <string1> TO <string2>.

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

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

MOVE STRING1-<component> TO STRING2-<component>.

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

3.2 用WRITE TO 赋值

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

WRITE <f1> TO <f2> [<option>].

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

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

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

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

3.2.1 运行时指定源字段

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

WRITE (<f>) TO <g>.

系统将赋给 <f> 的数据对象值放到 <g> 中。

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

3.2.2 用指定偏移量写入值

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

WRITE <f1>[+<o1>][(<l1>)] TO <f2>[+<o2>][(<l2>)].

将字段 <f1> 中从 <o1>+1 位置开始且长度为 <l1> 的内容赋给字段 <f2>,覆盖从 <o2>+1 位置开始且长度为 <l2> 的段。

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

posted @ 2021-12-06 16:29  Gjboy666  阅读(823)  评论(0编辑  收藏  举报