[SAP ABAP] 数据赋值

30 篇文章 1 订阅
本文详细介绍了ABAP编程中的几种赋值操作,包括基本赋值(=),MVETO和WRITETO用于直接赋值和格式转换,MOVE-CORRESPONDINGTO用于结构体变量间的对应字段赋值,以及通过ASSIGNTO实现指针赋值。
摘要由CSDN通过智能技术生成

数据的赋值是程序的常用操作

1. = 赋值

语法格式

<f2> = <f1>.

表示将变量f1的值赋值给变量f2

输出结果如下:

扩展补充(带偏移量的赋值)

<f2>[+<偏移量>][(<取数位>)] = <f1>[+<偏移量>][(<取数位>)].

输出结果如下:

将lv_a从偏移2位开始的位置,取长度为3的内容'345'赋值给 lv_b,赋值覆盖lv_b从偏移4位开始的位置且长度为3的内容'efg'中,最终输出结果从原来的'abcdefg'赋值变换为'abcd345'

输出结果如下: 

输出结果如下: 

2. MOVE TO 赋值

语法格式

MOVE <f1> TO <f2>.

表示将变量f1的值赋值给变量f2 

输出结果如下:

扩展补充(带偏移量的赋值)

MOVE <f1>[+<偏移量>][(<取数位>)] TO <f2>[+<偏移量>][(<取数位>)].

输出结果如下:

将lv_a从偏移2位开始的位置,取长度为3的内容'345'赋值给 lv_b,赋值覆盖lv_b从偏移4位开始的位置且长度为3的内容'efg'中,最终输出结果从原来的'abcdefg'赋值变换为'abcd345'

3. WRITE TO 赋值

语法格式

WRITE <f1> TO <f2>.

表示将变量f1的值赋值给变量f2

输出结果如下:

提示Tips:这里的WRITE用于赋值,不是用于输出

扩展补充(带偏移量的赋值)

WRITE <f1>[+<偏移量>][(<取数位>)] TO <f2>[+<偏移量>][(<取数位>)].

输出结果如下:

将lv_a从偏移2位开始的位置,取长度为3的内容'345'赋值给 lv_b,赋值覆盖lv_b从偏移4位开始的位置且长度为3的内容'efg'中,最终输出结果从原来的'abcdefg'赋值变换为'abcd345'

= 赋值,MOVE TO 赋值 和 WRITE TO 赋值的区别

= 赋值 与 MOVE TO 赋值只是将变量中的值赋给目标变量,格式依旧保持目标变量的格式,而WRITE TO 赋值会将变量的值和类型一起赋给目标变量,这样目标变量的格式将会被强制转换(带有格式的赋值)

例1

输出结果如下:

例2

输出结果如下:

4. MOVE-CORRESPONDING TO 赋值

语法格式

MOVE-CORRESPONDING <string1> TO <string2>.

结构体变量之间的赋值,一般使用MOVE-CORRESPONDING TO进行赋值

赋值的规则:只会对不同结构体中的相同字段进行赋值

输出结果如下:

输出结果如下:

5. ASSIGN TO 赋值

通过指针实现数据的赋值

语法格式

FIELD-SYMBOLS <fs>.
ASSIGN <value> TO <fs>.

FIELD-SYMBOLS定义一个指针对象(存放变量地址的对象),我们可以使用ASSIGN TO变量地址的方式对指针对象进行赋值操作

提示Tips

① <fs>并不是变量,存放的是变量的地址,而非变量本身

② 如果修改了<fs>的值,则相应的变量的值也会随之改变

输出结果如下:

从上述代码我们可以了解,首先我们定义了一个初始值为"ABC"的变量lv_a1,再用FIELD-SYMBOL定义一个指针<fs1>,然后使用ASSIGN TO将变量lv_a1的地址赋给指针<fs1>,这个时候我们输出<fs1>时,<fs1>的输出结果将是lv_a1的初始值"ABC"

如果我们给将<fs1>中的地址,赋新的值"123",那么此时输出<fs1>将显示"123",而且输出变量lv_a1时,变量的值将从初始值"ABC"变成新值"123"

提示Tips

ABAP中的 IS ASSIGNED关键字用于判断<fs>是否分配有内存区域,一个<fs>定义之后,如果为其分配内存区域,则IS ASSIGNED返回True

checks whether a memory area is assigned to a field symbol. The expression is true if the field symbol points to a memory area.

输出结果如下:

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值