Process Management API. Массовое изменение документов Solution

Насколько мне известно, SolDoc  не позволяет массово изменять документы. Однако, существует API, представляющее собой oData сервис, которое позволяет производить данные операции.
API предоставляет возможность использовать все основные операции(чтение, изменение, вставка и т.д. ).
Более подробно можно почитать на оф сайте:
API
Описание формата обмена

Также есть ссылки на два блога, которые работают с данным API на Python. Это не всем подходит, т.к. не всегда возможно запускать скрипты в сетях с продуктивной системой. Если у вас такой проблемы нет, можете использовать решения представленные в данных блогах, это будет даже удобнее.
https://blogs.sap.com/2020/05/04/mass-updating-solution-documentation-via-the-process-management-api/

https://blogs.sap.com/2020/02/28/process-management-api-in-sap-solution-manager/

Предлагаю  реализовать тоже самое на ABAP.
Исходные данные
Есть название решения и ветки. Необходимо изменить все статусы вложенных документов определенного типа.


Описание решения

oData сервисы можно вызывать из ABAP при помощи класса /iwfnd/cl_sutil_client_proxy
Первым делом надо получить ID решения и ветки. Делается это при помощи GET запроса с URL следующих видов:

URL Для поиска решения:

URL для поиска ветки:

Далее получаем содержимое ветки.
URL (GET):

Сам JSON в ответе довольно странный, содержимое узла section-content это json в виде строки, поэтому перед парсингом при помощи abap надо  убрать часть символов из строки(ниже в коде это будет сделано при помощи REPLACE).

Для изменения статуса заменяем старый статус у нужных документов в узле  "section-id": "NODES".
После изменений  отправляем измененный JSON обратно в таком же формате, как и при получении.

Выполняем PUT запрос вида

В header обязательно надо подать токен.
Токена получаем  GET запросом

В Header запроса передаем 'X-CSRF-Token' : 'Fetch'.

Результат в Soldoc:

Полная реализация:

 

.

Добавить комментарий

Ваш адрес email не будет опубликован.