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

Коли ви модульуєте вихідний код, ви розміщуєте послідовність інструкцій ABAP у модулі. Тоді, замість того, щоб розміщувати всі оператори у вашій основній програмі, ви просто викликаєте модуль. Коли програма генерується, вихідний код у модулі модуляції розглядається так, ніби він фактично фізично присутній у основній програмі.

Необхідність модулярізації

  • Удосконалити структуру програми.
  • Легко читається код
  • Легко підтримувати код
  • Уникайте надмірності та сприяє повторному використанню коду

Різні методи модулярізації

  • Використання макросів
  • Використання файлів включення
  • Підпрограми
  • Функціональні модулі

Розглянемо кожен з них докладніше:

SAP- Макрос ABAP

Якщо ви хочете повторно використовувати той самий набір операторів у програмі більше одного разу, ви можете включити їх у макрос.

Ви можете використовувати макрос лише в програмі, у якій він визначений, і його можна викликати лише в рядках програми після його визначення.

Макроси можуть бути корисними для довгих обчислень або складних операторів WRITE.

синтаксис

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

Макроси можуть використовувати параметри &N де 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 <include program Name>

Бали до примітки

  • Програми Include не можуть викликати самі себе.
  • Програми включення повинні містити повні оператори.

приклад:

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.

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

  • адміністрація
  • Імпорт/зміна/експорт параметрів.
  • Параметри/виключення таблиці.
  • документація
  • Вихідний код – Л U01 . це група функцій
  • Глобальні дані – Л TOP .Глобальні дані для функціональної групи – доступні через функціональні модулі у функціональній групі.
  • Основна програма – SAPЛ . Містить список усіх файлів включення для цієї групи функцій

Виклик функціонального модуля

Щоб викликати функціональний модуль, використовуйте інструкцію 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.