Навчальний посібник з діалогового програмування: пул модулів у SAP ABAP

⚡ Розумний підсумок

Діалогове програмування в SAP ABAP створює програми пулу модулів, які взаємодіють з користувачем через екрани та змінюють вміст бази даних. На цій сторінці пояснюються коди транзакцій, екрани, стан графічного інтерфейсу, логіка потоку екранів, dynpros та структура пулу модулів.

  • ???? Основне визначення: Діалогова програма обробляє будь-яку взаємодію з користувачем, таку як введення даних, вибір пункту меню або натискання кнопки, і може оновлювати базу даних.
  • 🅼 Тип програми: Діалогові програми є пулами модулів типу M, не можуть запускатися самостійно та повинні бути прив'язані принаймні до одного коду транзакції з початковим екраном.
  • 🧩 Компоненти: Код транзакції, екрани, стан графічного інтерфейсу, пул модулів ABAP та логіка потоку разом утворюють одну діалогову програму.
  • 🔄 Логіка потоку: PBO запускається до появи екрана, PAI запускається після дії користувача, POH відповідає на F1, а POV відповідає на F4.
  • 🖥️ Динпро: Екран плюс його логіка потоку — це dynpro, і кожен dynpro контролює рівно один крок діалогу.
  • 📦 Пул модулів: Усі dynpro, що викликаються в межах однієї транзакції, посилаються на спільний пул модулів, який містить діалогові модулі.
  • 🛠️ Шлях створення: SE80 створює пул модулів, SE51 розробляє екран, SE41 будує графічний інтерфейс користувача (GUI) для відображення статусу, а SE93 зв'язує код транзакції.

SAP Програмування діалогів ABAP

Що таке діалогове програмування?

SAP-ABAP підтримує два типи програм – програму звіту та програму діалогу.

Якщо ваша програма ABAP вимагає введення користувача, використовується діалогове програмування.

Діалог користувача — це будь-яка форма взаємодії між користувачем і програмою, яка може бути будь-якою з наступних

  • Введення даних
  • Вибір пункту меню
  • Натискання кнопки
  • Клацання або подвійне клацання запису

Діалогова програма також використовується, коли нам потрібно переходити вперед і назад між екранами

Діалогові програми створюються з типом «M» – пул модулів. Вони не можуть бути виконані незалежно і мають бути додані принаймні до одного коду транзакції, у якому ви вказуєте початковий екран.

Різниця між програмами для звітів і діалогів

Різниця між програмами для звітів і діалогів

Програма звіту:

Звіт — це програма, яка зазвичай читає й аналізує дані в таблицях бази даних, не змінюючи їх база даних.

Діалогова програма:

Діалогова програма дозволяє інтерактивно працювати з системою та змінювати вміст таблиць бази даних. Кожна діалогова програма має певну послідовність екранів, які обробляються системою один за одним.

Критерії Програма звітів Програма діалогу
Тип програми Тип 1, виконуваний файл Тип M, модульний пул
Доступ до бази даних Зчитує та аналізує дані Зчитує та змінює дані
Виконання Працює самостійно Працює лише через код транзакції
Контроль Події звіту Логіка екранного потоку кожного dynpro

Послідовність екранних дій під час діалогової транзакції легше відстежити на прикладі.

Зразок обробки транзакцій у діалоговому програмуванні

Зразок обробки транзакції

Діаграма відображає одну транзакцію від першого екрана до оновлення бази даних. Користувач вводить дані на екрані 100, PAI перевіряє запис і визначає наступний екран, екран 200 збирає решту даних, і завдання оновлення нарешті записує запис. Кожен із цих кроків виконується компонентами, переліченими нижче.

Компоненти діалогової програми

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

Компонентами діалогової програми є:

Код транзакції

  • Код транзакції починає послідовність екранів.
  • Ви створюєте коди транзакцій у браузері репозиторію в ABAP Workbench або за допомогою Transaction SE93.
  • Код транзакції пов’язаний із програмою ABAP і початковим екраном.
  • Ви можете запустити послідовність екранів з будь-якої програми ABAP за допомогою оператора CALL SCREEN.

Екрани

  • Кожне діалогове вікно в SAP системою керують один або декілька екранів.
  • Ви створюєте екрани за допомогою екрана Painter у ABAP Workbench через транзакцію SE51
  • Кожен екран належить до Програма ABAP.
  • Ці екрани складаються з «екранної маски» або «макета» та його логіки потоку. Екран має макет, який визначає положення полів введення/виведення та інших графічних елементів, таких як прапорці та перемикачі. Логіка потоку визначає логічну обробку на екрані.

Статус GUI

  • Кожен екран має статус(и) GUI, які є незалежними компонентами програми.
  • Це керує панелями меню, стандартною панеллю інструментів, панеллю інструментів програми, за допомогою яких користувач може вибирати функції в програмі.
  • Ви створюєте їх у ABAP Workbench за допомогою меню Painter.

Програма ABAP

  • Кожен екран і статус GUI в системі R/3 належать одній програмі ABAP.
  • Програма ABAP містить діалогові модулі, які викликаються логікою екранного потоку, а також обробляють введені користувачем дані зі статусу GUI.
  • Програми ABAP, які використовують екрани, також відомі як діалогові програми.
  • У пулі модулів (програма типу М); перший блок обробки, який викликається, завжди є діалоговим модулем. Однак ви також можете використовувати екрани в інших програмах ABAP, таких як виконувані програми або функціональні модулі. Тоді перший блок обробки називається інакше; наприклад, середовищем виконання або викликом процедури. Потім запускається послідовність екранів за допомогою оператора CALL SCREEN.

