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
语句中,目标字段的偏移量和长度指定可为变量。