Как и обещал (хотя конечно это тема АБАП-форума, там лучше это дело объяснят) на примере тр.MB1C (это чисто руководство к действию, без какой либо теории):
По поводу теории, рекомендую:
http://www.sapboard.ru/forum/viewtopic.php?t=10237
1. Во первых, нужно убедиться что в системе установлен параметр
abap/fieldexit = 'yes' (тр.
RZ11 - можно проверить что установлено, изменение параметра - это дело вашего админа) - иначе fieldexit работать не будут.
2. Определяем программу, экран и элемент данных (ЭД) на который хотим повесить fieldexit: запускаем
MB1C; первый экран; позиция подробно; встаем на поле
Сумма во ВВ и жмем F1-Техн.информация. Получаем: программа
SAPMM07M, экран
0410, ЭД -
EXBWR
3. Запускаем отчет (через SE38)
RSMODPRF - на первом экране можно ничего не вносить - сразу на выполнение. Дальше по меню: Поле пользователя - Создать. Указываем ЭД и жмем Enter.
4. Система предлагает создать ФМ
FIELD_EXIT_EXBWR, создаем.
ФМ имеет входящий параметр
INPUT, и экспортный
OUTPUT. В
INPUT будет передаваться значение, введенное на экране. В
OUTPUT мы передаем измененное значение. Вот, пример того, как можно сделать, чтобы стоимость всегда была равна 100 для
531 ВД:
Code:
FUNCTION FIELD_EXIT_EXBWR.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" REFERENCE(INPUT)
*" EXPORTING
*" REFERENCE(OUTPUT)
*"----------------------------------------------------------------------
field-symbols: <fs>.
assign: ('(SAPMM07M)MSEG-BWART') to <fs>.
if sy-subrc = 0.
case <fs>.
when '531'.
output = 100.
when others.
endcase.
endif.
ENDFUNCTION.
5. Активируем ФМ и возвращаемся в
RSMODPRF
6. Присваиваем наше расширение экранному полю программы/экрана
SAPMM07M 0410: Кнопка
Присв.прогр/экран - поле пользователя оставляем пустым, ну а что внести в поля
Программа и
Экран думаю сам догадаешься
7. Активируем наше созданное расширение (поле пользователя, или fieldexit)
8. Запускаем
MB1C и проверяем работу (правда вот с отладчиком в ФМ
FIELD_EXIT_EXBWR не попадешь

- это конечно минус )