Логіка потоку екрана

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

  • Обробка перед виведенням (PBO) подія: яка обробляється перед відображенням екрана
  • Процес після введення (PAI) подія: яка обробляється після дії користувача на екрані
  • Обробка запиту на допомогу (P.O.H.): який обробляється при натисканні F1
  • Обробити запит на значення (POV):який обробляється при натисканні F4

Поняття «поверхнева зона» та «поверхнева зона» детально пояснюються на сторінці про процес запиту на отримання вартості та процес запиту на допомогу.

Динпро

  • Екран разом із логікою потоку називається Dynpro («Динамічна програма», оскільки логіка потоку екрана впливає на хід програми).
  • Кожен dynpro контролює лише один крок вашої діалогової програми.
  • Екрани, що належать до програми пронумерованийПослідовність екранного потоку може бути лінійною або циклічною. З ланцюжка екранів можна навіть викликати інший ланцюжок екранів і після його обробки повернутися до початкового ланцюжка. Також можна перевизначити статично визначений наступний екран з діалогових модулів програми ABAP.

Пул модулів ABAP

  • Під час події PBO або PAI Dynpro викликає діалогову програму ABAP. Колекція таких програм називається пулом модулів ABAP.
  • Наприклад, модулі, викликані під час події PAI, використовуються для перевірки введених користувачем даних і для запуску відповідних діалогових кроків, таких як завдання оновлення.
  • Усі dynpro викликаються зсередини один транзакції посилаються на загальний пул модулів.

Структура діалогової програми

Структура діалогової програми

Структурна діаграма показує, як код транзакції, екрани, стан графічного інтерфейсу та пул модулів пов'язані з однією й тією ж головною програмою.

Потік процесу для діалогової програми

Потік процесу для діалогової програми

Блок-схема процесу показує чергування між екраном та програмою ABAP: PBO заповнює поля екрана, користувач діє, а PAI обробляє вхідні дані перед викликом наступного екрана.

Як створити програму пулу модулів

Вищезазначені компоненти створюються у фіксованому порядку. Наведені нижче кроки створюють робочу транзакцію з порожнього пулу модулів.

  1. Створіть пул модулів: У SE80 або SE38 створіть програму, назва якої починається з SAPMZ та встановіть тип програми на M – Модульний пулТип не можна змінити пізніше без видалення об'єкта.
  2. Оголосіть глобальні дані: Помістіть оператор TABLES та глобальні змінні в TOP include, який може прочитати кожен діалоговий модуль пулу.
  3. Дизайн екрана: Створіть екран 100 за допомогою Screen Painter (SE51), розмістіть поля введення на макеті та введіть номер наступного екрана в атрибутах екрана.
  4. Напишіть логіку потоку: На вкладці «Логіка потоку» викличте один модуль для PBO та один для PAI, як показано нижче.
  5. Збірка статусу графічного інтерфейсу: Створіть статус за допомогою Меню Painter (SE41) та встановіть його в модулі PBO за допомогою оператора SET PF-STATUS, щоб операції «Зберегти», «Назад» та «Вихід» надходили до програми як коди функцій.
  6. Прив’яжіть код транзакції: У SE93 створіть діалогове вікно транзакції, назвіть пул модулів та введіть 100 як початковий екран.
* Screen 100, flow logic
PROCESS BEFORE OUTPUT.
  MODULE status_0100.

PROCESS AFTER INPUT.
  MODULE user_command_0100.

* Module pool SAPMZDEMO
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS_100'.
  SET TITLEBAR 'TITLE_100'.
ENDMODULE.

MODULE user_command_0100 INPUT.
  CASE sy-ucomm.
    WHEN 'SAVE'.
      PERFORM save_data.
    WHEN 'BACK' OR 'EXIT'.
      LEAVE TO SCREEN 0.
  ENDCASE.
ENDMODULE.

💡 Порада: LEAVE TO SCREEN 0 завершує поточний екран і повертається до точки виклику, що є стандартним способом коректного виходу з діалогової транзакції.

Поширені запитання

CALL SCREEN відкриває новий екран і зберігає екран виклику в стеку, тому обробка повертається до нього. LEAVE TO SCREEN замінює поточний екран, і абоненту нічого не повертається.

Пул модулів під назвою SAPMZDEMO поділено на MZDEMOTOP для глобальних даних, MZDEMOO01 для модулів PBO, MZDEMOI01 для модулів PAI та MZDEMOF01 для підпрограм. Робочий стіл генерує їх автоматично.

Надайте функції кнопки тип E у статусі графічного інтерфейсу та викличте її модуль з командою MODULE exit AT EXIT-COMMAND. Модуль потім запускається перед перевіркою полів, щоб користувач міг залишити екран із недійсними записами.

Так. Помічники штучного інтелекту в інструментах розробки ABAP створюють модулі PBO та PAI, оператор CASE на SY-UCOMM та перевірки полів на основі опису екрана. Сам макет все ще малюється на екрані. Painter.

Dynpros досі проводить кожен класичний SAP Транзакція графічного інтерфейсу. Нові користувацькі інтерфейси зазвичай створюються за допомогою Fiori, а інструменти штучного інтелекту допомагають, зчитуючи існуючу логіку потоку та пропонуючи еквівалентний дизайн сервісу та застосунку.

Підсумуйте цей пост за допомогою: