Модуляризация в ABAP: макросы, подпрограммы и функциональные модули

При модульной организации исходного кода вы помещаете в модуль последовательность операторов ABAP. Затем вместо размещения всех операторов в основной программе вы просто вызываете модуль. Когда программа генерируется, исходный код в модуле модуляризации обрабатывается так, как если бы он действительно физически присутствовал в основной программе.

Необходимость модульности

  • Улучшить структуру программы.
  • Легко читать код
  • Легко поддерживать код
  • Избегайте избыточности и поощряйте повторное использование кода.

Различные методы модуляризации

  • Использование макросов
  • Использование включаемых файлов
  • подпрограммы
  • Функциональные модули

Давайте подробно рассмотрим каждый из них:

SAP-ABAP Макрос

Если вы хотите повторно использовать один и тот же набор операторов в программе более одного раза, вы можете включить их в макрос.

Вы можете использовать макрос только внутри программы, в которой он определен, и его можно вызывать только в строках программы, следующих за ней.wing его определение.

Макросы могут быть полезны для длительных вычислений или com.plex ПИШИТЕ заявления.

Синтаксис

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

Макросы могут использовать параметры &N где Н = 1,2,3…

Пример:-

DATA: number1 TYPE I VALUE 1.

DEFINE increment.

ADD 1 to &1.

WRITE &1.

END-OF-DEFINITION.

Increment number1.

WRITE number1.

Выход: 2

Включить программы

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

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

Синтаксис

Include <include program Name>

Очки для заметок

  • Включаемые программы не могут вызывать сами себя.
  • Включаемые программы должны содержать полные операторы.

Пример:

INCLUDE ZILX0004.

WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM.

================================

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

подпрограммы

Подпрограммы — это процедуры, которые вы можете определить в любом ABAP-программа а также звонить из любой программы. Подпрограммы обычно вызываются внутренне, то есть они содержат разделы кода или алгоритмы, которые часто используются локально. Если вы хотите, чтобы функцию можно было повторно использовать во всей системе, используйте функциональный модуль.

Синтаксис-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= Имя подпрограммы

= Передаваемые параметры

Типы подпрограмм

  1. внутренний
    • Подпрограмма, определенная в той же вызываемой программе.
    • Может получить доступ ко всем объектам данных, объявленным в основной программе ABAP/4.
  2. Внешний
    • Подпрограмма, определенная вне вызываемой программы.
    • Необходимо использовать вариант или объявить объекты данных в общих частях памяти.

Вызов подпрограммы

Внутренние подпрограммы

PERFORM <subroutine> [<pass>]

= Имя подпрограммы

= Передаваемые параметры

Данные, заявленные в основной программе, доступны автоматически.

Внешние подпрограммы

PERFORM <subroutine>(<Program>) [<pass>].

PERFORM <subroutine> (<Program>) [<pass>] [IF FOUND].

PERFORM (<subroutine>) IN PROGRAM  (<Program>) [<pass>] [IF FOUND].

PERFORM <index> OF <subroutine1> <subroutine2> <subroutine3> [<pass>].

Очки для заметок

  • В подпрограммах разрешены вложенные вызовы (т. е. PERFORM внутри FORM… ENDFORM).
  • Также возможны рекурсивные вызовы.
  • Чтобы определить локальные данные, используйте оператор DATA после FORM. Каждый раз, когда вы входите в подпрограмму, данные воссоздаются (с начальным значением) и освобождаются в конце (из стека).
  • Чтобы определить глобальные данные, используемые в подпрограмме, используйте оператор LOCAL после FORM. Значения сохраняются при входе в подпрограмму, а затем освобождаются в конце (из стека).

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

Функциональные модули — это процедуры ABAP/4 общего назначения, которые может использовать каждый. Фактически, существует большое количество стандартных функциональных модулей.

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

Синтаксис-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

Важная информация, связанная с функциональным модулем

  • Администрация
  • Импорт/Изменение/Экспорт параметров.
  • Параметры/Исключения таблицы.
  • Документация
  • Исходный код – Л У01. это функциональная группа
  • Глобальные данные – L TOP .Глобальные данные для функциональной группы. Доступны для всех функциональных модулей в функциональной группе.
  • Основная программа – SAPL . Содержит список всех включаемых файлов для этой функциональной группы.

Вызов функционального модуля

Чтобы вызвать функциональный модуль, используйте оператор CALL FUNCTION:

CALL FUNCTION <module>

[EXPORTING  f1 = a 1.... f n = a n]

[IMPORTING  f1 = a 1.... f n = a n]

[CHANGING   f1 = a 1.... f n = a n]

[TABLES     f1 = a 1.... f n = a n]

[EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E]    

[OTHERS = ro]].

Функциональные группы

Функциональные группы представляют собой контейнеры для функциональных модулей. На самом деле существует большое количество стандартных функциональных групп.
Все функциональные модули в функциональной группе имеют доступ к глобальным данным группы.

Подобно исполняемым программам (тип 1) и пулы модулей (тип M), группы функций могут содержать экраны, экраны выбора и списки.

Очки для заметок

  • Группы функций не могут быть выполнены.
  • Имя функциональной группы может иметь длину до 26 символов.
  • При создании функциональной группы или функционального модуля основная программа и включаемые программы генерируются автоматически.
  • Группы функций инкапсулируют данные.

Как создать функциональную группу

  1. Перейти к транзакции SE80.
  2. Выберите «Программа» в раскрывающемся списке.
  3. Напишите имя функциональной группы, которую вы хотите создать. Обычно группы функций, созданные пользователем, начинаются с буквы «Z». например – . Нажмите Enter.
  4. Обратите внимание, что включение в ТОП создается по умолчанию, если пользователь проверяет опцию создания включения в ТОП.

Как создать функциональный модуль

  1. Создайте группу функций (скажем, «ZCAL»).
  2. Создайте функциональный модуль, установите такие атрибуты, как (группа функций, приложение, краткий текст и тип процесса) и сохраните.
  3. Включаемый файл «LZCALU01» будет содержать исходный код первого функционального модуля.
  4. Включаемый файл «LZCALTOP» будет содержать глобальные данные.
  5. Основная программа «SAPLZCAL» содержит
    • Глобальные данные Включить файл «LZCALTOP»
    • Функциональные модули включают файл «LZCALUXX».
    • Определенные пользователем Включаемые файлы «LZCALF..», «LZCALO..» и «LZCALI..».
  6. Определите параметры интерфейса и исключения
  7. Напишите исходный код
  8. Активировать функциональный модуль
  9. Тестирование функционального модуля – одиночное тестирование и отладка
  10. Документирование и выпуск функционального модуля

Это все, что касается модульности в ABAP.