`IS NOT INITIAL`与`IS NOT BOUND`变量的存在情况可以通过代码演示说明。字段符号的内存分配状态通过`IS ASSIGNED`判断。若未分配内存,执行特定操作时会触发`GETWA_NOT_ASSIGNED`错误。在执行任何对字段符号的读取或检查前,先使用`IS ASSIGNED`确保其已分配内存,能有效避免错误。讨论了是否存在一个字段...
第40 行代码通过 ASSIGN 分配给<any2>的内存区域并未通过 UNASSIGN 释放,因此<any2> IS ASSIGNED 始终返回 abap_true. 另一方面,这块内存区域虽然还未释放,但里面存放的引用变量已经不再指向任何一个有效的变量了,因此 IS BOUND 返回 abap_false. 最后,因为<any2>施加了 CLEAR 操作, 又回到了初始化状态,所以...
第40行代码通过ASSIGN分配给<any2>的内存区域并未通过UNASSIGN释放,因此<any2> IS ASSIGNED始终返回abap_true. 另一方面,这块内存区域虽然还未释放,但里面存放的引用变量已经不再指向任何一个有效的变量了,因此IS BOUND返回abap_false. 最后,因为<any2>施加了CLEAR操作, 又回到了初始化状态,所以IS INITIAL返回abap_...
第40行代码通过ASSIGN分配给的内存区域并未通过UNASSIGN释放,因此 IS ASSIGNED始终返回abap_true. 另一方面,这块内存区域虽然还未释放,但里面存放的引用变量已经不再指向任何一个有效的变量了,因此IS BOUND返回abap_false. 最后,因为施加了CLEAR操作, 又回到了初始化状态,所以IS INITIAL返回abap_true. 一句话总结,就是...
IS INITIAL: 用于检查一个变量的值是否为其数据类型对应的初始值。 比如我定义一个引用变量但不对其赋值,则IS INITIAL判断一定为abap_true. IS ASSIGNED: 对于检测的field symbol,该关键字判断该field symbol是否分配有内存区域。 这三个关键字交织在一起,就形成了一些有趣的排列组合。
第40行代码通过ASSIGN分配给的内存区域并未通过UNASSIGN释放,因此 IS ASSIGNED始终返回abap_true. 另一方面,这块内存区域虽然还未释放,但里面存放的引用变量已经不再指向任何一个有效的变量了,因此IS BOUND返回abap_false. 最后,因为施加了CLEAR操作, 又回到了初始化状态,所以IS INITIAL返回abap_true. ...
一个field symbol定义之后,如果不为其分配内存区域,则IS ASSIGNED返回abap_false. 下面的代码,如果注释掉第27行的IF条件: 运行时会抛出GETWA_NOT_ASSIGNED错误:Field symbol has not yet been assigned. 也就是说,无论是读取field symbol具体的内容,还是检测其内容是否为初始值,为了避免GETWA_NOT_ASSIGNED错误,我们...
IS INITIAL:用于检查一个变量的值是否为其数据类型对应的初始值。 比如我定义一个引用变量但不对其赋值,则IS INITIAL判断一定为abap_true. IS ASSIGNED:对于检测的field symbol,该关键字判断该field symbol是否分配有内存区域。 这三个关键字交织在一起,就形成了一些有趣的排列组合。
SAP ABAP一组关键字 IS BOUND, IS NOT INITIAL和IS ASSIGNED的用法辨析 SAP ABAP和Java里的弱引用(WeakReference)和软引用(SoftReference) SAP AMDP介绍 - ABAP托管的HANA数据库过程 给你的ABAP对象打上标签(Tag) 历史上的今天:编程语言中null引用的十亿美元错误 ABAP Development Tool 代码模板和其他一些...
IS操作符 用于检查数据对象是否处于初始状态或者字段符号,参数等是否已经被分配。 使用IS INITIAL,检查字段是否为初始值 ... f IS INITIAL ... 使用IS ASSIGNED,检查字段符号是否被分配 ... fs IS ASSIGNED ... 使用IS [SUPPLIED|REQUESTED],检查参数是否被实参填充 ...