声明:本文仅代表作者观点,仅用于SAP软件的应用与学习,不代表SAP公司。注:文中所示截图来源SAP软件,相应著作权归SAP所有
基本概念介绍
SAP的功能模块是存储在中央库内的特殊外部子程序,是SAP/ERP系统实现代码重用一种技术之一,功能模块可以避免重复编写相同的语句,同时也增强了ABAP程序的可读性和可理解性,它是SAP系统最为常用的系统复用组件之一。
功能模块(函数模块)被组织在函数组中,函数组就是完成相似功能或处理同类数据的功能模块的集合函数组,它是功能模块的容器,一个函数组中的所有功能模块都可以访问该组的全局数据(具体组织结构如下图所示)
创建功能模块步骤
1.创建函数组
2.创建功能模块(函数模块)
定义接口参数和异常
编写源代码
激活功能模块
3.测试功能模块
例子:创建一个功能模块,用于给外部系统读取SAP系统的物料主数据的状态,输入参数为物料编码和工厂,返回参数:物料主数据的状态(即如下图红色框的状态)
步骤1−创建函数组
函数组充当一种逻辑上属于一起的许多功能模块的容器。
事务代码:SE37
点击本地对象后,系统左下角提示:
然后激活函数组:SE80
选择函数组 -> 输入函数组名称 -> 选中新建的函数组 -> 右键激活。
步骤2−创建函数模块
函数模块并不能单独存在,它必须放在某个函数组中,因此创建函数模块之前先要创建函数组。
2-1.维护功能模块的属性
导入(import): 输入参数,比如结构型变量 ,但不能为内表。
导出(export):输出参数,比如结构型变量 ,但不能为内表。
正在更改(changing):既输入又输出的参数 。
表(tables): 可以把多个内表的值传进来,同时也可以把多个内表返回。
例外(exceptions):函数异常处理,函数模块中抛出异常:raising + 异常名 。
常规函数模块:如果勾选此项对外部系统不是可见的,但是在相同的SAP系统中是全局可见的。
远程启用的模块:如果勾选此项对外部系统可见,可以通过RFC被调用,如果需要给外围系统调用,需要勾选此项。
更新模块:用于函数模块的异步更新,一般使用立刻开始。
2-2.维护功能模块的导入参数:
可选:如果勾选表示这个值可以输入也可以不用输入。
2-3.维护功能模块的导出参数:
2-4.维护功能模块的代码:
点击激活
需要激活前面创建的函数组和功能模块
源代码:
SELECT SINGLE MMSTA INTO ZSTATUS FROM MARC WHERE MATNR = I_MATNR AND WERKS = I_WERKS AND LVORM = '' .
IF SY-SUBRC = 0.
ZTYPE = 'S' .
ZMESSAGE = '物料状态已成功取到' .
ELSE.
ZTYPE = 'E ' .
ZMESSAGE = '物料不存在或物料已被删除' .
ENDIF.
功能模块的测试非常方便,可以不在某个程序中而单独进行测试函数。
输入事务码SE37,然后按如下方式进行测试。
点击测试图标
导出参数显示功能模块执行的结果。
功能模块可以被任意ABAP程序调用,也可用给外围系统调用,支持异常处理,在函数运行时可以捕获异常消息。
CALL FUNCTION <module>
[EXPORTING f1 = a 1.... f n = a n]
[IMPORTING f1 = a 1.... f n = a n]
[CHANGING f1 = a 1.... f n = a n]
[TABLES f1 = a 1.... f n = a n]
[EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E]
[OTHERS = ro].
联系客服