SAP Обробляти за цінністю та обробляти запит на допомогу

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

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

  • Мета POH: ПРОЦЕС ЗАПИТУ НА ДОПОМОГУ реагує на F1 та показує документацію поля, що зберігається у словнику ABAP.
  • 🔎 Мета POV: ПРОЦЕС ЗА ЗАПИТОМ ЗНАЧЕННЯ реагує на F4 та показує можливі записи, визначені значеннями, таблицю перевірок або пошукову довідку.
  • 🧾 Резервне правило: Коли подія POH відсутня, система повертається до документації елемента даних і нічого не відображає, якщо вона також відсутня.
  • 🚫 Ліміт транспортування: Оператор FIELD у POH не переносить поле екрану до програми, оскільки він лише відображає довідку.
  • 📚 Довідкові модулі: HELP_OBJECT_SHOW_FOR_FIELD відображає документацію елементів даних, а HELP_OBJECT_SHOW відображає будь-які SAPдокумент сценарію.
  • 📋 Модулі цінності: F4IF_FIELD_VALUE_REQUEST запускає довідку з введення словника, а F4IF_INT_TABLE_VALUE_REQUEST відображає список, побудований усередині програми.
  • ↩️ Зворотний шлях: DYNPPROG, DYNPNR та DYNPROFIELD повертають вибране значення в поле екрана, тоді як RETURN_TAB повертає його в таблицю.

SAP Процес на основі цінності та процес на основі запиту на допомогу

Що таке 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 для поля екрана.

  1. Оголосіть таблицю значень: Створіть внутрішню таблицю, перший стовпець якої містить значення, що записується назад на екран. Заповніть її в модулі PBO або в самому модулі запиту значення.
  2. Зареєструйте поле в логіці потоку: Додайте на екран PROCESS ON VALUE-REQUEST та з’єднайте поле з FIELD … MODULE …, щоб модуль запускався при натисканні F4.
  3. Викличте функціональний модуль: Передайте RETFIELD з назвою стовпця, DYNPROFIELD з назвою поля екрана та VALUE_ORG = 'S', оскільки список передається як структурована таблиця.
  4. Повернути значення: DYNPPROG та DYNPNR ідентифікують програму та екран, тому вибраний рядок записується безпосередньо в поле екрана без додаткового коду.
  5. Перевірте його: Активуйте екран, натисніть 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, така як пересадки на вже введені авіалінії.

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

Ні те, ні інше. F1 та F4 переривають екран і запускають власну подію, а потім повертаються до того самого екрана. Звичайна обробка PAI починається лише тоді, коли користувач запускає звичайний функціональний код.

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

Передайте DYNPROFIELD з назвою стовпця та використовуйте GET CURSOR LINE щоб знайти рядок. Потім функціональний модуль записує значення у правильний рядок елемента керування на наступному PBO.

Так. Помічники штучного інтелекту в інструментах розробки ABAP пишуть логіку потоку POV, SELECT, який заповнює таблицю значень, та виклик F4IF_INT_TABLE_VALUE_REQUEST з правильними параметрами RETFIELD та DYNPROFIELD.

Ні. F1 все ще читає документацію, що зберігається в словнику ABAP. Помічники штучного інтелекту, такі як SAP Джоуль відповідає на запитання простою мовою біля екрана, що доповнює польову документацію, а не замінює її.

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