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

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

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

SAP Workflow немного примеров для работы с потоками

Углубляюсь в новый дивный мир работы с потоками. Ранее уже у меня был описан поиск нужного потока(будут некоторые пересечения).
Накидаю дополнительных методов и FM для работы с потоками:

Читать далее «SAP Workflow немного примеров для работы с потоками»

SAP Workflow основные транзакции

Сначала причислю транзакции которые будете использовать в 100% случаях

SWDD
Построитель потоков операций. Графический интерфейс позволяющий строить поток операций. Пример использования

PFTC
Общее ведение задач. Позволяет вести отдельные задачи для блоков . Пример использования можно посмотреть в предыдущем пункте

SWO1
Построитель бизнес-объектов. Альтернативный вариант для логики в блоках потоков операций. Довольно часто используется. В целом всё интуитивно понятно.

PFAC
ведение правил

SWIA
Обработать поток операций в качестве администратора

Читать далее «SAP Workflow основные транзакции»

Динамическое программирование 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 сервис»

SAP. Перенос объекта в другой запрос

Чтобы перенести объекты из одного запроса в другой не надо удалять объекты из первого запроса и вставлять во второй. Хотя часто идут таким путем. Можно все сделать при помощи одной кнопки.

Читать далее «SAP. Перенос объекта в другой запрос»