Учебное пособие по программированию диалоговых окон: пул модулей в SAP ABAP

⚡ Умное резюме

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

  • 💬 Основное определение: Диалоговая программа обрабатывает любое взаимодействие с пользователем, например, ввод данных, выбор пункта меню или нажатие кнопки, и может обновлять базу данных.
  • 🅼 Тип программы: Диалоговые программы представляют собой пулы модулей типа M, не могут работать самостоятельно и должны быть привязаны как минимум к одному коду транзакции с начальным экраном.
  • 🧩 Компоненты: Код транзакции, экраны, статус графического интерфейса пользователя, пул модулей ABAP и логика потока вместе образуют одно диалоговое приложение.
  • 🔄 Логика потока: PBO запускается до появления экрана, PAI запускается после действия пользователя, POH отвечает на F1, а POV отвечает на F4.
  • 🖥️ Динпро: Экран вместе с логикой выполнения представляет собой dynpro, и каждый dynpro управляет ровно одним шагом диалога.
  • 📦 Модульный пул: Все динамические экраны, вызываемые в рамках одной транзакции, ссылаются на общий пул модулей, содержащий модули диалогов.
  • 🇧🇷 Путь сотворения: SE80 создает пул модулей, SE51 проектирует экран, SE41 формирует статус графического интерфейса пользователя, а SE93 связывает код транзакции.

SAP Диалоговое программирование ABAP

Что такое диалоговое программирование?

SAP-ABAP поддерживает два типа программ: программа отчетов и программа диалога.

Если ваша программа ABAP требует ввода данных пользователем, используется диалоговое программирование.

Диалоговое окно пользователя — это любая форма взаимодействия между пользователем и программой, и оно может представлять собой любой из следующих типов взаимодействия.

  • Ввод данных
  • Выбор пункта меню
  • Нажатие кнопки
  • Щелчок или двойной щелчок по записи

Диалоговая программа также используется, когда нам нужно перемещаться между экранами вперед и назад.

Диалоговые программы создаются с типом «М» – пул модулей. Они не могут выполняться независимо и должны быть привязаны хотя бы к одному коду транзакции, в котором вы указываете начальный экран.

Разница между отчетными и диалоговыми программами

Разница между отчетными и диалоговыми программами

Программа доклада:

Отчет — это программа, которая обычно считывает и анализирует данные в таблицах базы данных без изменения база данных.

Диалоговая программа:

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

Критерии Отчет о программе Диалоговая программа
Тип программы Тип 1, исполняемый файл Тип М, модульный пул
Доступ к базе данных Считывает и анализирует данные. Считывает и изменяет данные.
Типы Работает самостоятельно Выполняется только через код транзакции.
Управление События, описанные в отчете. Логика отображения потока данных на каждом экране

Последовательность экранов диалогового окна проще отследить на примере.

Пример обработки транзакции в диалоговом программировании

Пример обработки транзакции

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

Компоненты диалоговой программы

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

Компонентами диалоговой программы являются:

Код транзакции

  • Код транзакции запускает последовательность экранов.
  • Коды транзакций создаются в браузере репозитория в инструментальных средствах ABAP или с помощью транзакции SE93.
  • Код транзакции связан с программой ABAP и начальным экраном.
  • Вы можете запустить последовательность экранов из любой программы ABAP, используя оператор CALL SCREEN.

Экраны

  • Каждый диалог в SAP система управляется с помощью одного или нескольких экранов.
  • Вы создаете экраны с помощью Screen Painter в ABAP Workbench посредством транзакции SE51
  • Каждый экран принадлежит ABAP-программа.
  • Эти экраны состоят из «маски экрана» или «макета» и логики потока. Экран имеет макет, определяющий положение полей ввода/вывода и других графических элементов, таких как флажки и переключатели. Логика потока определяет логическую обработку на экране.

Статус графического интерфейса

  • Каждый экран имеет статус(ы) графического интерфейса, которые являются независимыми компонентами программы.
  • Это управляет строками меню, стандартной панелью инструментов, панелью инструментов приложения, с помощью которой пользователь может выбирать функции в приложении.
  • Вы создаете их в ABAP Workbench с помощью меню Painter.

ABAP-программа

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

Логика потока экрана

Логика Screen Flow в основном разделена на четыре компонента.

  • Процесс перед выводом (ПБО) событие: которое обрабатывается перед отображением экрана
  • Процесс после ввода (PAI) событие: которое обрабатывается после действия пользователя на экране.
  • Обработка запроса на помощь (РОН): который обрабатывается при нажатии F1
  • Обработка запроса значения (POV): который обрабатывается при нажатии F4

POH и POV подробно описаны на странице, посвященной... процесс обработки запроса на оценку стоимости и процесс обработки запроса на помощь.

Динпро

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

Пул модулей ABAP

  • При возникновении события PBO или PAI экран Dynpro вызывает диалоговую программу ABAP. Совокупность таких программ называется пулом модулей ABAP.
  • Например, модули, вызываемые при событии PAI, используются для проверки ввода пользователя и запуска соответствующих шагов диалога, таких как задача обновления.
  • Все динпросы будут вызваны изнутри one транзакции относятся к общему пулу модулей.

Структура диалоговой программы

Структура диалоговой программы

На структурной диаграмме показано, как код транзакции, экраны, состояние графического интерфейса пользователя и пул модулей связаны с одной и той же основной программой.

Последовательность действий для диалоговой программы

Последовательность действий для диалоговой программы

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

Как создать программу пула модулей

Компоненты, указанные выше, создаются в фиксированном порядке. Шаги, описанные ниже, формируют рабочую транзакцию из пустого пула модулей.

  1. Создайте пул модулей: В транзакции SE80 или SE38 создайте программу, имя которой начинается с SAPMZ и установите тип программы на М – Модульный пулТип нельзя изменить позже без удаления объекта.
  2. Объявите глобальные данные: Разместите оператор TABLES и глобальные переменные в верхнем включаемом файле, который сможет прочитать каждый диалоговый модуль пула.
  3. Создайте дизайн экрана: Создайте экран 100 с помощью Screen Painter (SE51), разместите поля ввода на макете и введите номер следующего экрана в атрибутах экрана.
  4. Напишите логику выполнения: На вкладке «Логика потока» вызовите один модуль для PBO и один для PAI, как показано ниже.
  5. Создайте графический интерфейс пользователя для отображения статуса: Создайте статус с помощью меню. Painter (SE41) и установите его в модуле PBO с помощью оператора SET PF-STATUS, чтобы команды Save, Back и Exit выполнялись программой как коды функций.
  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 завершает текущий экран и возвращает к точке вызова, что является стандартным способом корректного завершения диалоговой транзакции.

Часто задаваемые вопросы (FAQ)

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, а инструменты искусственного интеллекта помогают, анализируя существующую логику потока и предлагая эквивалентный дизайн сервиса и приложения.

Подведем итог этой публикации следующим образом: