Field Symbol使用总结

【博主SAP/ABAP交流群689746838

Field Symbol是ABAP里的引用,类似于C语言里的指针,引用是存储变量的地址(内存地址),它指向一个变量,而不是变量本身。使用引用可以节省内存空间,提高程序执行效率,让程序更加灵活,还可以实现一般做法无法实现的功能,比如动态编程。引用的缺点是影响程序可读性,为修改和维护代码造成困难,而且有些错误是编译器检查不出来的,只有运行时才会发生错误,所以要熟练使用引用需要一定经验的积累。ABAP里引用有两种方法,Field Symbol和TYPE REF TO,本文只讨论Field Symbol(以下简称FS)。

首先,FS必须先分配(ASSIGN)给某个变量,结构或者内表后才能使用,不然会发生FS未分配的运行时错误。如果之后这个变量,结构或者内表被清空了,那么FS也会回到未分配的状态。

下面是一些用法:

ASSIGN ‘200’ TO <fs>.

意思是指向常量的<fs>,之后不可更改值,比如执行<fs> = ‘300’会发生运行时错误。如果想实现改值的效果,那么需要ASSIGN一个变量给FS:.

gv_abc = '200'.

ASSGIN gv_abc TO <FS>.

<FS> = '300'.

这时<FS>就从200变更为300了,另外如果直接改变变量的值,那么<FS>也会发生变化。比如上例里执行gv_abc = '400'的语句,那么<FS>也会随之变为400,因为<FS>是分配给了gv_abc,可以认为两者是绑定了的。

 

假设定义了<FS>和<FS2>两个FS,分别分配到两个变量,变量A和变量B。

ASSIGN <FS> TO <FS2>的意思是,让<FS2>也指向<FS>所指向的地方,即两个FS都指向变量A;而<FS2> = <FS>的意思是,把<FS>所指向的变量A的值赋给<fs2>所指向的变量B的值,<FS>依然指向变量A,<FS2>依然指向变量B。

 

LOOP 内表 INTO 结构(工作区)和LOOP 内表 ASSIGNING <FS>的比较。

LOOP 内表 INTO 结构,系统会把先把当前行的数据复制到结构,如果结构的值改了,还需要使用MODIFY语句把更改后的值传回内表。也就是说,结构是内表里的数据的一个副本,操作这个副本并不会影响内表里的数据。带表头的内表也是类似,LOOP内表时,把内表数据复制到表头。为了提高效率,可以使用LOOP 内表 ASSIGNING <FS>,FS直接指向内表数据,省去了复制数据到结构的过程,修改FS的值也就是相当于直接修改内表里的数据,不需要再使用MODIFY语句。这里额外提一点,有一些人喜欢在ENDLOOP前使用CLEAR清空结构,首先这是没有必要的,LOOP内的语句一般越少简越好,有利于执行效率,其次如果是LOOP到FS的写法,是不能使用CLEAR清空FS的,因为刚刚说了FS是直接指向内表数据,如果清空了FS,那相当于把内表内对应的那行数据也给清空了。此外,像LOOP AT 内表 INTO <FS>的写法,初学者容易混淆,其实这里的<FS>是指向一个结构,这种写法和LOOP 内表 INTO 结构没什么区别。

 

READ TABLE 内表 INTO 结构和READ TABLE 内表 ASSIGNING <FS>的比较。

效率上的区别同LOOP的情况,这里说下READ TABLE和LOOP不同的地方,主要差别是,LOOP 是不会失败的,而READ TABLE是可能失败的,一旦READ失败,那么结构或<FS>的值依然是上次READ成功的值(而不是清空),所以READ使用完,建议根据情况CLEAR 结构或<FS>。

 

确定结构的<FS>和不确定结构的<FS>。

FIELD-SYMBOLS <gs_ab> TYPE ty_ab.(ty_ab是个结构)

FIELD-SYMBOLS <gs_ab> TYPE ANY.

前者是指定了结构,后者是不指定结构。

之后在为<gs_ab>赋值时,

ASSIGN COMPONENT 'COL1' OF STUCTURE <gs_ab>TO <FS>.

<FS> = 'AAA'.

此种写法对确定结构的定义和未确定结构的定义的<gs_ab>都可行。

 但是有确定结构定义的<gs_ab>可以直接使用<gs_ab>-col1 = 'AAA'来赋值。

一般如果能事先知道结构的话,还是应该用确定结构的方式来定义FS,不确定结构的定义通常用于动态处理。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Field II是一款用于超声波仿真和信号处理的软件工具。它主要用于医学超声成像、无损检测和工业领域的超声波应用。以下是Field II的使用说明: 1. 安装和配置:首先,您需要从Field II官方网站下载并安装Field II软件。安装完成后,您可以根据需要进行配置,例如选择适当的超声波探头和设置仿真参数。 2. 创建场景:使用Field II,您可以创建一个虚拟的超声波场景。您可以定义场景中的物体、介质和探头等参数。可以通过设置物体的几何形状、材料属性和位置来模拟不同的场景。 3. 设置超声波探头:在Field II中,您可以选择不同类型的超声波探头,并设置其频率、发射和接收的角度等参数。这些参数将影响到信号的发射和接收过程。 4. 进行超声波仿真:一旦场景和探头设置完成,您可以开始进行超声波仿真。Field II将根据设定的参数模拟超声波在场景中的传播、反射和散射等过程,并生成相应的超声图像或数据。 5. 信号处理和分析:Field II还提供了一系列信号处理和分析工具,用于处理和分析仿真得到的超声波数据。您可以进行滤波、图像重建、参数提取等操作,以获得更准确的结果。 6. 结果可视化:最后,Field II还支持结果的可视化展示。您可以查看仿真得到的超声图像、数据曲线或者进行三维可视化,以便更好地理解和分析仿真结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值