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
廣告