写点什么

SAP | 子例程

作者:暮春零贰
  • 2022-10-31
    广东
  • 本文字数:738 字

    阅读完需:约 2 分钟

SAP | 子例程

子例程主要用于局部模块化。 尽管可以从其他 ABAP 程序外部调用它们,但通常从定义它们的程序本地调用它们。 子例程对于程序内的可重用性很有用,它们可以在任何 ABAP 程序中定义。


子例程在 FORM 和 ENDFORM 语句之间维护,并使用 PERFORM 语句调用:

FORM abc.  ...ENDFORM.
复制代码

参数接口允许你向子程序传递数据,是通过在 FORM 语句上直接声明变量来定义的,这些变量称为形式参数;形式参数由 PERFORM 语句通过维护 PERFORM 语句中的参数来填充,这样的参数称为实际参数;如果子例程在 FORM 语句中定义了变量,则 PERFORM 语句必须将值传递给定义序列中的每个变量。


在定义形式参数时,它们可以是有类型的或无类型的。当使用无类型的形式参数时,你可以将任何数据类型或长度的变量传递给它。比如,你将长度为 2 的字符传给形参 p1,那么 p1 就变为一个长度为 2 的字符。


参数可以通过两种不同的方式传递给子例程:

  • 传递值的输入参数(称为按值传递参数)

  • 传递值的输出参数(称为按值传递和结果参数)


传递值的输入参数

参数传值时,实参和形参占用各自的内存空间。 当调用子例程时,实际参数的值被传递给形式参数(它创建原始数据的副本)。 如果形参的值发生变化,对实参没有影响。


应避免按值传递参数,尤其是在传递大型内部表时。 但是,按值传递允许使用原始数据的副本而不必担心更改原始数据,因为实际参数的值永远不会改变。 实际参数用于子程序接收的输入参数。

传递值的输出参数

如果要使用输出参数的副本,可以通过使用带有 CHANGING 语句的 VALUE 添加来传递它们。 这样就为形参创建了一个新的内存,将实参的内容复制到形参中(类似于传值的入参)。


如果子程序因错误消息而过早终止,则实际参数保持不变。 这允许你仅在满足所有条件时更改实际参数,这与传递参考案例不同,其中实际参数会立即更改。



发布于: 刚刚阅读数: 7
用户头像

暮春零贰

关注

每日羊了个羊🐏,不如今日码了再码 2022-03-13 加入

🎓-------SAP开发初学者--------🎓 🏆InfoQ写作平台-从未签约作者 🏆

评论

发布
暂无评论
SAP | 子例程_SAP_暮春零贰_InfoQ写作社区