SAP ABAP 函数模块
函数模块(Function Modules)是 SAP 系统的主要组成部分,因为多年来,SAP 一直使用函数模块对代码进行模块化,可以使得代码由其自身、开发人员以及客户重用。
函数模块是包含一组具有导入和导出参数的可重用语句的子程序。与 Include 程序不同,函数模块可以独立执行。SAP 系统包含几个预定义的功能模块,可以从任何 ABAP 程序调用这些模块。功能组充当逻辑上属于一起的多个函数模块的容器。例如,HR 工资系统的函数模块将放在一个函数组中。
要了解如何创建函数模块,必须研究函数生成器(Function Builder)。您可以找到事务代码为 SE37 的函数生成器。只需键入带有通配符的函数模块名称的一部分,即可演示搜索函数模块的方法。输入amount,然后按 F4 键。
搜索结果将显示在新窗口中。函数模块以蓝色背景的线条显示,其功能组以粉色线条显示。您可以使用对象导航器屏幕(事务 SE80)进一步查看函数组 ISOC。您可以看到函数模块列表以及函数组中保存的其他对象。让我们参考一下函数模块 Spill_AMOUNT
。此函数模块可以将数字转换为文字。
创建新程序
步骤 1 - 转到事务 SE38 并创建一个名为
Z_SPELLAMOUNT
的新程序。步骤 2 - 输入一些代码,以便设置参数,在其中输入值并传递给函数模块。此处的文本元素
text-001
读取 'Enter a Value'。步骤 3 - 要为此编写代码,请使用 CTRL+F6。之后,将出现一个窗口,其中 CALL FUNCTION(调用函数)是列表中的第一个选项。在文本框中输入
spell_amount
,然后单击continue 按钮。步骤 4 - 一些代码是自动生成的。但我们需要增强
IF
语句,以包含一个代码,写入消息,"The function module returned a value of: sy-subrc",并添加ELSE
语句,以便在函数模块成功时写出正确的结果。这里,必须设置一个新变量来保存函数模块返回的值。我们将其称为 'result'。代码如下:
REPORT Z_SPELLAMOUNT.
data result like SPELL.
selection-screen begin of line.
selection-screen comment 1(15) text-001.
parameter num_1 Type I.
selection-screen end of line.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
AMOUNT = num_1
IMPORTING
IN_WORDS = result.
IF SY-SUBRC <> 0.
Write: 'Value returned is:', SY-SUBRC.
else.
Write: 'Amount in words is:', result-word.
ENDIF.
步骤 5 - 函数模块返回的变量叫
IN_WORDS
。程序中设置相应的变量叫做result
。通过使用LIKE
语句来定义IN_WORDS
的结构叫做SPELL
。步骤 6 - 保存、激活和执行程序。输入如下图所示的值,然后按 F8 键:
结果如下:
Spelling the Amount
Amount in words is:
FIVE THOUSAND SIX HUNDRED EIGHTY