子程序和功能模块

2020-08-20 15:43发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


HI专家

Plz给我带来了外部子例程与功能模块之间的相似之处和区别。

谢谢。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


HI专家

Plz给我带来了外部子例程与功能模块之间的相似之处和区别。

谢谢。

付费偷看设置
发送
5条回答
SKY徐
1楼 · 2020-08-20 16:14.采纳回答

子例程-您无法返回任何值,因为您可以使用FM进行相同的操作,子例程中不存在异常处理,因此无法在程序外部调用它们。

大简至美
2楼-- · 2020-08-20 16:40

嗨,

功能模块是在功能组(类型为F的特殊ABAP程序)中定义的过程,可以从任何ABAP程序中调用。 功能组充当逻辑上属于在一起的功能模块的容器。

功能模块允许您封装和重用R/3系统中的全局功能。 它们存储在中央库中。 R/3系统包含许多预定义的功能模块,您可以从任何ABAP程序中调用它们。 功能模块在数据库更新以及R/3系统之间或R/3系统与非SAP系统之间的远程通信中也起着重要作用。

子例程是可以在任何ABAP程序中定义的过程,也可以从任何程序调用。 子例程通常在内部被调用,也就是说,它们包含本地经常使用的部分代码或算法。

子例程主要用于本地模块化,也就是说,通常从定义它们的程序中调用它们。 您可以使用子例程来编写在程序中重复使用的函数。 您可以在任何ABAP程序中定义子例程

注意事项

JLN

渐行渐远_HoldOn
3楼-- · 2020-08-20 16:33

SUBROUTINE的主要四个区别------ ---- v ----------功能模块

1)子例程是本地的,这意味着我们可以在服务器本身中访问它们,但是就功能模块而言,它们是全局的,可以在服务器内部和外部进行访问。

2)我们不能在不调用子例程的情况下对其进行独立测试,但是功能模块可以进行独立测试。

3)无法处理子例程中的错误,可以通过功能模块中的异常来处理错误。

4)子例程在ABAP编辑器中定义,功能模块在函数生成器SE37中定义。

一只江湖小虾
4楼-- · 2020-08-20 16:22

出于文档目的,外部子例程更好。 您可以将与该程序相关的所有子例程放在一个include程序中。

另一个区别是它们是用程序编译的,因此它们共享相同的内存,因此在调用子例程时不会更改上下文。 确实节省了系统时间。

此外,您可以在"外部"子例程中访问程序的所有全局变量,但不能在"功能"模块中访问它们,除非将它们作为参数传递。

使用哪种取决于您要处理的情况。

例如,如果您正在开发将ouptut转换为PDF格式的功能,那么最好创建一个功能模块,以便所有软件包中的所有程序都可以使用该功能。

如果您正在开发将由一组定义的程序(处理相同类型的数据)使用的功能,那么最好使用外部子例程,您可以在外部子例程程序中定义公共数据。

在外部子例程中,perform语句位于一个程序中,而窗体例程位于另一个程序中。用于可重用性。

检查此链接,

http://help.sap.com/saphelp_erp2004/ helpdata/zh-CN/9f/db999535c111d1829f0000e829fbfe/frameset.htm

*********************************************** *

以下是差异投注的注解。 FM和子例程。

Hi Function模块用于模块化。 您可以在任何程序中使用功能模块。 这在SAP系统中都是可用的。

作为子例程的位置是程序特定的。 在一个程序中创建子例程后,便可以在该程序以及相关程序(例如包含在该程序中)中使用该子例程,或者必须使用主程序名称专门调用该子例程。

最后,子例程用于程序模块化。 不能用于一般用途。

FM是通用的。 不依赖程序。

FM通常在许多程序要执行例程时使用。

子例程(窗体)通常仅在一个程序中执行。

您可以从其他程序执行例程,但这并不常见。

表格和FM都是可重用的模块化单元。

为区别起见,我们通常说表单用于内部模块化和

FM用于外部模块化。

要决定实施哪种方法,请考虑是否需要仅将内容用于有限的程序

或者可以从许多独立程序中调用它。

对于第一个目的,最好实现一个表单,而对于第二个目的,我们实现FM。

但是,ABAP不会隔离使用情况。

那是; 您可以从另一个程序中调用一个窗体,该程序的代码实际上并未实现。

但是,这需要引起注意,因为表单可能会使用全局变量。

FM也有同样的问题。

FM封装在功能组中,功能组可能具有全局变量

由其中的所有FM使用。

一只江湖小虾
5楼-- · 2020-08-20 16:18

SUBROUTINES

ABAP/4通过子例程(也称为表单)支持将大型程序分解为较小的模块的过程。

功能模块

功能模块是存储在中央库中的特殊外部子例程。 R/3系统提供了许多预定义的功能模块,您可以从ABAP/4程序中调用它们,还可以创建自己的功能模块。

感谢和问候,

Dharani Kumar G

一周热门 更多>