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 помощ, като например връзки за вече въведената авиокомпания.
