SAP Обробляти за цінністю та обробляти запит на допомогу
⚡ Розумний підсумок
Процес запиту значення та процес запиту довідки – це події на екрані, що відповідають за F4 та F1 у SAP ABAP. На цій сторінці пояснюються як події, так і оператори FIELD, які їх запускають, а також функціональні модулі, що відображають документацію або можливі записи.

Що таке POH та POV?
По-перше, якщо ви нічого не знаєте про логіку Screen Flow та її використання в SAP, радимо вам ознайомитися з нашим навчальним посібником з Програма діалогу.
POH та POV – це дві події на екрані, які відповідають на запит довідки від користувача. POH реагує на клавішу F1 та пояснює значення поля, тоді як POV реагує на клавішу F4 та перераховує значення, які поле приймає. Обидві оголошуються в логіці потоку екрана, поруч із PBO та PAI.
| Критерії | POH (Обробка на запит допомоги) | POV (Обробка за запитом значення) |
|---|---|---|
| Спрацьовує | Клавіша F1 | Клавіша F4 або кнопка Можливі записи |
| Мета | Пояснює значення поля | Пропонує значення, які приймає поле |
| Джерело за замовчуванням | Документація елементів даних у словнику ABAP | Фіксовані значення, перевірка таблиці або пошук у довідці |
| Транспортування даних | Немає, поле лише відображається | Вибране значення записується назад у поле екрана |
| Типовий функціональний модуль | HELP_OBJECT_SHOW_FOR_FIELD | F4IF_INT_TABLE_VALUE_REQUEST |
Тепер давайте детально розглянемо POH і POV
Обробка запиту на допомогу (POH): Довідка F1
- Щоразу, коли натискається F1, виконується подія POH для зазначеного елемента даних.
- Якщо подія PROCESS ON HELP-REQUEST відсутня в логіці процесу екрана, за основу береться та відображається документація поля у словнику ABAP. Навіть якщо це не відбувається, довідка не відображається.
- Щоб відобразити довідкову документацію поля, ви повинні закодувати таку логіку потоку екрану в події POH:
PROCESS ON HELP-REQUEST FIELD <f> [MODULE <mod>] WITH <num>
- Якщо для цього поля є документація щодо елемента даних для екрана , ви можете відобразити його, вказавши його номер .
- Кількість може бути літералом або змінною. Змінна має бути оголошена та заповнена у відповідній програмі ABAP.
- Зауважте, оператор FIELD не передає вміст поля екрана до програми ABAP у події ПРОЦЕС ЗА ДОВІДКОЮ-ЗАПИТОМ. Він просто показує довідкову документацію. Це воно.
Модуль визначено в програмі ABAP як звичайний модуль PAI. Логіка обробки модуля повинна забезпечувати відображення адекватної довідки для відповідного поля. Замість виклику додаткового екрана з текстовими полями слід використовувати один із наступних функціональних модулів для відображення відповідного SAPдокумент сценарію
HELP_OBJECT_SHOW_FOR_FIELD
- Цей функціональний модуль відображає документацію елементів даних для компонентів будь-якої структури або таблиці бази даних зі словника ABAP.
- Ви передаєте назву компонента та структуру або таблицю в параметри імпорту FIELD і TABLE.
HELP_OBJECT_SHOW
- Використовуйте цей функціональний модуль для відображення будь-яких SAPдокумент сценарію.
- Ви повинні передати клас документа (наприклад, TX для загальних текстів, DE для документації елемента даних) і назву документа в параметри імпорту DOKCLASS і DOKNAME.
- З технічних причин також необхідно передати порожню внутрішню таблицю з типом рядка T.LINE до параметра tables функціонального модуля.
F1 пояснює поле. Наступна подія перераховує, що можна в нього ввести.
Процес за значенням (POV): F4
- Коли користувач вибирає функцію Можливі записи (F4), система відображає можливі вхідні значення для поля (значення, контрольна таблиця, код відповідності), якщо вони були збережені розробником.
- Подія PROCESS ON VALUE-REQUEST завжди обробляється, якщо користувач викликав «Можливі записи».
- Щоб визначити можливі значення для поля на екрані, вам потрібно визначити наступне в події POV логіки екранного потоку:
PROCESS ON VALUE-REQUEST FIELD field name MODULE module name
- Для можливих значень у визначеному вище модулі слід використовувати загальний функціональний модуль HELP_VALUES_GET_WITH_TABLE щоб отримати можливі значення зі словника ABAP.
Є деякі інші функції, які також можна використовувати для довідки щодо введення:
F4IF_FIELD_VALUE_REQUEST
- Динамічно викликає довідку щодо введення словника ABAP.
- Ви можете передати імена компонентів структури або таблиці бази даних словника ABAP до функціонального модуля в параметрах імпорту TABNAME і FIELDNAME.
- Функціональний модуль запускає Словник ABAP довідка щодо введення цього компонента. Зчитуються всі відповідні поля екрана.
- Якщо вказати параметри імпорту DYNPPROG, DYNPNR і DYNPROFIELD, вибір користувача повертається до відповідного поля на екрані.
- Якщо ви вказуєте параметр таблиці RETURN_TAB, замість цього вибір повертається до таблиці.
MODULE VALUE_CARRIER INPUT. CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST' EXPORTING TABNAME = 'DEMOF4HELP' FIELDNAME = 'CARRIER1' DYNPPROG = PROGNAME DYNPNR = DYNNUM DYNPROFIELD= 'CARRIER'. ENDMODULE.
F4IF_INT_TABLE_VALUE_REQUEST
- Цей функціональний модуль відображає список значень, який ви створили в Програма ABAP.
- Список значень передається до функціонального модуля як параметр таблиці VALUE_TAB.
- Якщо вказати параметри імпорту DYNPPROG, DYNPNR і DYNPROFIELD, вибір користувача повертається до відповідного поля на екрані.
- Якщо ви вказуєте параметр таблиці RETURN_TAB, замість цього вибір повертається до таблиці.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING RETFIELD = 'CONNID' DYNPPROG = PROGNAME DYNPNR = DYNNUM DYNPROFIELD = 'CONNECTION' VALUE_ORG = 'S' TABLES VALUE_TAB = VALUES_TAB.
Це все для POH і POV. У разі виникнення сумнівів залишайте свої коментарі.
Як створити довідку F4 з внутрішньої таблиці
Список значень, якого немає в словнику ABAP, створюється всередині програми та передається до F4IF_INT_TABLE_VALUE_REQUEST. Наведені нижче кроки створюють робочу довідку F4 для поля екрана.
- Оголосіть таблицю значень: Створіть внутрішню таблицю, перший стовпець якої містить значення, що записується назад на екран. Заповніть її в модулі PBO або в самому модулі запиту значення.
- Зареєструйте поле в логіці потоку: Додайте на екран PROCESS ON VALUE-REQUEST та з’єднайте поле з FIELD … MODULE …, щоб модуль запускався при натисканні F4.
- Викличте функціональний модуль: Передайте RETFIELD з назвою стовпця, DYNPROFIELD з назвою поля екрана та VALUE_ORG = 'S', оскільки список передається як структурована таблиця.
- Повернути значення: DYNPPROG та DYNPNR ідентифікують програму та екран, тому вибраний рядок записується безпосередньо в поле екрана без додаткового коду.
- Перевірте його: Активуйте екран, натисніть F4 на полі та перевірте, чи відображається список, і чи виділений елемент досягає поля.
* Flow logic of the screen PROCESS ON VALUE-REQUEST. FIELD spfli-connid MODULE f4_connid. * Module in the ABAP program MODULE f4_connid INPUT. DATA: lt_values TYPE STANDARD TABLE OF spfli. SELECT * FROM spfli INTO TABLE lt_values WHERE carrid = spfli-carrid. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'CONNID' dynpprog = sy-repid dynpnr = sy-dynnr dynprofield = 'SPFLI-CONNID' value_org = 'S' TABLES value_tab = lt_values. ENDMODULE.
💡 Порада: Зчитуйте значення іншого поля екрана за допомогою функціонального модуля DYNP_VALUES_READ перед заповненням списку. Таким чином створюється залежна довідка F4, така як пересадки на вже введені авіалінії.
