Разница между пользовательским выходом и выходом клиента в SAP
⚡ Умное резюме
Пользовательские выходы и выходы для клиентов в SAP ABAP — это механизмы расширения, которые добавляют пользовательскую функциональность к стандартным программам без внесения изменений. SAP На этой странице объясняется, какие бывают типы пользовательских выходов, приводятся примеры решения задач, рассматриваются транзакции SMOD и CMOD, пользовательские выходы, а также объясняется разница между этими двумя методами.
Что такое «Выходы для клиентов»?
Выходы клиентов есть «крючки» предоставляемые SAP во многих стандартных программах, экранах и меню, в которых клиенты могут "вешать" Индивидуальная функциональность для удовлетворения бизнес-требований. Подробнее об этом чуть позже…
Главное преимущество заключается в том, что стандарт SAP Объект никогда не изменяется. Пользовательский код находится в зарезервированном включаемом файле или подэкране. SAP Вызовы происходят в нужный момент, поэтому улучшение сохраняется после обновления системы, а не перезаписывается. Поэтому выходы относятся к семейству SAP методы улучшения вместе с новым бизнес-дополнением.
Типы выходов клиентов
Существует три основных типа выхода клиентов:
- Выходы функционального модуля
- Выходы из экрана
- Выход из меню
Функциональный модуль ВыходЭто позволяет клиенту добавлять код через функциональный модуль в определенном месте. SAP прикладная программа
Syntax: CALL CUSTOMER-FUNCTION '004'
Экран ВыходЭто позволяет клиенту добавлять поля на экран. SAP программа через подэкран. Подэкран вызывается в рамках логики потока стандартного экрана.
Format: CALL CUSTOMER-SUBSCREEN CUSTSCR2
Меню Выход: Это позволяет клиенту добавлять товары в выпадающее меню в стандартном формате. SAP программа. Эти элементы можно использовать для вызова дополнительных программ или пользовательских экранов.
Format: +CUS ( additional item in GUI status )
Примеры выходов клиентов
Пример выхода из экрана:
В транзакцию CAT2 – Ввод табеля учета рабочего времени отдел кадров хочет включить интерактивное подтверждение того, что заведомо неверная подача данных является основанием для увольнения.
Пример выхода из меню:
В транзакцию SE38 — Редактор ABAP команда разработчиков хочет включить ссылку меню на транзакцию SE80 — Навигатор объектов для простоты использования.
ДО
ПОСЛЕ
Пример выхода из функционального модуля:
Компания хочет, чтобы банковские реквизиты Продавцов при создании Продавца были обязательным событием. Поэтому должно появиться сообщение об ошибке «Пожалуйста, введите банковские реквизиты».
ДО
ПОСЛЕ
Поиск выходов клиентов
В транзакции СМОД и рассмотреть детали-
Или в транзакции SE81 вы можете использовать соответствующую область применения
Создайте выход для клиентов
Чтобы создать выход клиента, сначала необходимо создать проект в транзакции. CMOD
Later вы назначаете Выход клиента своему проекту.
Весь процесс от нахождения выхода до активации кода непродолжителен и всегда состоит из шести шагов.
- Найдите улучшение: Найдите название расширения в SMOD, например, компонент EXIT_.SAPMF02K_001 для основных данных поставщика.
- Создайте проект: В CMOD введите название проекта, начинающееся с буквы Z или Y, и выберите «Создать».
- Назначьте улучшение: На экране «Назначения расширений» добавьте название расширения, содержащее выходной параметр.
- Напишите код: Откройте модуль выхода функции и поместите код внутрь зарезервированного включаемого файла, начинающегося с ZX.
- Обработка элементов экрана и меню: Для выхода из экрана создайте подэкран CUSTSCR, а для выхода из меню заполните код функции +CUS в статусе графического интерфейса пользователя.
- Активируйте проект: Активируйте проект в CMOD, чтобы вызов функции завершения происходил во время выполнения. Без активации код будет проигнорирован.
💡 Совет: Включение выхода из функционального модуля начинается с ZX, поэтому он переносится вместе с проектом. Никогда не размещайте пользовательскую логику непосредственно в... SAP функциональный модуль, потому что это будет модификация, а не улучшение.
Что такое пользовательский выход (User Exit)?
Пользовательский выход служит той же цели, что и Клиентский выход, но доступен только для SD модуль. Выход реализован как вызов функционального модуля. Код написан разработчиком.
Хорошо знаю, что выход пользователя в SD МВ45AFZZ
- USEREXIT_FIELD_MODIFICATION – для изменения атрибутов экрана.
- USEREXIT_SAVE_DOCUMENT – для выполнения операций, когда пользователь нажимает «Сохранить».
- USEREXIT_SAVE_DOCUMENT_PREPARE
- USEREXIT_MOVE_FIELD_TO_VBAK – когда изменения заголовка пользователя перемещаются в рабочую область заголовка.
- USEREXIT_MOVE_FIELD_TO_VBAP – когда изменения пользовательского элемента переносятся в SAP рабочая область элемента
Пользовательский выход технически представляет собой подпрограмму (форму) внутри SAP Включая, поэтому он редактируется напрямую и требует ключа доступа. Это основное практическое отличие от пользовательского выхода, которое будет кратко изложено в следующем разделе.
Выход пользователя против выхода клиента
Оба метода добавляют пользовательское поведение к стандартному. SAPОднако они различаются по масштабу, технологиям и безопасности обновлений. В таблице ниже приведено их сравнение.
| Критерии | Выход пользователя | Выход клиента |
|---|---|---|
| Доступность | только SD-модуль | По всем SAP модули |
| Техника | Подпрограмма (FORM) в SAP включают, например, MV45AFZZ | Выход из функционального модуля, экрана или меню управляется в SMOD и CMOD. |
| Доступ к ключевым | Требуется ключ доступа для внесения изменений. | Ключ доступа не требуется. |
| Upgrade поведение | Необходимо проверить при обновлении с помощью SPAU. | Upgrade сейф, вызванный из зарезервированного включения |
| Управляемый | Отредактировано непосредственно в включаемом файле. | Активировано в рамках проекта CMOD |
Выходы для клиентов являются более безопасным и универсальным вариантом из двух. Для улучшений, недоступных ни одним из этих выходов, SAP Позже был представлен надстройочный модуль для бизнеса.
Выходы клиентов против BAdI
A Дополнение для бизнеса (BAdI) является объектно-ориентированным преемником пользовательского выхода. Вместо зарезервированного включения, BAdI определяет интерфейс, а пользовательская логика находится в классе, который его реализует. Это дает два преимущества, которых нет у пользовательского выхода.
- Множество реализаций: Многофункциональный BAdI позволяет реализовать несколько независимых вариантов одного и того же расширения, в то время как пользовательский выход позволяет реализовать только один.
- Объектно-ориентированное программирование: BAdI работает с методами и классами, поэтому он подходит для современной разработки на основе ABAP Objects и упрощает фильтрацию по стране или бизнес-сценарию.
Практическое правило простое: используйте существующий пользовательский выход или выход для клиента, если точка расширения уже существует, и используйте BAdI, если требуется новая, многократно используемая точка расширения.









