Представим себе ситуацию, что один веб-интерфейс должен работать с двумя или более системами. Для обеспечения подобного функционала oData позволяет использовать псевдонимы (Aliases).
Давайте рассмотрим на примере.
1. Для начала нам надо сделать два идентичных oData сервиса в системах связанных по RFC. Собственно делать можно только в одном, а во второй уже импортировать готовый во вторую систему.
2. Когда оба сервиса готовы необходимо в системе, в которой происходит обращение к Odata с фронтенда, создать псевдонимы для обоих систем. Заходим в транзакцию /IWFND/MAINT_SERVICE и прописываем псевдонимы.
Пропишем псевдонимы. Один это локальная система(Local). Второй(SAPHR) - удаленная. Отличаются эти настройки в простейшем случае только RFC.
Если ничего не трогать по умолчанию будет вызываться oData в локальной системе, т.к. именно ей мы поставили галки по умолчанию.
Для того, чтобы можно было вызвать удаленную систему необходимо создать реализацию BADI /IWFND/BD_MGW_DEST_FINDER .
Для реализации выбор не велик. Один метод GET_SYSTEM_ALIASES со списком псевдонимов. Также можно настроить фильтр для списков сервисов для которых это будет работать. Поскольку BADI будет вызываться при каждом обращении.
По условию оставляем нужную запись, а остальные удаляем.
Что-то типа такого:
1 2 3 4 5 6 |
" IF sy-uname = 'USER1'. DELETE ct_system_aliases WHERE system_alias = 'LOCAL'. ELSE. DELETE ct_system_aliases WHERE system_alias = 'SAPHR'. ENDIF. |