SAPPER работа с SAP Workflow — различия между версиями
Строка 71: | Строка 71: | ||
* &_WORKITEM.WORKITEMID& -> &IV_WORKITEM_ID& | * &_WORKITEM.WORKITEMID& -> &IV_WORKITEM_ID& | ||
* &IS_API2_PACKET& -> &IS_API2_PACKET& | * &IS_API2_PACKET& -> &IS_API2_PACKET& | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===Реализация BAdI== | ===Реализация BAdI== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<div style="border: 1px dashed;"> | <div style="border: 1px dashed;"> | ||
пример реализации метода BAdI /SBIS/IF_SAPPER_BADI~ON_READ_CHANGES | пример реализации метода BAdI /SBIS/IF_SAPPER_BADI~ON_READ_CHANGES | ||
Строка 131: | Строка 104: | ||
</div> | </div> | ||
+ | =Состав пакета /SBIS/WORKFLOW= | ||
+ | * Класс /SBIS/CL_WF_SBIS | ||
+ | * Таблица /SBIS/STATUS_WF - связь UUID пакета с номером WF | ||
+ | |||
+ | Основные методы класса /SBIS/CL_WF_SBIS: | ||
+ | * EVENT_API2_PACKET - метод события EVENT, инициализирующего запуск WF | ||
+ | * CHECK_DUPLICATES - метод проверки на наличие уже запущенных WF с тем же самым пакетом. Данный метод может исполняться в фоне. | ||
+ | * GET_PDF_PACKET - метод получения PDF документа для пакета (все документы пакета в одном файле). Данный метод не может выполнятся в фоне. | ||
+ | * GET_PDF_ATTACHMENTS - метод получения PDF документа для вложений (каждый документ отдельным файлом). Данный метод не может выполнятся в фоне. | ||
+ | * APPROVE - метод Утверждения пакета. Данный метод не может выполнятся в фоне. | ||
+ | * REJECT - метод Отклонения пакета. Данный метод не может выполнятся в фоне. | ||
+ | * EXECUTE_ACTION - метод, позволяющий выполнить произвольное действие. Данный метод не может выполнятся в фоне. | ||
+ | События класса /SBIS/CL_WF_SBIS: | ||
+ | * EVENT - используется для инициализации WF | ||
+ | * GO - продолжение обработки | ||
+ | * EXIT - завершение обработки | ||
+ | =Рекомендации по настройке и работе= | ||
+ | * Пользователь, должен быть авторизован в SAPPER при использовании методов, работающих с транспортной средой до личного кабинета (методы GET_PDF_*, APPROVE, REJECT, EXECUTE_ACTION). | ||
+ | * В процессе обработки событий читаются все реестры документов в СБИС, поэтому следует ограничить выборку только по входящим, к примеру, ДокОтгрВх ([https://sbis.ru/help/integration/catalog/guide/#1 список типов документов]). | ||
[[Категория:SAP]] | [[Категория:SAP]] | ||
[[Категория:SAPPER]] | [[Категория:SAPPER]] |
Версия 15:15, 6 апреля 2018
Содержание
Введение
Настроить маршруты согласования входящих документов можно используя стандартный функционал СБИС или SAP Workflow. Далее для краткости будем обозначать SAP Workflow как WF, элемент (этап) (workitem) - WI.
SAPPER позволяет инициировать WF по событию СБИС, или инициировать событие СБИС по событию WF. Например запустить WF при получении входящего документа, или утвердить / отклонить электронный документ по событию WF. Вариантов применения может быть множество.
Как это работает
В SAPPER есть класс /SBIS/CL_WF_SBIS реализующий интерфейс WF (IF_WORKFLOW), с помощью которого можно создать экземпляр WF. А для инициализации из WF события СБИС в этом же классе есть несколько соответствующих методов (см. Состав пакета /SBIS/WORKFLOW).
Пример
Рассмотрим на примере процедуру создания WF для согласования входящего документа.
Сценарий: Экземпляр WF должен создастся автоматически при обновлении статусов (пользователь в интерфейсе SAPPER нажимает на кнопку "Обновить статусы" или робот запускает соответствующий метод). При согласовании в WF документ должен утвердиться в СБИС, соответственно при отклонении должно произойти автоматическое отклонение документа в СБИС.
Алгоритм работы:
- При обработке события получения документа инициализируем событие EVENT. Передаем в него данные документа (S_API2_PACKET)
- По событию EVENT запускается экземпляр WF
- Проверка в фоне наличия уже существующих WF, чтобы не создавать дубликаты (по UUID пакета).
- Скачиваем PDF и прикладываем к экземпляру WF, чтобы можно было ознакомиться с электронным документом.
- Вызываем блок согласования пакета
- В зависимости от решения вызываем /SBIS/CL_WF_SBIS=>APPROVE для утверждения в СБИС, /SBIS/CL_WF_SBIS=>REJECT для отклонения или /SBIS/CL_WF_SBIS=>EXECUTE_ACTION для других действий.
Настройка:
- Создать WF
- Реализовать BAdI
- Включить реализацию BAdI
Создать WF
Основные контейнеры
- is_api2_packet - импорт, тип данных /SBIS/S_API2_PACKET
- cl_cont - контейнер класса /SBIS/CL_WF_SBIS
Вызываемое событие
Инициализирующее событие EVENT класса /SBIS/CL_WF_SBIS
Схема потока данных:
- &_EVT_OBJECT& -> &CL_CONT&
- &EVENT_API2_PACKET& -> &IS_API2_PACKET&
- &_EVT_CREATOR& -> &_WF_INITIATOR&
Событие проверки дубликатов
Обработка в фоновом режиме метода CHECK_DUPLICATES класса /SBIS/CL_WF_SBIS
Схема потока данных:
- &_WORKITEM.WORKITEMID& -> &IV_WORKITEM_ID&
- &IS_API2_PACKET& -> &IS_API2_PACKET&
Завершающие события:
- EXIT
- GO
Событие получения PDF
Синхронная обработка метода GET_PDF_PACKET или GET_PDF_ATTACHMENTS класса /SBIS/CL_WF_SBIS
Схема потока данных:
- &_WORKITEM.WORKITEMID& -> &IV_WORKITEM_ID&
- &IS_API2_PACKET& -> &IS_API2_PACKET&
Согласование
Стандартный этап согласования с двумя возможностями:
- Утвердить
- Отклонить
Событие Утвердить\Отклонить
Синхронная обработка метода APPROVE или REJECT класса /SBIS/CL_WF_SBIS
Схема потока данных:
- &_WORKITEM.WORKITEMID& -> &IV_WORKITEM_ID&
- &IS_API2_PACKET& -> &IS_API2_PACKET&
=Реализация BAdI
пример реализации метода BAdI /SBIS/IF_SAPPER_BADI~ON_READ_CHANGES
Состав пакета /SBIS/WORKFLOW
- Класс /SBIS/CL_WF_SBIS
- Таблица /SBIS/STATUS_WF - связь UUID пакета с номером WF
Основные методы класса /SBIS/CL_WF_SBIS:
- EVENT_API2_PACKET - метод события EVENT, инициализирующего запуск WF
- CHECK_DUPLICATES - метод проверки на наличие уже запущенных WF с тем же самым пакетом. Данный метод может исполняться в фоне.
- GET_PDF_PACKET - метод получения PDF документа для пакета (все документы пакета в одном файле). Данный метод не может выполнятся в фоне.
- GET_PDF_ATTACHMENTS - метод получения PDF документа для вложений (каждый документ отдельным файлом). Данный метод не может выполнятся в фоне.
- APPROVE - метод Утверждения пакета. Данный метод не может выполнятся в фоне.
- REJECT - метод Отклонения пакета. Данный метод не может выполнятся в фоне.
- EXECUTE_ACTION - метод, позволяющий выполнить произвольное действие. Данный метод не может выполнятся в фоне.
События класса /SBIS/CL_WF_SBIS:
- EVENT - используется для инициализации WF
- GO - продолжение обработки
- EXIT - завершение обработки
Рекомендации по настройке и работе
- Пользователь, должен быть авторизован в SAPPER при использовании методов, работающих с транспортной средой до личного кабинета (методы GET_PDF_*, APPROVE, REJECT, EXECUTE_ACTION).
- В процессе обработки событий читаются все реестры документов в СБИС, поэтому следует ограничить выборку только по входящим, к примеру, ДокОтгрВх (список типов документов).