user exit sap что это

BADI. Поиск и использование

Business Add-Ins

User-Exits позволяют клиентам прикрепить дополнительный код для стандартных SAP исходный код без необходимости изменения исходного объекта. Business Add-Ins SAP методика расширений, основанная на ABAP Objects.

Служат для того, чтобы вносить модификацию в алгоритм обработки объекта и свести к минимуму работы при обновлении системы.

Основным преимуществом данной концепции является возможность повторного использования. BAdI может быть реализован несколько раз.

Как найти BADI которая срабатывает при конкретном действии :

В классе cl_exithandler в методе GET_INSTANCE ставим точку останова. В exit_name будет вызываемая в данный момент времени BADI.

Sxv_get_clif_by_name – ставим точку останова. В name будет имя BADI.

Работа с BADI

Рис 1.

Если установлена «1» (Рис 1.) – возможно одновременно иметь несколько активных реализаций.

Если установлена «2» (Рис 1.) – срабатывание реализаций зависит от фильтра. Для случаев если фильтр отсутствует необходимо ставить проверки в начале каждого реализованного метода BADI т.к. реализации срабатывают для всех инфо-типов (например).

Работа с реализациями происходит в пункте меню «Внедрение» (Рис2.) При создании внедрения BADI создается класс методы которого необходимо переопределить согласно нашей задачи.

Рис 2.

При создании BADI с фильтром есть возможность указать информацию для фильтра. (Рис 3.)

Рис 3. Рис 4.

Активные реализации (то есть те которые срабатывают) помечены желтым цветом, деактивированные – синим. (Рис 4.)

Рис 5.

1 – активировать реализацию

2 – деактивировать реализацию (в данном состоянии код выполнятся не будет).

Часто используемые BADI в HR

HRBAS00_RELAT – BADI для соединений.

HRPAD00INFTY – BADI для администрирования персонала

HRBAS00INFTY – BADI для инфо-типов организационного менеджмента.

Источник

Расширение SAP для начинающих. User-exit, BADi, Enhancement

Несмотря на то, что система многофункциональна и избыточна, все же достаточно часто требуется вносить изменения в ее логику работы. Начинающие консультанты часто спрашивают, как же можно расширить логику работы системы для требований бизнеса? Не все можно сделать галочками, это верно. Иногда мы влезаем в исходные коды вендора, чтобы сделать свое расширение SAP, свою логику работы. Для нас, с точки зрения HR, представляют интерес два вида расширений системы.

User-exit

Самая старая технология, но и наиболее простая и универсальная. Суть заключается в том, что SAP в своих программах делает вызов специальных Includes (программ), которые начинаются с букв ZX и поэтому разрешены для изменения консультантам. То есть, мы находим такой вызов, создаем Include (программу) и в ней пишем любую логику. При компиляции система видит, что появился в базе данных такой объект — Include, вставляет его содержимое на то место, где был вызов. Так получается, с точки зрения системы, что этот кусок кода как будто бы уже был в самой программе. Например, форма Т-2, программа HRULT2_2004, инклуд HRUIT2_PRC_2004. Смотрим событие get pernr:

* user-exit
include zx_hrult2_pernr.
pn-endda = p_datep.
if gf_fill_period_to = ‘X’.
pnpendda = p_datep.
endif.

Что мы видим? В программе есть user-exit с названием zx_hrult2_pernr. Можно два раза на него кликнуть и тем самым создать программу. Теперь мы в этом Include можем писать свой код, который будет подставлен вместо строчки include zx_hrult2_pernr.

Другой пример из того же отчета:

Насколько мне известно, нет какого-либо единого наглядного каталога, где можно было бы посмотреть все user-exits. Каждую программу нужно смотреть индивидуально. Часть user-exit можно посмотреть, создать и документировать через транзакцию CMOD — управление проектами расширений. Запускаем транзакцию CMOD, в меню «Утилиты» выбираем «SAP-расширения». И по ключевым словам ищем доступные расширения. Искать проще по маске по словам PY, PT, PA, HR, OM для поля «Прикладной компонент». К этому полю, почему-то, нет средства поиска.

