SAP ABAP - Функциональные модули

Функциональные модули составляют основную часть системы SAP, потому что в течение многих лет SAP создавала модульный код с использованием функциональных модулей, что позволяет повторно использовать код самими разработчиками, а также их клиентами.

Функциональные модули - это подпрограммы, которые содержат набор многократно используемых операторов с параметрами импорта и экспорта. В отличие от программ Include, функциональные модули могут выполняться независимо. Система SAP содержит несколько предопределенных функциональных модулей, которые можно вызывать из любой программы ABAP. Функциональная группа действует как своего рода контейнер для ряда функциональных модулей, которые логически должны быть вместе. Например, функциональные модули для системы расчета заработной платы HR будут объединены в функциональную группу.

Чтобы понять, как создавать функциональные модули, необходимо изучить конструктор функций. Вы можете найти конструктор функций с кодом транзакции SE37. Просто введите часть имени функционального модуля с подстановочным знаком, чтобы продемонстрировать способ поиска функциональных модулей. Введите * amount * и нажмите клавишу F4.

Результаты поиска будут отображены в новом окне. Функциональные модули отображаются линиями на синем фоне, а их функциональные группы - розовыми линиями. Вы можете дополнительно изучить функциональную группу ISOC, используя экран Object Navigator (Transaction SE80). Вы можете увидеть список функциональных модулей, а также другие объекты, содержащиеся в функциональной группе. Рассмотрим функциональный модуль SPELL_AMOUNT. Этот функциональный модуль преобразует числовые цифры в слова.

Создание новой программы

Step 1 - Перейдите к транзакции SE38 и создайте новую программу с именем Z_SPELLAMOUNT.

Step 2- Введите код, чтобы можно было настроить параметр, в который можно было бы ввести значение и передать его в функциональный модуль. Текстовый элемент text-001 здесь читается как «Введите значение».

Step 3- Чтобы написать код для этого, используйте CTRL + F6. После этого появляется окно, в котором «ФУНКЦИЯ ВЫЗОВА» является первой опцией в списке. Введите "spell_amount" в текстовое поле и нажмите кнопку "Продолжить".

Step 4- Некоторый код генерируется автоматически. Но нам нужно улучшить оператор IF, чтобы включить код для ЗАПИСИ сообщения на экран, в котором говорится: «Функциональный модуль вернул значение: sy-subrc», и добавить оператор ELSE, чтобы выводить правильный результат, когда функция модуль выполнен успешно. Здесь необходимо настроить новую переменную для хранения значения, возвращаемого из функционального модуля. Назовем это как «результат».

Ниже приведен код -

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.

Step 5- Переменная, которую возвращает функциональный модуль, называется IN_WORDS. Установите соответствующую переменную в программе под названием «результат». Определите IN_WORDS, используя оператор LIKE для ссылки на структуру с именем SPELL.

Step 6- Сохранить, активировать и запустить программу. Введите значение, как показано на следующем снимке экрана, и нажмите F8.

Приведенный выше код дает следующий вывод -

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