使用 Edm.DateTime 作为主键的一部分执行 OData 方法

Performing OData methods with Edm.DateTime as part of primary keys

我有问题,我想通过 HTTP 请求更新 table。但是我总是在 table.

中的 Edm.DateTime 属性上收到错误消息

Error: Invalid URI-Segment '00:00',ValdTo=datetime'2019-04-03T00:00:00')'"}

连值都已经转换成Edm.DateTime.

valdfrom_edit = encodeURI(sap.ui.model.odata.ODataUtils.formatValue(new Date(values.ValdFrom), "Edm.DateTime"));
var update = "/ZSCORDERINGSet(Mandt='010',Vkorg='" + vkorg_Edit + "',ZzscSpSas='" + suppl_edit + "',ValdFrom=" + valdfrom_edit + ",ValdTo=" + valdto_edit + ")";

试试

const myODataModel = this.getOwnerComponent().getModel(/*modelName*/);
const update = () => myODataModel.update("/" + myODataModel.createKey("ZSCORDERINGSet", {
  //<key>s for ZSCORDERING as described in $metadata
  Mandt: "010",
  Vkorg: vkorg_Edit,
  ZzscSpSas: suppl_edit,
  ValdFrom: new Date(values.ValdFrom), // no need to use ODataUtils.
  ValdTo: valdto_edit
}), {
  // properties of the entry that should be updated
}, {
  // additional parameters such as success-, error-handler, groupId, ...
});
myODataModel.metadataLoaded().then(update);

API reference: v2.ODataModel#update

关于 API createKey,请参阅 它将根据 OData 规范并始终以正确的顺序为您创建实体路径。

除此之外,请记住MockServer doesn't support Edm.DateTime in keys

Edm.DateTime keys: Unsupported