非法 sap.ui.model.odata.type.DateTimeOffset

问题描述 投票:0回答:1

发帖以求繁荣。 我的谷歌点击量为零。

我正在编写 SAP Business One Web 客户端扩展。 我正在使用工作列表模板并拥有 b1s/v2/ 服务层元数据(在设置模板时自动生成)

运行沙箱版本(“npm run start-local”),它会根据元数据自动生成假数据。我的数据包括一个

edm.DateTimeOffset
,由 Fiori 使用 sap.ui.model.odata.type.DateTimeOffset 模型解析。

这是来自测试数据代理的示例响应对象(全部自动生成)

{
  DocEntry: 1,
  U_CardCode: "U_CardCode_0",
  U_CardName: "U_CardName_0",
  U_DocCurrency: "U_DocCurrency_0",
  U_DocTotal: "",
  U_DueDate: "2017-04-13T14:50:39.000Z",
  U_Status: "U_Status_0",
  U_SupplierInvNo: "U_SupplierInvNo_0",
}

一个完全正常的

U_DueDate
值,根据我能找到的所有文档,它是一种可接受的格式,并且通过它是 sap 生成的值这一事实得到双重确认。

这会在屏幕上产生错误

非法 sap.ui.model.odata.type.DateTimeOffset

添加格式化程序不起作用。 如果它无法解析该值,那么它不会将其传递给格式化程序。

odata sapui5 sap-fiori datetimeoffset sapb1
1个回答
0
投票

事实证明有一种方法可以覆盖元数据中的预期类型。 我找不到太多关于它的文档,但我改变了元素

text="{'U_DueDate'}" />

text="{
  path: 'U_DueDate',
  targetType: 'any',
  formatter: '.formatter.date'
}" />

日期现在被接受为字符串,因此我可以使用自定义格式化程序。 这是格式化程序中的日期函数:

    date : function (sValue) {
        if (!sValue) {
            return "";
        }
        var date = new Date(sValue)
        var asString = date.toLocaleDateString("en-GB")
        return asString;
    }

您不必对本地化进行硬编码,但我的用例就是这样的

© www.soinside.com 2019 - 2024. All rights reserved.