SAPPER работа с SAP Workflow
Содержание
Введение
Настроить маршруты согласования входящих документов можно используя стандартный функционал СБИС или SAP Workflow. Далее для краткости будем обозначать SAP Workflow как WF, элемент (этап) (workitem) - WI.
Реализация SBIS SAPPER для работы с WF позволяет при получении входящих документов в SAPPER инициировать WF в SAP, используя вызов события через точку расширения BAdI. В процессе выполнения WF в SAP можно утверждать или отклонять входящие документы согласно маршруту согласования, что будет отражено в личном кабинете СБИС как события утверждения или отклонения документов.
В качестве примера рассмотрим типовой процесс согласования входящих документов, иллюстрирующий особенности реализации.
Пользователь, находясь, в интерфейсе SAPPER нажимает на кнопку "Обновить статусы", реализация BAdI вызывает событие инициирующее WF, состоящее из двух основных этапов: получить PDF документ вложений пакета и согласование. В зависимости от выбора действия на этапе Согласования документы будут отклонены или утверждены в ЛК СБИС.
Согласования входящего пакета документов
Алгоритм
- Инициализация события EVENT на API2 пакете
- Проверка наличия существующих WF с данным UUID пакета в фоне
- Получение номера инициализирующего события
- Проверка ключа UUID + номер WF на вхождение в таблицу /SBIS/STATUS_WF
- Если вхождение найдено, то событие EXIT
- Если не найдено, событие GO
- Если событие GO
- Вызов метода получения PDF
- Вызов блока согласования пакета
- Если Утвердить
- Получить текст согласования, иначе взять текст по умолчанию
- Выполнить Утвердить
- Если Отклонить
- Получить текст отклонения, иначе взять текст по умолчанию
- Выполнить Отклонить
- Выполнение завершено
- Если событие EXIT, то завершить выполнение
Схема согласования и основные элементы
Основные контейнеры
- 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&
Состав пакета /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 - метод Отклонения пакета. Данный метод не может выполнятся в фоне.
События класса /SBIS/CL_WF_SBIS:
- EVENT - используется для инициализации WF
- GO - продолжение обработки
- EXIT - завершение обработки
Рекомендации по настройке и работе
- Пользователь, должен быть авторизован в SAPPER при использовании методов, работающих с транспортной средой до личного кабинета (методы GET_PDF_*, APPROVE, REJECT).
- Для обработки входящего потока документов можно использовать BAdI метод ON_READ_CHANGES (см. точку расширения /SBIS/ES_SAPPER). Метод реализует обработку события чтения изменений по кнопке "Обновить статусы".
- В процессе обработки событий читаются все реестры документов в СБИС, поэтому следует ограничить выборку только по входящим, к примеру, ДокОтгрВх (список типов документов).
- Контейнеры используемые в WF:
- IS_API2_PACKET - importing контейнер содержащий структуру с данными API2_PACKET (соблюсти наименование обязательно)
- контейнер класса
пример реализации метода BAdI /SBIS/IF_SAPPER_BADI~ON_READ_CHANGES