UI5 Пакетное обновление Odata - Подключите ответные сообщения к одной операции - PullRequest
0 голосов
/ 25 декабря 2018

Я выполняю пакетное обновление для модели OData v2, которая содержит несколько операций.Обновление выполняется в одном наборе изменений, поэтому одна неудачная операция завершается неудачей всего обновления.

Если происходит сбой одной операции (из-за бизнес-логики) и возвращается сообщение.Есть ли способ узнать, какая операция вызвала сообщение?Полученный ответ содержит текст сообщения и ничего более полезного.

Функция ошибки запускается для каждой неудачной операции и каждый раз содержит одно и то же сообщение.

Возможно, существует определенныйспособ сообщения должен быть выдан на бэкэнд SAP?Метод ABAP / iwbep / if_message_container-> ADD_MESSAGE имеет параметр IV_KEY_TAB, но, похоже, он ни на что не влияет.

Редактировать: Уточнение после разговора.Мой сервис не возвращает список сообщений, он выполняет обновления.Если одна из операций обновления завершается неудачно с сообщением, я хочу подключить сообщение к конкретному обновлению, которое не удалось, желательно без изменения текста сообщения.Пример ответа об ошибке, который я получаю:

{
   "error":{
      "code":"SY/530",
      "message":{
         "lang":"en",
         "value":"<My message text>"
      },
      "innererror":{
         "application":{
            "component_id":"",
            "service_namespace":"/SAP/",
            "service_id":"<My service>",
            "service_version":"0001"
         },
         "transactionid":"",
         "timestamp":"20181231084555.1576790",
         "Error_Resolution":{
            // Sap standard message here
         },
         "errordetails":[
            {
               "code":"<My message class>",
               "message":"<My message text>",
               "propertyref":"",
               "severity":"error",
               "target":""
            },
            {
               "code":"/IWBEP/CX_MGW_BUSI_EXCEPTION",
               "message":"An exception was raised.",
               "propertyref":"",
               "severity":"error",
               "target":""
            }
         ]
      }
   }
}

1 Ответ

0 голосов
/ 27 декабря 2018

Если вы хотите сохранить одно и то же точное сообщение для всех операций, самый простой способ определить источник сообщения - добавить к нему определенный «тег» в бэкэнде.

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

...