Модуляризація в 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.
= Назва підпрограми
= Передаються параметри
Типи підпрограм
- Внутрішній
- Підпрограма, визначена в тій же програмі, що викликається.
- Може отримати доступ до всіх об’єктів даних, оголошених у основній програмі ABAP/4.
- Зовнішній
- Підпрограма, визначена поза викликаною програмою.
- Необхідно використовувати або оголошувати об’єкти даних у загальних частинах пам’яті.
Виклик підпрограми
Внутрішні підпрограми
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 символів.
- Коли ви створюєте функціональну групу або функціональний модуль, основна програма та включені програми генеруються автоматично.
- Функціональні групи інкапсулюють дані.
Як створити групу функцій
- Перейти до транзакції SE80.
- У спадному списку виберіть «Програма».
- Напишіть назву функціональної групи, яку ви хочете створити. Зазвичай групи функцій, створені користувачем, починаються з «Z». наприклад - . Натисніть клавішу Enter.
- Зауважте, що ТОП-включення створюється за замовчуванням, якщо користувач позначає опцію створення ТОП-включення.
Як створити функціональний модуль
- Створіть групу функцій (скажімо «ZCAL»).
- Створіть функціональний модуль, установіть такі атрибути, як (група функцій, програма, короткий текст і тип процесу) і збережіть.
- Файл «LZCALU01» містить вихідний код першого функціонального модуля.
- Включений файл «LZCALTOP» матиме глобальні дані.
- Основна програма"SAPLZCAL” містить
- Глобальні дані Включити файл «LZCALTOP»
- Функціональні модулі включають файл «LZCALUXX»
- Визначено користувачем Включає файли «LZCALF..», «LZCALO..» і «LZCALI..»
- Визначте параметри інтерфейсу та винятки
- Напишіть вихідний код
- Активуйте функціональний модуль
- Тестування функціонального модуля – один тест і налагодження
- Документування та випуск функціонального модуля
Ось і все щодо модульності в ABAP.