关于abap语言的一个错误的理解
2012-04-20 11:19
253 查看
原文: http://blog.csdn.net/compassbutton/article/details/3279652
在这么多年的SAP使用中,我一直以为不包块在任何事件块内的abap语句sap会自动添加到START-OF-SELECTION事件块中,但今天无意被一个新同事发现不是这样。
仔细查阅SAP的abap语言帮助,帮助对于“不包块在任何事件块内的abap语句”是这样定义的:在REPORT或者PROGRAM 语句到第一个处理块(处理块不仅仅指事件块,也包含过程等)之间出现的语句。这些语句才会自动插于到START-OF-SELECTION事件块中。具体参见示例
示例1
REPORT demo_abap_events_1.
WRITE / 'Statement 1'.
FORM routine.
WRITE / 'Subroutine'.
ENDFORM.
WRITE / 'Statement 2'.
PERFORM routine.
WRITE / 'Statement 3'.
执行的结果:
Statement 1
在该例子中的红色部分语句就没有添加到START-OF-SELECTION事件块中
示例2
REPORT demo_abap_events_2.
WRITE / 'Statement 1'.
FORM routine.
WRITE / 'Subroutine'.
ENDFORM.
START-OF-SELECTION.
WRITE / 'Statement 2'.
PERFORM routine.
WRITE / 'Statement 3'.
执行的结果:
Statement 1
Statement 2
Subroutine
Statement 3
在该例子中的所有语句就没有添加到START-OF-SELECTION事件块中。
当然你按规范的方法写代码就不会出现上面的情况了,规范的代码如下:
REPORT demo_abap_events_3.
START-OF-SELECTION.
WRITE / 'Statement 1'.
WRITE / 'Statement 2'.
PERFORM routine.
WRITE / 'Statement 3'.
FORM routine.
WRITE / 'Subroutine'.
ENDFORM.
另外提醒大家注意的在事件块中定义的变量是全局,且不要认为是事件块范围有效。
详细的变量有效范围说明参见:
http://blog.csdn.net/compassbutton/archive/2007/06/14/1652392.aspx
在这么多年的SAP使用中,我一直以为不包块在任何事件块内的abap语句sap会自动添加到START-OF-SELECTION事件块中,但今天无意被一个新同事发现不是这样。
仔细查阅SAP的abap语言帮助,帮助对于“不包块在任何事件块内的abap语句”是这样定义的:在REPORT或者PROGRAM 语句到第一个处理块(处理块不仅仅指事件块,也包含过程等)之间出现的语句。这些语句才会自动插于到START-OF-SELECTION事件块中。具体参见示例
示例1
REPORT demo_abap_events_1.
WRITE / 'Statement 1'.
FORM routine.
WRITE / 'Subroutine'.
ENDFORM.
WRITE / 'Statement 2'.
PERFORM routine.
WRITE / 'Statement 3'.
执行的结果:
Statement 1
在该例子中的红色部分语句就没有添加到START-OF-SELECTION事件块中
示例2
REPORT demo_abap_events_2.
WRITE / 'Statement 1'.
FORM routine.
WRITE / 'Subroutine'.
ENDFORM.
START-OF-SELECTION.
WRITE / 'Statement 2'.
PERFORM routine.
WRITE / 'Statement 3'.
执行的结果:
Statement 1
Statement 2
Subroutine
Statement 3
在该例子中的所有语句就没有添加到START-OF-SELECTION事件块中。
当然你按规范的方法写代码就不会出现上面的情况了,规范的代码如下:
REPORT demo_abap_events_3.
START-OF-SELECTION.
WRITE / 'Statement 1'.
WRITE / 'Statement 2'.
PERFORM routine.
WRITE / 'Statement 3'.
FORM routine.
WRITE / 'Subroutine'.
ENDFORM.
另外提醒大家注意的在事件块中定义的变量是全局,且不要认为是事件块范围有效。
详细的变量有效范围说明参见:
http://blog.csdn.net/compassbutton/archive/2007/06/14/1652392.aspx
相关文章推荐
- ABAP--关于abap语言的一个错误的理解
- ABAP--关于abap语言的一个错误的理解
- ABAP--关于abap语言的一个错误的理解
- ABAP--关于abap语言的一个错误的理解
- linux内核源代码学习(3)关于一些数据结构和一个理解 错误
- 关于linux设备驱动模型,今天做一个简单的理解总结,可能有错误,后面可能会更正
- 最近做毕业设计发现市场上的Delphi书中关于TArrayField的一个错误理解,这里现简单的提一下以后有时间在好好的研究一下
- IBM_AIX培训PPT之存储管理一章中关于VGDA的一个错误
- 关于一个写Masm的小错误........
- ruby关于flip-flop理解上一个注意点
- 关于maven的一个小错误解决方法
- 一个关于C++ Inline关键字的引发的一个错误
- 关于的外连接(left join或right join)我们常犯的一个严重错误
- 一个关于scrollme.js 的愚蠢的错误
- 关于一个大型web系统构架图的理解
- 关于mysql错误:Illegal mix of collations for operation '='的理解
- 汇编语言理解指针(指针就是汇编的间接寻址,其实就是一个简单方便的运算指令,计算完毕直接就赋值,不是从内存中去取值后赋值)
- 关于c++primer的一个代码错误
- 《es6标准入门》chapter11中关于Proxy的一个错误例子的纠正
- 关于JAVA匿名内部类我的理解,举一个小例子阐述。