Функциональные модули составляют основную часть системы SAP, поскольку в течение многих лет SAP создавала модульный код с использованием функциональных модулей, что позволяет повторно использовать код самим их разработчикам, а также их клиентам.
Функциональные модули — это подпрограммы, которые содержат набор многократно используемых операторов с параметрами импорта и экспорта. В отличие от программ «Включить», функциональные модули могут выполняться независимо. Система SAP содержит несколько предопределенных функциональных модулей, которые можно вызывать из любой программы ABAP. Функциональная группа действует как своего рода контейнер для ряда функциональных модулей, которые логически связаны друг с другом. Например, функциональные модули для системы начисления заработной платы персонала будут объединены в функциональную группу.
Чтобы посмотреть, как создавать функциональные модули, необходимо изучить конструктор функций. Вы можете найти построитель функций с кодом транзакции SE37. Просто введите часть имени функционального модуля со знаком подстановки, чтобы продемонстрировать, как можно искать функциональные модули. Введите * сумму *, а затем нажмите клавишу F4.
Результаты поиска будут отображены в новом окне. Функциональные модули отображаются в строках с синим фоном, а их функциональные группы — в розовых линиях. Далее вы можете посмотреть на группу функций ISOC, используя экран Навигатора объектов (Транзакция SE80). Вы можете увидеть список функциональных модулей, а также другие объекты, содержащиеся в функциональной группе. Давайте рассмотрим функциональный модуль SPELL_AMOUNT. Этот функциональный модуль преобразует числовые цифры в слова.
Создание новой программы
Шаг 1 — Перейдите к транзакции SE38 и создайте новую программу с именем Z_SPELLAMOUNT.
Шаг 2 — Введите некоторый код, чтобы можно было установить параметр, в котором значение можно было бы ввести и передать в функциональный модуль. Текстовый элемент text-001 здесь читается как «Введите значение».
Шаг 3 — Чтобы написать код для этого, используйте CTRL + F6. После этого появится окно, в котором «CALL FUNCTION» является первой опцией в списке. Введите «spell_amount» в текстовое поле и нажмите кнопку «Продолжить».
Шаг 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.
Шаг 5 — переменная, которую возвращает функциональный модуль, называется IN_WORDS. Установите соответствующую переменную в программе под названием «результат». Определите IN_WORDS, используя инструкцию LIKE для ссылки на структуру с именем SPELL.
Шаг 6 — Сохраните, активируйте и запустите программу. Введите значение, как показано на следующем снимке экрана, и нажмите F8.
Приведенный выше код производит следующий вывод —