ABAP学习笔记-基础语法-03-赋值
原文链接:https://mp.weixin.qq.com/s/mGGsMwZTxEvrHmIN0frPGQ
大家可以关注我个人公众号,所有分享内容,会在公众号第一时间推送,且阅读排版更好。
愿大家的学习,轻松且愉快。
如果大家觉得有用,希望转发关注,谢谢
导读
每天一点abap知识。
本篇我们简单分享一下ABAP中赋值的语法内容。
核心语法包括:“move to”,“write to”,“MOVE-CORRESPONDING TO ” 以及FIELD-SYMBOLS。
正文
1. MOVE TO 和 WRITE TO
MOVE F1 TO F2
是将变量F1的值赋给变量F2;
WRITE F1 TO F2
是将变量F1的值赋给变量F2;
注意1:这里的WRITE 不是输出,而是赋值。
注意2:两者的区别,move to只是将变量中的值赋给目标变量,格式依旧保持目标变量的格式;而wirte to 是会将变量的类型一起赋给目标变量,这样目标变量的格式将会被强制转换(关于类型之间的类型强制转换规则,以后再聊哈)。
如下图代码执行结果所示,很明显,write to的所赋的值均带有原值的类型;
注意3:除了MOVE TO 和 WRITE TO这两种赋值方式,别忘了最常用的以“=”赋值的方式,且已“=”赋值时,也不会带格式,参考上图。
2. 带有偏移量的赋值
带有偏移量的赋值,实际上就是我们需要将某个变量中的一部分,赋值给目标变量中的一部分。
比如:Move F1+3(2) to F2+4(2)
当然 WRITE TO 和 =的赋值方式,也符合这种带偏移量的赋值方式。这里就不赘述了。
3. 结构变量的赋值
结构体变量之间的赋值,一般使用 MOVE-CORRESPONDING TO。
语法结构: MOVE-CORRESPONDING string1 TO string2。
赋值的规则是,只会对不同结构体中的相同字段,进行赋值。
举例:存在 string1, string2,string3,三个变量,其中三个变量包含的字段为:
String1包含字段:name1 name2;
String2包含字段:name3 name4;
String3包含字段:name1 name3。
如果使用 MOVE-CORRESPONDING TO 将String1赋给String3,将只有name1中的值被赋给了string3;
如果使用 MOVE-CORRESPONDING TO 将String2赋给String3,将只有name3中的值被赋给了string3;
注意:代码中在第二次赋值中,ls_s3-name1没有被赋值,且保持了第一次被赋值成功的值。
4.带指针的赋值
FIELD-SYMBOLS <f1> TYPE any.
ASSIGN 变量 TO <f1>.
这种方式是我们通过FIELD-SYMBOLS定义了一个指针对象,也可以理解为存放变量地址的对象,我们可以通过ASSIGN变量地址的方式,给其赋值。
举例说明:
首先,我们定义一个变量lv_a1,且赋初始值为“ABC”;
再用“FIELD-SYMBOL”定义一个指针<f1>;
我们用“ASSIGN TO”将变量lv_a1的地址赋给指针<f1>,这个时候我们输出<f1>时,<f1>的输出结果将是lv_a1的初始值“ABC”;
此时,如果我们给将<f1>中的地址,赋新的值“123”,那么,此时输出<f1>将显示“123”,而且输出原变量lv_a1时,原变量的值将从初始值“ABC”,变成新值“123”。
因为:变量lv_a1的地址,指向了新的值。
如下图所示:
注意:关于FIELD-SYMBOLS 在实际使用有很多技术细节,这里只是简述原理。
文章来自于网络,如果侵犯了您的权益,请联系站长删除!