Метод PUT для модели oData с типом Edm.Time
Я пытаюсь реализовать редактируемый элемент таблицы с элементом времени (типа Edm.Time). проблема возникает при изменении значения в таблице и приложение отправляет запрос PUT.
значение объекта времени, например, "PT11H00M00S", и я назначил тип "Edm.Time" через метаданные, чтобы избежать проблемы сравнения "Edm.string". но теперь сервис oData - SAP, как показано ниже. как значение должно быть отформатировано, чтобы избежать этой проблемы? заранее спасибо
2015-09-22 09:52:09 Возникла следующая проблема: HTTP-запрос fail400,Bad Request,CX_SY_CONVERSION_NO_DATE_TIME/67AA6842BAA80B7DE10000000A15523C
Значение PNaNDTNaNHNaNMNaN.NaNS не представляет действительную дату / время56003C39FEB4710DE10000000A10010C20150922075209.8761770Run транзакция /IWFND/ERROR_LOG в системе-концентраторе шлюза SAP NW и поиск записей с ошибкой метки timeap для 171-й системы SAP. https://service.sap.com/sap/support/notes/1797736) Подробнее о работе с $ batch см. в SAP-ноте 1869434 ( https://service.sap.com/sap/support/notes/1869434) -
на стороне SAP я нашел следующий запрос получил
--batch_6bba-3b1b-e53d
content-type: multipart/mixed; boundary=changeset_3e78-e6a1-305d
--changeset_3e78-e6a1-305d
content-type: application/http
content-transfer-encoding: binary
PUT modelData(pdsnr='000000000130') HTTP/1.1
Accept-Language: EN
Accept: application/atom+xml,application/atomsvc+xml,application/xml
MaxDataServiceVersion: 2.0
DataServiceVersion: 2.0
Content-Type: application/atom+xml
Content-Length: 716
<a:entry xmlns:a="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"><a:author><a:name/></a:author><a:category term="ns.type" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/><a:content type="application/xml"><m:properties><d:pdsnr m:type="Edm.String">000000000130</d:pdsnr><d:fullName m:type="Edm.String"/><d:alias m:type="Edm.String">ABCD</d:alias><d:pernr>95000104</d:pernr><d:direction m:type="Edm.String">P10</d:direction><d:date m:type="Edm.DateTime">2015-09-21T00:00:00</d:date><d:time m:type="Edm.Time">PNaNDTNaNHNaNMNaN.NaNS</d:time></m:properties></a:content></a:entry>
--changeset_3e78-e6a1-305d--
--batch_6bba-3b1b-e53d--
1 ответ
Похоже, это было проблемой в свойстве __metadata контекста, предоставляющего вызовы модели.
var obj = oSelectedItem.getBindingContext().getObject();
var context = oEvent.getSource().getBindingContext().getObject();
context.ldate = obj.ldate;
context.ltime = obj.ltime;
oController.onRowUpdate("/modelData(pdsnr='"+context.pdsnr+"')",
context);
теперь это работает как
var obj = oSelectedItem.getBindingContext().getObject();
var context = oEvent.getSource().getBindingContext().getObject();
context.ldate = obj.ldate;
context.ltime = obj.ltime;
oController.onRowUpdate("/modelData(pdsnr='"+context.pdsnr+"')",
{ldate: obj.ldate,
ltime: obj.ltime,
});