Динамический вызов метода бизнес-объекта

При интеграции, частенько надо вызывать классы и объекты из другой системы. Про динамический вызов класса писал ранее . Сейчас рассмотрим вызов бизнес-объекта (транзакция swo1) из другой системы. Хотя, может подобный код пригодится и для вызова в своей.
Создадим ФМ ‘Z_DYN_CALL_BO_METHOD’, который сможем вызывать удаленно.

Читать далее «Динамический вызов метода бизнес-объекта»

Динамическое программирование ABAP. RFC ФМ для вызова методов произвольного класса.

При интеграциях между системами частенько надо получать данные из смежных систем. Самое простое –  обернуть метод  в RFC ФМ и вызвать его в нужной системе. Это хорошее решение, но что делать если нам нужно вызвать не один метод, а 50 или даже 100. Писать обертку для каждого? Довольно долгое занятие, плюс любое изменение в методе повлечет необходимость дополнительной поддержки этих ФМ. Короче, самое очевидное решение, не всегда самое удобное в конкретном случае. 
Один из альтернативных путей решений – динамическое программирование. Это способ тоже не без недостатков, но он может позволить избежать создании сотен лишних ФМ.  Если надо вызвать один-два метода, я бы не заморачивался и делал все в обертках.

Задача: Написать RFC функцию которая сможет выполнить произвольный метод любого класса и вернуть результат.
Конечно, все случаи мы не предусмотрим, особенно если классу требуется какое-то сложное создание инстанции, попробуем разобрать базовый подход.
Читать далее «Динамическое программирование ABAP. RFC ФМ для вызова методов произвольного класса.»

Узнать откуда вызвали RFC

Буквально вчера пришлось выяснять как изнутри RFC ФМ узнать систему из которой он вызвался.
Скажу кратко ФМ – ‘RFC_SYSTEM_INFO’ вызываем его как DESTINATION ‘BACK’.
Пример вызова:

Если мы вызовем ФМ таким образом не через RFC то он ничего не возвращает.

или можно вызвать ФМ ‘RFC_GET_ATTRIBUTES’ тоже вернет информацию о системе

Изменить поведение стандартной кнопки в ALV GRID

Частенько у консультанта возникает желание сделать так, чтобы кнопка была стандартная и располагалась на своем обычном месте, но реакция на нажатие была несколько другоя. Особенно часто это касается кнопки выгрузки, то формуляр нужен немного другой, то какую-то постобработкку сделать и т.д. Для таких целей можно использовать событие before_user_command
Демо пример:
Читать далее «Изменить поведение стандартной кнопки в ALV GRID»

oData использование кэша для хранения данных между вызовами

Предположим, что есть некая гипотетическая ситуация, в ходе которой нужно пойти на некоторый неправильный подход с точки зрения REST. Получить данные в одном методе, а потом использовать их при следующем вызове другого метода. В этом случае можем воспользоваться классом для кэша /ui2/cl_cache_handler

Читать далее «oData использование кэша для хранения данных между вызовами»

oData обновить метаданные сервиса

Когда производятся манипуляции с сущностями oData, необходимо обновить метаданные и очистить кэш. Иначе рискуете работать с неактуальной версией сервиса.
1. Транзакция 1. /IWFND/MAINT_SERVICE – Активация и ведение сервисов

Выбираем строку с нашим сервисом и жмем “Загрузить метаданные”

Читать далее «oData обновить метаданные сервиса»

Экспортировать\импортировать oData сервис

Небольшая инструкция которая поможет перенести Odata сервис из одной системы в другую.

Для начала выгрузим исходный сервис.
Зайдем в транзакцию /IWFND/GW_CLIENT – SAP Gateway Client

Читать далее «Экспортировать\импортировать oData сервис»

Преобразование даты из ISO 8601. Получение даты из JIRA

Для преобразования даты из ISO 8601 можно использовать класс cl_xlf_date_time. Если мы получаем данные из JIRA, то необходимо привести полученную дату в вид, с которым может работать данный класс.
Дату из Jira получаем в таком виде – 2020-04-30T00:00:00.000+0300 .
Далее необходимо добавить “:” в смещение: 2020-04-30T00:00:00.000+03:00
Код преобразования:

Читать далее «Преобразование даты из ISO 8601. Получение даты из JIRA»

CRM emails

Пару слов о формулярах CRM. Недавно столкнулся с формулярами в Solution Manager. Для меня это впервые, сохраню напоминалку, может быть кому-то еще пригодится.
Настройка ведется в транзакции SPRO:

 SPRO->SAP Solution Manager: руководство по внедрению->Управление отношениями с клиентами->Маркетинг->Маркетинговое планирование и управление кампаниями->Персонализированный мейл->Обработать контексты признаков для формуляров мейла

Тут мы можем создать пользовательский контекст

Читать далее «CRM emails»

BOL получить сущность. Навигация в структуре. Добавить еще одну запись.

Расскажу немного про BOL. Не так давно удалось посмотреть на проекте в SM. На полноту информация точно не претендую, но постараюсь ввести в курс дела.
BOL(Business Object Layer) – применяется в CRM и в SM для унифицированного доступа к данным. В общем и целом BOL дублирует функционал стандартных модулей, но позволяет это делать однообразным способом. Также заявляется, что использование BOL API позволяет ускорить работу за счет внутренней оптимизации

Читать далее «BOL получить сущность. Навигация в структуре. Добавить еще одну запись.»