Мне нужно обеспечить согласованное редактирование таблиц SAP для вызовов Fiori Backend. У меня есть несколько ситуаций, когда один вызов серверной части меняет более одной таблицы на стороне серверной части. Изменения записываются в транспортный запрос.
Я хочу реализовать стабильное безошибочное решение, чтобы, если первая таблица была изменена нормально, а вторая таблица не удалась (повторяющаяся запись, отсутствие авторизации), вся куча изменений отклонено. Тем не менее, похоже, что есть только «выполнить FM в задаче обновления», которая требует помещать все logi c каждого изменения серверной базы данных в FM.
Я что-то упускаю, или SAP действительно имеет нет объектно-ориентированного способа выполнения последовательных обновлений базы данных?
Единственный обходной путь, который у меня есть, - это проверить все эти предварительные условия вверх, что уже не так хорошо.
@ Florian: Например, обратный вызов действие «Утвердить» над документом, которое меняет: 1) Таблицу заголовка документа, статус поля меняется с «в рабочем процессе» на другое. 2) Таблица согласования - изменена текущая запись утверждающего. Или это добавление нового документа, где 1) добавляется запись таблицы заголовка документа 2) добавляется запись таблицы истории документа. Я не хочу вызывать функциональные модули, я хочу реализовать решение, используя только классы и методы классов. Раньше я работал с другими системами ERP, и там есть такие операторы, как «Начать транзакцию», «Подтвердить транзакцию» или «Откатить транзакцию». Start transcation означает, что вы запускаете LUW, который фиксируется только для «Commit transaction», и если вы вызываете «Rollback transaction», все текущие изменения базы данных этого LUW будут отменены. Интересно, почему в современном SAP нет ни одного из них, кроме старой задачи обновления FM (или я просто не замечаю, как это правильно обработать).