Это уже новая технология. Расшифровывается как Business Add-Ins (бизнес-дополнения). BAdi состоит из двух сущностей: определение и реализация. Определение — это своего рода описание объекта с указанием, что он может хранить (какие есть атрибуты), что делать (какие есть методы). Это определенная модель, которая описывает, что обязательно должно быть на входе и на выходе, какие параметры могут быть, их типы и правила вызова. Своего рода абстракция: все мы понимаем, что велосипед состоит из колес, педалей, рамы, руля, цепи, которая соединяет педали с колесом через муфту. Но реализация может быть разной. Так и здесь. Концептуальный проект велосипеда — это определение BAdi, а его конкретная реализация в горный, шоссейный или дамский велосипед — это реализация BAdi. Чтобы определить модель велосипеда (какую именно реализацию нужно вызвать в программе) есть понятие фильтра. Фильтр — это элемент данных в определении BAdi. При вызове программа заполняет его каким-то значением (как решит программист). Система смотрит все реализации этого определения BAdi, у которых стоит такое же значение фильтра (или фильтр просто не используется как критерий), и вызывает подходящую реализацию. По этому принципу, например, сделана косвенная оценка видов оплаты. Посмотрите определение HR_INDVAL (тр. SE18) и реализации HR_IV_* (тр. SE19).

Читайте также:  какие симптомы если грыжа на спине

Пример вызова данного BAdi с косвенной оценкой можно посмотреть в процедуре indbw в функциональном модуле RP_EVALUATE_INDIRECTLY. В данном случае вызов не совсем очевиден, но понять принцип работы можно.

Транзакции для создания BAdi: SE18 — создание определений, SE19 — создание реализаций.

Источник

Практические рекомендации по поиску user-exit-ов (пользовательских расширений) в стандартном коде

Неловкин Александр Николаевич

Chief Software Engineer

Как консультантам, так и разработчикам системы SAP приходится сталкиваться с необходимостью расширить стандартную функциональность системы. Одним из путей расширения функциональности является использование пользовательских расширений (USER-EXIT). Вопросу поиска таких расширений в стандартных приложениях SAP посвящена данная статья.

Как показывает опыт внедрения и сопровождения систем SAP ERP, почти 30-50 % всех ABAP разработок составляют расширения стандартной функциональности при помощи пользовательских расширений (user-exit).

Итак, в рамках данной статьи рассматриваются приёмы поиска в исходном коде user-exit-ов, а именно: customer-exit и BAdi (BusinessAdd-Ins). Новомодные технологии, такие, как Enhancements Spots, рассматривать в данной статье не будем. Их я использую, как правило, в крайнем случае, т.к. не имея рамок, накладываемых интерфейсом во всех вышеупомянутых технологиях, Enhancements Spots провоцирует бесконтрольно вмешательство в логику обработки данных, что может привести к нарушению их целостности.

Применение данной методики является альтернативой применению различных программ, выдающих для заданной программы/транзакции список user-exit-ов. Применение таких программ имеет один существенный недостаток – не даются ответы на вопросы:

Предлагаемая методика (несмотря на её громоздкость) требует меньших трудозатрат за счёт того, что отсекает все «лишние» пользовательские расширения.

Рассмотрим предлагаемую методику на примере решения задачи: при создании в системе кредитора исключить появление двойника.

Для решения этой задачи необходимо поискать в системе дебитора с таким же Номером плательщика налога (т.е. выяснить, не заведена ли в систему информация об этом лице как о дебиторе). Если поиск оказался удачным, то следует заполнить поле «Дебитор» в транзакции ввода кредитора номером найденного дебитора. Для создания кредитора пользователи используют транзакцию XK01 (Ввод кредитора).

Технически, для реализации решения этой задачи нам нужно будет взять из данных создаваемого кредитора (табл. LFA1) значение поля «РегНалогНомер-1» (STCD1), сделать запрос к таблице данных существующих дебиторов (KNA1), попытаться найти в ней запись со значением поля STCD1 равным нашему значению и, если поиск успешен, скопировать из найденной записи поле KNA1-KUNNR в поле LFA1-KUNNR.

1) Запускаем транзакцию (в нашем случае XK01)

3) Непосредственно перед нажатием на кнопку «Сохранить», набираем в строке команд «/h» и нажимаем Enter. В строке состояния (внизу окна) должно появиться сообщение «Отладка включена»

4) Нажимаем «Сохранить» и попадаем в отладчик. (рис.1)

