Учебное пособие по подэкранам ABAP: вызов подэкрана в SAP

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

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

  • 🪟 Основное определение: Дополнительный экран — это независимый экран, отображаемый в определенной области основного экрана, и несколько дополнительных экранов могут использовать один основной экран.
  • 🧩 Включите аналогию: Логика выполнения встроенного экрана встраивается в логику выполнения основного экрана, точно так же, как включаемый файл вставляется в программу.
  • 🪜 Три шага: Определите область подэкрана, определите экран подэкрана, а затем включите этот экран в эту область.
  • ⌨️ Звонок в PBO: ВЫЗОВ ДОПОЛНИТЕЛЬНОГО ЭКРАНА ВКЛЮЧАЯ Присваивает области четырехсимвольный номер экрана и запускает соответствующую логику PBO.
  • ⌨️ Звонок PAI: ВЫЗОВ ДОПОЛНИТЕЛЬНОГО ЭКРАНА В PAI выполняется логика PAI встроенного экрана и передаются данные полей с одинаковыми именами.
  • ???? Ограничения: Дополнительный экран не может использовать команды SET PF-STATUS, SET TITLEBAR, SET SCREEN, LEAVE SCREEN, собственный код OK_CODE или команду AT EXIT-COMMAND.
  • 🌐 Глобальные поля: Поля, используемые в дополнительном экране, являются глобальными полями, объявленными в основном включаемом файле программы.

Подэкраны ABAP

Что такое подэкран в SAP АБАП?

Прежде чем читать это руководство, убедитесь, что вы понимаете, что такое... Диалоговая программа есть.

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

Чтобы использовать подэкран, необходимо выполнить три простых шага

  1. Определите подэкранные области на экране
  2. Определите подходящие экраны подэкранов
  3. Включите экран подэкрана в область подэкрана.

Также вам необходимо настроить рамку подэкрана и главного экрана. Вам нужно дать ему имя в поле имени поля.

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

ВЫЗОВ ПОДЭКРАНА

ПРИМЕР

Например, здесь мы определили две области подэкрана на главном экране и прикрепили два разных подэкрана к соответствующим областям. При каждом вызове главного экрана вызывается PBO главного экрана. Но перед отображением также вызываются PBO каждого экрана, прикрепленные к подэкранным областям на главном экране.

Подэкран вызова в SAP

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

Вы можете включить подэкран с помощью оператора CALL SUBSCREEN в логику потока главного экрана.

Вызов подэкрана в PBO

Чтобы включить подэкран в область подэкрана главного экрана и вызвать его логику потока PBO, используйте следующий оператор в событии PBO главного экрана:

PROCESS BEFORE OUTPUT.

CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.

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

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

Вызов подэкрана в PAI

Чтобы вызвать логику потока PAI подэкрана, используйте следующий оператор в логике потока PAI главного экрана:

PROCESS AFTER INPUT.

CALL SUBSCREEN <area>.

Этот оператор включает в себя логику потока PAI экрана подэкрана, включенного в область подэкрана. на мероприятии ПБО. Это может вызвать модули PAI программы ABAP, в которых определен подэкран. Данные передаются между полями с одинаковыми именами на подэкране и в программе ABAP либо при запуске события PAI, либо при соответствующих операторах FIELD в логике потока PAI на подэкране.

Как создать и встроить дополнительный экран

Три описанных ранее шага выполняются на экране. Painter и в логике работы главного экрана. Приведенная ниже последовательность создает один главный экран с одной областью подэкранов.

  1. Создайте область подэкрана: Откройте главный экран, например, экран 100, в меню «Экран». Painter (SE51). Выберите Подэкран Выберите элемент из панели элементов, нарисуйте его на макете и введите имя, например, SUB_AREA, в поле «Имя». Это имя будет использовано позже в операторе CALL SUBSCREEN.
  2. Создайте дополнительный экран: Создайте второй экран, например, экран 110, и установите для него тип экрана. Подэкран в атрибутах. Дополнительный экран не имеет поля для ввода кода OK и собственного статуса графического интерфейса пользователя.
  3. Разместите поля: Нарисуйте поля ввода на экране 110. Размещайте элементы в пределах области подэкрана, поскольку отображается только та часть, которая помещается, отмеряя от верхнего левого угла.
  4. Объявите глобальные данные: Разместите поля в верхнем включаемом файле пула модулей, чтобы и главный, и дополнительный экраны считывали одни и те же глобальные переменные.
  5. Вызовите дополнительный экран: Добавьте CALL SUBSCREEN в PBO и в PAI главного экрана, как показано ниже.
  6. Активируйте и протестируйте: Активируйте экраны и программу, затем начните транзакцию. Область подэкрана заполняется экраном 110, а его модули работают внутри логики потока экрана 100.
* Flow logic of the main screen 100
PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  CALL SUBSCREEN sub_area INCLUDING 'SAPMZDEMO' '0110'.

PROCESS AFTER INPUT.
  CALL SUBSCREEN sub_area.
  MODULE user_command_0100.

💡 Совет: Если в зависимости от ввода пользователя необходимо отображать разные подэкраны, сохраняйте номер экрана в глобальной переменной, а не в литерале. Переменная должна иметь одинаковое имя как в программе, так и в операторе CALL SUBSCREEN.

Вопросы для запоминания

  • Имена элементов подэкранов внутри экрана должны быть уникальными.
  • У вас не должно быть OK_CODE или FCODE, прикрепленных к подэкрану. OK_CODE главного экрана сам по себе является OK_CODE подэкрана.
  • Подэкраны не могут иметь диалоговые модули, содержащие SET TITLBAR, SET PF-STATUS, SET SCREEN, LEAVE SCREEN или LEAVE TO SCREEN. Это приведет к ошибке выполнения.
  • Вам нужно вызвать его в логике потока (как PBO, так и PAI) на главном экране.
  • CALL SUBSCREEN не разрешен в операторах CHAIN..ENDCHAIN ​​и LOOP ENDLOOP.
  • Не может быть модуля AT EXIT-COMMAND
  • Поля, которые вы используете, являются глобальными полями. Они должны быть объявлены в верхней части include
  • Если вы используете подэкраны из другого диалоговая программа передача данных не произойдет, если вы не добавите определенный код.

⚠️ Предупреждение: Размещение команды CALL SUBSCREEN внутри CHAIN ​​… ENDCHAIN ​​или внутри цикла экрана LOOP приводит к синтаксической ошибке, а вызов несуществующего номера экрана приводит к ошибке выполнения при первом отображении.

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

Tabstrip — это контейнер, вкладки которого сами по себе являются областями подэкранов. Подэкран — это контент, а Tabstrip лишь определяет, какой из этих подэкранов в данный момент виден пользователю.

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

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

Да. Искусственный интеллект-ассистенты считывают короткий дамп и логику потока, а затем указывают на обычные причины, такие как отсутствие номера экрана, запрещенный вызов SET PF-STATUS внутри подэкрана или вызов CALL SUBSCREEN, размещенный внутри CHAIN.

Инструменты анализа на основе ИИ сканируют пул модулей, обнаруживают экраны с дублирующимися макетами и предлагают один многоразовый подэкран с операторами CALL SUBSCREEN, которые их заменяют. Предложение проверяется перед удалением экранов.

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