SAP ABAP - 函数模块



函数模块构成了SAP系统的重要组成部分,因为多年来SAP一直使用函数模块对代码进行模块化,从而允许代码重用,函数模块本身、其开发人员以及客户都可以重用这些代码。

函数模块是包含一组可重用语句的子程序,具有导入和导出参数。与包含程序不同,函数模块可以独立执行。SAP系统包含多个预定义的函数模块,可以从任何ABAP程序中调用。函数组充当许多逻辑上属于一起的函数模块的容器。例如,人力资源工资系统中的函数模块将被组合到一个函数组中。

要了解如何创建函数模块,必须探索函数生成器。您可以使用事务代码SE37找到函数生成器。只需键入函数模块名称的一部分以及通配符即可演示如何搜索函数模块。键入*amount*,然后按F4键。

Create Function Module

搜索结果将显示在新窗口中。函数模块以蓝色背景的行显示,其函数组以粉红色行显示。您可以使用对象导航器屏幕(事务SE80)进一步查看函数组ISOC。您可以看到函数模块和其他保存在函数组中的对象的列表。让我们考虑函数模块SPELL_AMOUNT。此函数模块将数字转换为文字。

创建新程序

步骤1 - 转到事务SE38并创建一个名为Z_SPELLAMOUNT的新程序。

步骤2 - 输入一些代码,以便可以设置一个参数,在其中可以输入值并传递给函数模块。此处的文本元素text-001显示“输入值”。

步骤3 - 要为此编写代码,请使用CTRL+F6。之后,将出现一个窗口,其中“CALL FUNCTION”是列表中的第一个选项。在文本框中输入'spell_amount',然后单击继续按钮。

Spell Amount Program

步骤4 - 一些代码会自动生成。但我们需要增强IF语句以包含向屏幕写入消息的代码,以显示“函数模块返回的值为: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 Amount

以上代码产生以下输出:

Spelling the Amount 
Amount in words is: 
FIVE THOUSAND SIX HUNDRED EIGHTY
广告