Читайте также:  какие тату на лице у моргенштерна

6) На закладке «ABAP команда» вписываем «call customer-function» (рис.3)

Справка: Вызов customer-exit осуществляется оператором CALL CUSTOMER-FUNCTION.

7) На закладке «Метод» заносим «CL_EXITHANDLER» и «GET_INSTANCE» соответственно в поля «Имя класса» и «Имя метода» и нажимаем «Дальше» (кнопка ). (рис.4)

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

Источник

User exit sap что это

BAdI (или Business Add-Ins) появились уже в 4.7 версии, но я там не был, поэтому то, что я здесь написал, справедливо для версии ERP2005.

Запускаем SE24, указываем класс «cl_exithandler».
Тыкаем «Просмотр», в появившемся списке тыкаем в метод GET INSTANCE 2 (два) раза быстро (double click). Открывается исходный код. Переходим на строку CASE sy-subrc. (Это в начале, у меня это строка 28 ).
Ставим бряк на эту строку.

Запускаем нужную нам транзакцию, например, me21n. Вылезает окно отладчика, смотрим содержимое EXIT_NAME. Для перехода к следующему сработавшему BAdI нажимаем F8.

_________________
Eritis sicut Deus, scientes bonum et malum.

Последний раз редактировалось SAA Чт, авг 14 2008, 07:36, всего редактировалось 3 раз(а).

Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan

Вот прога, с помощью которой это ( найти Exit-ы и BADI ) сделать проще (к сожалению не помню откуда ее взял, так что прямой ссылки на источник-оригинал дать не могу):

REPORT ZPM_X_EXIT_BADI NO STANDARD PAGE HEADING
LINE-SIZE 80 LINE-COUNT 65 MESSAGE-ID ZM.

TABLES : TSTC,
TADIR,
MODSAPT,
MODACT,
TRDIR,
TFDIR,
ENLFDIR,
SXS_ATTRT,
TSTCT.

DATA : JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE.
DATA : FIELD1(30).
DATA : V_DEVCLASS LIKE TADIR-DEVCLASS.
DATA wa_tadir type tadir.

IF NOT P_TCODE IS INITIAL.
SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.

ELSEIF NOT P_PGMNA IS INITIAL.
TSTC-PGMNA = P_PGMNA.
ENDIF.

IF SY-SUBRC EQ 0.
SELECT SINGLE * FROM TADIR
WHERE PGMID = ‘R3TR’
AND OBJECT = ‘PROG’
AND OBJ_NAME = TSTC-PGMNA.

MOVE : TADIR-DEVCLASS TO V_DEVCLASS.

IF SY-SUBRC NE 0.
SELECT SINGLE * FROM TRDIR
WHERE NAME = TSTC-PGMNA.
IF TRDIR-SUBC EQ ‘F’.
SELECT SINGLE * FROM TFDIR
WHERE PNAME = TSTC-PGMNA.

SELECT SINGLE * FROM ENLFDIR
WHERE FUNCNAME = TFDIR-FUNCNAME.

SELECT SINGLE * FROM TADIR
WHERE PGMID = ‘R3TR’
AND OBJECT = ‘FUGR’
AND OBJ_NAME EQ ENLFDIR-AREA.

MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
ENDIF.
ENDIF.

SELECT * FROM TADIR INTO TABLE JTAB
WHERE PGMID = ‘R3TR’
AND OBJECT in (‘SMOD’, ‘SXSD’)
AND DEVCLASS = V_DEVCLASS.

SELECT SINGLE * FROM TSTCT
WHERE SPRSL EQ SY-LANGU
AND TCODE EQ P_TCODE.

LOOP AT JTAB into wa_tadir.
at first.
FORMAT COLOR COL_HEADING INTENSIFIED ON.

endif.
FORMAT COLOR COL_GROUP INTENSIFIED ON.

2 wf_object2,
105 SY-VLINE.
endat.

case wa_tadir-object.
when ‘SMOD’.
wf_smod = wf_smod + 1.
SELECT SINGLE MODTEXT into wf_txt
FROM MODSAPT
WHERE SPRSL = SY-LANGU
AND NAME = wa_tadir-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) ‘No userexits or BADis exist’.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) ‘Transaction does not exist’.
ENDIF.

