SAP Workflow. Диалоговые задачи для пользователя и его заместителя

В этой заметке я хочу представить, если позволите, карту решений для ситуаций, в которых вам может посчастливиться выполнить поиск диалоговых задач для утверждения пользователем или его заместителем в ABAP программе / Web Dynpro приложении / Fiori приложении.

Исходные данные

У вас есть ABAP программа / Web Dynpro / Fiori приложение, посредством которого нужно отобразить информацию о всех диалоговых задачах пользователя, доступных ему для утверждения в определенный момент времени (или за определенный период времени). Безусловно, не забываем и про правила замещений.

См. заметку Workflow. Использование правил замещения для обработчиков задач

О каком бы варианте реализации не шла речь, рабочий список пользователя на стороне backend-системы может быть сформирован с помощью вызова функционального метода SAP_WAPI_CREATE_WORKLIST.

Пример работы с SAP_WAPI_CREATE_WORKLIST

Для демонстрации в этой заметке я буду использовать следующую ABAP программу

Поток операций состоит из одной диалоговой задачи, обработчики которой содержатся в многостроковом контейнере USERS. Таким образом, сколько записей присутствует в этом контейнере, столько экземпляров диалоговой задачи будет сформировано в потоке.

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

Результирующая таблица et_workflist содержит одну запись о диалоговой задаче, содержащейся в рабочем списке пользователя.

Активация заместителя и повторный запуск потока/программы

Усложняю рассмотренный выше пример, добавляя в качестве обработчика задачи пользователя, которому в таблице HRUS_D2 настроено правило замещения.

Повторный запуск потока операций

На ниже представленном видеофрагменте представлена последовательность действий, в результате которой я использую транзакцию SBWP у каждого из пользователей, являющихся обработчиком диалоговой задачи, чтобы показать, что задача потока операций им доступна для выбора и последующей с ней работы.

См. Business Workplace: Workflow Functions

Описание проблемы

Как было продемонстрировано выше, каждому из пользователей, кто является обработчиком в потоке, доступна диалоговая задача для обработки. Только если для пользователя YUSER1 эта задача представлена в единственном экземпляре, то для YUSER2 - в двойном. То есть, пользователь YUSER1 видит только задачу, обработчиком которой он является, а пользователь YUSER2 помимо своей задачи, видит задачу пользователя YUSER1, так как является, согласно условиям представленного примера, его заместителем.

Аналогичное поведение системы можно наблюдать в моей ABAP программе, анализируя выходные результаты работы функционального модуля SAP_WAPI_CREATE_WORKLIST.

Подобные задвоения могут вызывать определенные вопросы со стороны заинтересованных ключевых бизнес-пользователей системы.

Решение проблемы

Например,

Проверяю

Зима будет долгой, но все обойдется. Обнимаю. Ваш, ignatov.