内容包括:
1. Function Module 概述Function Module是模块化(Modularization)的另一种单元,也叫
函数模块,一般简称为
函数(FM)。
SAP R/3系统提供了
Function Library(FL)来封装Function Module,而每个Function Module 都会有一个输入/输出参数的接口供程序调用传输。
能多次独立或直接被
SAP其他程序调用,强调了其可复用性。
Function Module也支持远程访问模式,即:Remote Function Call(
RFC),提供外部接口供非
SAP系统使用;
同时,SAP官方也提供了 JCO(Java Connector)、NCO(.Net Connector)等组件与SAP
RFC通信。
下面介绍 Function Module 的操作及相关应用。
2. 函数组(Function Groups)一般情况下,Function Group定义的都是操作类似的Function Module,包括一系列组件:
1). 数据对象(Data Objects)
Function Group的全局变量、内表、结构、类等对象,可通用于整个Function Group;
2). 子程序(Subroutine)
创建的子程序可被在该Function Group内的 Function Module 调用;
3). 屏幕(Screens)
创建的屏幕可被在该Function Group内的Function Module使用;
2.1 创建Function Group1). 通过T-Code:SE37,进入Function Builder的初始界面:
2) 通过菜单栏路径:Goto -> Function Groups -> Create Groups
(除了Create Group外,还有 Change Group、Display Group、Delete Group、Find Group,分别用于修改、显示、删除、查找Function Group属性信息)
选择Create Group之后,会弹出 “Create Function Group” 的对话框:
输入Function Group名称及描述后保存按钮。
弹出 “Create Object Directory Entry” 对话框,要求存放在哪个开发包(Package)里面,因为为测试Demo,故点击“本地对象(Local Object)”即可。
3)保存成功后,系统会在状态栏上弹出提示:
3. Function Module 的操作每个Function Module的接口都会包含以下元素:
1). Import Parameter(输入参数)
调用 Function Module 时,外部传入的参数;
如若勾选参数中的Option选项,则该参数为非必输,如若不勾选,则表示必输。
定义传入参数与定义变量时一样,可用Like语句参考数据字典中的类型,如若用TYPE定义,Associated Type可以是基本类型,也可以是预定义类型。
2). Export Parameter (输出参数)
当 Function Module 处理完数据逻辑后,返回输出的参数;
不仅可返回变量,也可返回结构。
3). Changing Parameter
作为输入参数传入 Function Module 操作后,修改并作为返回输出的参数;
4). Tables
可传输内表作为数据源,Function Module 处理完成后,返回结果集。
5). Exceptions (异常)
设定异常参数,在 Function Module 处理过程中,自定义异常输出。
3.1 Calling Function Module
Function Module 可以被不同的程序重复调用,避免了不同系统相同功能代码的重复开发。
然而在开发过程中,不可能每个函数的Import参数和Export参数都能记住,可以使用
ABAP 的Pattern方式调用 Function Module。
操作步骤:
1) 将光标聚焦在需要Call Function的地方;
2) 点击
ABAP编辑器工具栏中的 ”Pattern“按钮:
弹出对话框,在CALL FUNCTION 栏位输入函数名称并单击确定:
3) 编辑器中会出现Function 相应的接口参数:
[size=1em][size=1em]01
[size=1em]02
[size=1em]03
[size=1em]04
[size=1em]05
[size=1em]06
[size=1em]07
[size=1em]08
[size=1em]09
[size=1em]10
[size=1em]11
[size=1em]12
[size=1em]13
| [size=1em][size=1em]CALL FUNCTION 'LAST_DAY_OF_MONTHS'
[size=1em] EXPORTING
[size=1em] day_in =
[size=1em]* IMPORTING
[size=1em]* LAST_DAY_OF_MONTH =
[size=1em]* EXCEPTIONS
[size=1em]* DAY_IN_NO_DATE = 1
[size=1em]* OTHERS = 2
[size=1em] .
[size=1em]IF sy-subrc <> 0.
[size=1em]* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
[size=1em]* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
[size=1em]ENDIF.
|