data : wf_object type tadir-object.
clear wf_object.

GET CURSOR FIELD FIELD1.
CHECK FIELD1(8) EQ ‘WA_TADIR’.
read table jtab with key obj_name = sy-lisel+1(20).
move jtab-object to wf_object.

case wf_object.
when ‘SMOD’.
SET PARAMETER ID ‘MON’ FIELD SY-LISEL+1(10).

CALL TRANSACTION ‘SMOD’ AND SKIP FIRST SCREEN.
when ‘SXSD’.
SET PARAMETER ID ‘EXN’ FIELD SY-LISEL+1(20).
CALL TRANSACTION ‘SE18’ AND SKIP FIRST SCREEN.
endcase.

Последний раз редактировалось OlegDm Ср, ноя 21 2007, 06:23, всего редактировалось 1 раз.

Директор

Зарегистрирован:
Чт, авг 18 2005, 17:00
Сообщения: 1174
Откуда: РФ

Модератор

Зарегистрирован:
Чт, май 19 2005, 12:34
Сообщения: 1941
Откуда: НК
Пол: Мужской

_________________
Eritis sicut Deus, scientes bonum et malum.

Старший специалист

Зарегистрирован:
Чт, авг 02 2007, 14:26
Сообщения: 442
Откуда: S/4 HANA
Пол: Мужской

Читайте также:  какие сигналы могут подаваться предупредительными светофорами перед входными светофорами
Менеджер

Зарегистрирован:
Вт, авг 17 2004, 10:25
Сообщения: 627

Начинающий

Зарегистрирован:
Чт, ноя 22 2007, 18:33
Сообщения: 1

Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan

Почетный гуру

Зарегистрирован:
Чт, сен 29 2005, 07:34
Сообщения: 1127
Откуда: РОССИЯ
Пол: Мужской

_________________
мне бы такой «Журнал изменений» как в SAP да в жизнь. цены бы не было!

Почетный гуру

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402

Часовой пояс: UTC + 3 часа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Логотип © 2006 Андрей Горшков
Поддержка: Кирилл Андреев, 2011-…

Источник

User exit sap что это

Часовой пояс: UTC + 3 часа

Правила форума

Старший специалист

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322

Уже часа 2 капаю гугл в поисках ответа на вопрос:
В чем разница между user-exit и badi.

Нашел только что badi может вызываться сколь угодно раз, а user-exit только один.

Коллеги может кто поделиться информацией?

Гуру-эксперт

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской

Старший специалист

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322

А вы не подскажите где можно скачать курс BC425.

Разница настолько большая что целый курс существует?

Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988

Уже часа 2 капаю гугл в поисках ответа на вопрос:
В чем разница между user-exit и badi.

Нашел только что badi может вызываться сколь угодно раз, а user-exit только один.

Коллеги может кто поделиться информацией?

Гуру-эксперт

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской

А вы не подскажите где можно скачать курс BC425.

Разница настолько большая что целый курс существует?

Старший специалист

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322

Старший специалист

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322

Эм. скачал курс 262 страницы. на собеседование через 4 часа

Выручайте, в 2 словах в чем разница?

Специалист

Зарегистрирован:
Ср, май 04 2011, 23:46
Сообщения: 228

Старший специалист

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322

Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988

Эм. скачал курс 262 страницы. на собеседование через 4 часа

Выручайте, в 2 словах в чем разница?

Старший специалист

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322

Мой опыт в sap более года, то есть у меня есть ‘обширные’ поверхностные знания.
Но на собеседованиях задают в основном каверзные вопросы(как ‘joinить’ bseg с xxxx)

Если уже коснулись этой темы, не могли бы поделиться опытом встречающихся вопросиков?(или создавать 101 тему про это? где 90% треша)

Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988

Мой опыт в sap более года, то есть у меня есть ‘обширные’ поверхностные знания.
Но на собеседованиях задают в основном каверзные вопросы(как ‘joinить’ bseg с xxxx)

Если уже коснулись этой темы, не могли бы поделиться опытом встречающихся вопросиков?(или создавать 101 тему про это? где 90% треша)

Старший специалист

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322

Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988

Часовой пояс: UTC + 3 часа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Логотип © 2006 Андрей Горшков
Поддержка: Кирилл Андреев, 2011-…

Источник

Информ портал о технике и не только