关于abap语言的一个错误的理解

原文: 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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP(Advanced Business Application Programming)是SAP系统中的一种编程语言,用于开发和定制SAP应用程序。下面是解读ABAP语言的一些关键点: 1. ABAP语言结构:ABAP语言由一系列的语句组成,每个语句以句点(.)结尾。ABAP程序由一系列的模块组成,每个模块由一系列的语句块组成。 2. 数据类型:ABAP支持多种数据类型,包括整数、浮点数、字符串、日期等。可以使用这些数据类型来定义变量、常量和字段。 3. 控制结构:ABAP提供了各种控制结构,如条件语句(IF、CASE)、循环语句(DO、WHILE、LOOP)和跳转语句(BREAK、CONTINUE)等,用于控制程序的执行流程。 4. 函数和方法:ABAP支持函数和方法的定义和调用。函数是独立的代码块,可以通过传递参数和返回值来实现特定功能。方法是属于类或对象的代码块,可以通过调用对象的方法来实现特定功能。 5. 数据操作:ABAP提供了丰富的数据操作功能,包括数据查询、数据更新和数据处理等。可以使用SELECT语句查询数据库表,使用INSERT、UPDATE和DELETE语句更新数据库表,使用内置函数对数据进行处理。 6. 异常处理:ABAP提供了异常处理机制,可以使用TRY、CATCH和THROW语句来捕获和处理异常。异常是在程序执行过程中发生的错误或异常情况,可以通过异常处理来进行相应的处理。 7. ABAP字典:ABAP字典是一个集中管理和维护数据定义的工具。它可以定义数据库表、数据类型、域、视图等,并提供了一些功能,如数据校验、数据关系维护等。 8. ABAP面向对象编程:ABAP也支持面向对象编程,可以定义类、对象和接口,并使用封装、继承和多态等概念来实现面向对象的特性。 以上是对ABAP语言的简要介绍,希望能帮助你理解ABAP语言的基本概念和特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值