Прежде чем перейти к разнице между классом и функциональным модулем, давайте сделаем краткое введение.
Программа ABAP состоит из программных блоков и выполняется последовательно. Это классический подход к программированию, известный как модель процедурного программирования. В этой модели используются функции и подпрограммы.
Парадигма объектно-ориентированного программирования основана на классе и объекте и направлена на реализацию реальных объектов, таких как наследование, абстракция и т. д.
Функциональный модуль
Функциональные модули — это процедуры, которые имеют набор многократно используемых операторов с параметрами импорта, экспорта и т. д. Они создаются в инструментальных средствах ABAP с помощью построителя функциональных модулей. Они управляются в центральной библиотеке функций.
Они играют важную роль в обновлении и во взаимодействии между различными системами SAP, между системами SAP и удаленными системами посредством удаленных вызовов. В отличие от Include, они могут выполняться независимо. Каждый функциональный модуль должен быть назначен функциональному пулу, называемому функциональной группой. Группа функций — это контейнер, содержащий функциональные модули, которые логически должны быть вместе. Функциональные модули также поддерживают обработку исключений, чтобы перехватывать любые ошибки во время их работы.
Функциональный модуль «УМник». Презентация для партнеров/дилеров
Класс
Классы представляют собой схему объектов и представляют собой набор свойств или методов, общих для всех объектов одного типа. Компоненты класса называются элементами данных. Класс обеспечивает гибкость для назначения видимости всем своим элементам данных. Каждый экземпляр или объекты имеют уникальную идентичность и собственный набор значений атрибутов.
Класс может наследовать другой класс и интерфейсы. Подробнее о занятиях можно прочитать здесь.
Теперь давайте посмотрим на их различие.
Разница между классом и функциональным модулем
| Функциональный модуль | Класс |
| Он ориентирован на процессуальные действия. | Он объектно-ориентирован. |
| Он создается с помощью Конструктора функциональных модулей (T-код se37). | Он создается с помощью Class Builder (T-Code SE24). |
| Это всегда публично. | Класс может быть общедоступным, частным или защищенным. |
| Переменные всегда являются частными. | Переменные могут быть общедоступными, частными или защищенными. |
| Невозможно создать какие-либо экземпляры. | Можно создать несколько экземпляров. |
| Наследование невозможно. | Возможно наследование. |
| С его помощью можно создавать экраны. | Чтобы создать экран, класс должен вызвать другую программу. |
Автор
Full Stack Developer с более чем 10-летним опытом создания технического контента. Посмотреть все сообщения
Обзор модулей программы
Источник: gocoding.org
Функциональные модули
В функциональные подсистемы обычно объединяются функции и объекты, для которых целесообразна совместная реализация. Примером образования функциональной подсистемы может служить совмещение транспортной функции и функции управления потоками при их программно-аппаратной реализации в сегментах телекоммуникационной сети (рис.1). В этом смысле телекоммуникационную сеть на уровне функциональной модели часто называют транспортной подсистемой.
Аналогично можно выделить подсистему административного управления сетью, подсистему услуг и приложений и менее масштабные подсистемы: подсистему передачи, подсистему распределения информации и т.п.

Рисунок 1. Пример образования транспортной подсистемы на уровне
функциональной модели. I – интерфейс (эталонная точка
телекоммуникационной сети); NTU – сетевое окончание.
Домен представляет собой функциональный модуль, сформированный по принципу принадлежности функций и объектов одной поименованной группе. При этом учитывать их совместное действие при реализации в аппаратных средствах или программных продуктах не требуется. Примерами могут служить домен пользователя (рис. 4.21) и домен сетевого оператора (рис 2).

| Рисунок 2 Пример образования домена пользователя | Рисунок 3. Пример образования домена сетевого оператора |
Конкретный состав объектов (функций) домена называется конфигурацией домена. Не трудно убедиться, например, что конфигурации доменов разных пользователей могут существенно отличаться. Конфигурации доменов сетевых операторов, также могут быть разными.
Это зависит от многих факторов, основным из которых является возможности ресурсов сети по предоставлению тех или иных услуг и приложений. Если предоставление конкретной услуги или набора услуг требует участия нескольких операторов, их домены рассматриваются на функциональном уровне как объединенная платформа предоставления услуг. Взаимодействие и функциональных подсистем и доменов осуществляется посредством логических интерфейсов.
Кроме вышесказанного следует отметить, что исследование информационной сети на уровне функциональной модели имеет еще один очень важный аспект. В зависимости от способа формирования функциональных модулей и возможностей их реализации с учетом уровня научно-технического прогресса, может быть выстроена та или иная концепция построения сети. Проиллюстрируем это следующим образом. Так, например, концепция телефонной сети заключается в построении дорогостоящих АТС в единой структуре объединяющих функции коммутации, функции управления обслуживанием вызовов, объекты услуг и приложений, а также биллинга. Такая АТС в сети представляет собой монолитную, закрытую системную структуру, как правило, не допускающую расширения или модернизации с использованием оборудования других производителей.
Попытка отделить от АТС подсистему услуг и приложений породила концепцию интеллектуальной сети (Intelligent Network, IN). Это позволило организовать в телефонной сети дополнительные виды обслуживания (ДВО) (расширить конфигурацию домена) и предоставлять различные услуги по заявкам пользователей, формируя их из отдельных компонентов. Концепция IN предполагает наличие таких функциональных модулей (подсистем) как: модуль распознавания вызовов, требующих выполнения ДВО; модуль формирования требуемого сервиса из независимых функциональных компонентов; модуль управления сетевыми ресурсами и т.п. При этом функционирование подсистемы ДВО абсолютно независимо от типа сети связи. Технология IN может быть реализована на базе любой коммутируемой сети (аналоговой или цифровой), а также на сети передачи данных.
Появление Softswitch, хорошо масштабируемого современного программного коммутатора, в корне изменило традиционную закрытую систему коммутации. Развивая подход IN в Softswitch, используя открытые интерфейсы, удалось обеспечить быстрое создание и предоставление новых услуг как оператором связи самостоятельно, так и совместно с различными производителями и сторонними провайдерами услуг. Softswitch использует принципы компонентного построения сети и открытые стандартные интерфейсы между тремя основными функциями: коммутация, управление обслуживанием вызовов, управление услугами и приложениями. В такой открытой распределенной структуре могут свободно использоваться функциональные компоненты разных производителей.
Разделение функций транспортировки информации и функций управления ее переносом через сеть, а так же отделение функций услуг и приложений от собственно связных функций породило концепцию NGN (сетей следующего поколения). Такая многокомпонентная распределенная архитектура, в которой связь между компонентами осуществляется исключительно через открытые интерфейсы. С позиций традиционной телефонии она воспринимается как сеть пакетной коммутации под управлением Softswitch, поддерживающая широкополосный абонентский доступ и мульти-сервисное обслуживание трафика. Сетевые концепции подробно изучаются в третьем модуле.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
SAP ABAP – функциональные модули
Функциональные модули составляют основную часть системы 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.

Приведенный выше код производит следующий вывод –
Источник: coderlessons.com