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 TOstring2。

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

举例:存在 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 在实际使用有很多技术细节,这里只是简述原理。

 

 

 

 

 


版权声明:本文为qq_33641781原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。