首页 > 代码库 > 模块化程序-子例程
模块化程序-子例程
子例程
1、子例程中应避免使用主程序的变量,应使用参数
2、在子例程中定义的变量,只在子例程中有效
子例程的定义方式:
以FORM开头、以 ENDFORM 结尾的ABAP代码块。
语法:
FORM <subroutine> [<pass>].
<statement block>
ENDFORM.
其中:
- <subroutine> 用于定义子例程名,
- <pass> 参数<pass>选项也可以没有
- 子例程可以访问其所在主程序中声明的所有数据对象。
- 一般都将同一程序中定义的所有内部子例程都集中定义在程序的末尾。
- 子例程的定义不能互相嵌套
- 形参和实参:
- 形参(formal parameters):
- 子例程定义期间用FORM语句定义的参数(形参不指明类型,则直接继承实参的数据类型) 数据变量、结构体、内表
- 实参(actual parameters):
- 子例程调用期间用PERFORM语句指定的参数
局部和全局变量:
全局变量:
- 在主程序中定义的变量
- 这些变量在整个主程序和调用的每个子例程中均可见(可进行处理)
局部变量:
- 在子例程中定义的变量称作局部变量,
- 这些变量只存在于相关的子例程中(与形式参数相同),只能在子例程中使用。
参数传递:
将主程序变量传递给子例程形式参数
传递类型
- 值传 using
子例程中参数变量的值的改变,不影响外部程序实际变量的值 - 引用传 changing
若子例程中的参数变量的值发生了改变,那么,外部程序的实际变量的值也发生改变 - 值传并返回结果
传递参数的方式同值传递相同,但在子例程执行过程中,变量值不改变,而结束执行后,把变量的最终值返回
模块化程序-子例程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。