Навчальний посібник із підекранів ABAP: підекран виклику SAP
⚡ Розумний підсумок
Підекрани ABAP вбудовують один екран в область іншого екрана під час виконання разом з логікою його потоку. На цій сторінці пояснюються області підекранів, оператор CALL SUBSCREEN у PBO та PAI, передача даних та обмеження, що спричиняють помилки під час виконання.

Що таке підекран у SAP ABAP?
Перш ніж читати цей посібник, переконайтеся, що ви знаєте, що таке Програма діалогу є.
- Підекран — це незалежний екран, який відображається в області іншого («головного») екрана.
- Підекрани дозволяють вбудовувати один екран в інший під час виконання. На головному екрані можна включити кілька підекранів.
- Термін підекран застосовується як до екрана, який ви вбудовуєте, так і до області на головному екрані, у якій ви його розміщуєте. У цьому посібнику йдеться про підекранні області. Фактичні екрани, створені через транзакцію SE51, називаються екранами підекранів, якщо вони визначені в атрибутах екрана.
- Коли ви використовуєте підекран, логіка потоку вбудованого екрана також вбудована в логіку потоку головного екрана. Отже, використання підекранів на екранах схоже на використання включення в Програми ABAP.
Щоб використовувати підекран, ви повинні виконати три прості кроки
- Визначте підекранні області на екрані
- Визначте відповідні підекранні екрани
- Включіть підекранний екран у підекранну область.
Крім того, вам потрібно налаштувати рамку підекрана та головного екрана. Його потрібно вказати в полі імені поля.
Крім того, вам також потрібно налаштувати поля на підекрані, щоб вони відображалися на головному екрані. Якщо підекран визначено більшим, ніж доступна область на головному екрані, буде видно лише ту частину підекрана, яка вміщується в доступну область. Площа завжди вимірюється від верхнього лівого кута екрана. Тому вам слід бути належним чином уважним під час визначення підекранних областей і створення підекранів.
ПІДЕКРАН ДЗВІНКУ
приклад
Наприклад, тут ми визначили дві підекранні області на головному екрані та прикріпили два різні підекрани до відповідних областей. Щоразу, коли викликається головний екран, викликається PBO головного екрана. Але перед відображенням також викликаються PBO кожного екрана, доданого до підекранних областей на головному екрані.
На знімку екрана показано головний екран із двома підекранними областями, заповненими двома окремими підекранними екранами.
Ви можете включити допоміжний екран за допомогою оператора 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 підекранного екрана, включеного в підекранну область у події PBO. Це може викликати модулі PAI програми ABAP, у якій визначено підекранний екран. Дані транспортуються між полями з ідентичними назвами на підекрані та програмою ABAP або під час ініціювання події PAI, або у відповідних операторах FIELD у логіці потоку PAI на підекрані.
Як створити та вбудувати підекран
Три кроки, перелічені раніше, виконуються на екрані Painter і в логіці потоку головного екрана. Наведена нижче послідовність створює один головний екран з однією областю підекрану.
- Створіть область підекрану: Відкрийте головний екран, наприклад, екран 100, у розділі Екран Painter (SE51). Виберіть Підекран елемент з панелі елементів, намалюйте його на макеті та введіть назву, наприклад, SUB_AREA, у поле «Назва». Ця назва використовується пізніше в операторі CALL SUBSCREEN.
- Створіть підекранний екран: Створіть другий екран, наприклад, екран 110, і встановіть для нього тип екрана Підекран в атрибутах. Підекранний екран не має поля коду OK та власного стану графічного інтерфейсу.
- Розмістіть поля: Намалюйте поля введення на екрані 110. Зберігайте макет у межах розміру області підекрану, оскільки відображається лише та частина, яка підходить, виміряна від верхнього лівого кута.
- Оголосіть глобальні дані: Помістіть поля у TOP include пулу модулів, щоб і головний екран, і підекран зчитували однакові глобальні змінні.
- Виклик підекрану: Додайте ПІДЕКРАН ВИКЛИКУ до PBO та до PAI головного екрана, як показано нижче.
- Активуйте та протестуйте: Активуйте екрани та програму, потім розпочніть транзакцію. Область підекрану заповнюється екраном 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 TITLEBAR, SET PF-STATUS, SET SCREEN, LEAVE SCREEN або LEAVE TO SCREEN. Це спричинить помилку виконання.
- Вам потрібно викликати його в логіці потоку (як PBO, так і PAI) на головному екрані.
- CALL SUBSCREEN не дозволяється в операторах CHAIN..ENDCHAIN і LOOP ENDLOOP
- Не може мати модуль AT EXIT-COMMAND
- Поля, які ви використовуєте, є глобальними. Вони повинні бути оголошені у верхній частині списку
- Якщо використовувати підекрани з іншого діалогова програма передача даних не відбудеться, якщо ви не додасте спеціальний код.
⚠️ Попередження: Розміщення CALL SUBSCREEN всередині CHAIN … ENDCHAIN або всередині циклу екрану LOOP призводить до синтаксичної помилки, а виклик номера екрана, який не існує, призводить до помилки виконання під час першого відображення.

