【问题标题】:Write date to Odata Model 0CALDAY as string?将日期作为字符串写入 Odata 模型 0CALDAY?
【发布时间】:2019-03-24 10:02:58
【问题描述】:

我通过像这样创建一个新条目将新数据添加到我的 oData 模型中:

_.forEach(insert, data => {
var entry = (modelprefix + "('" + data.COL01 + "')");
oModel.create(modelprefix, data, mParameters);
});

该代码可以查找字符串和数字,但是当涉及到日期时,它就不起作用了。

我的目标结构包含一个 0CALDAY 列,应在其中解析“插入”JSON 模型中的值。我没有收到错误或任何东西,只是没有任何反应..

我怀疑这是因为 0CALDAY 期望插入一个对象,但它只得到一个字符串。但是我能做什么呢?

这是我的 Insert-JSON-Model 的一个对象:COL04 是要插入的日期。它已经为我的 SAP 提供了正确的格式! (dd.mm.yy)

【问题讨论】:

  • 如果它需要一个对象,您是否尝试过将该字符串转换为 Date 对象?

标签: javascript string type-conversion odata sapui5


【解决方案1】:

我想我明白你在做什么,这应该让你的原始数据通过“类型”的东西运行它,如果它是输入的日期,则创建一个日期。出于演示目的,它还转换类型数组中的数字。

var data = [
  {"AGIMENDO Info Objekt 1": "00000000", "Beschreibung Kurz": "Test0", "Währung": "200.00", "__rowNum__": 1},
  {"AGIMENDO Info Objekt 1": "00000001", "Beschreibung Kurz": "Update1", "Währung": "456.00", "__rowNum__": 2},
  {"AGIMENDO Info Objekt 1": "00000002", "Beschreibung Kurz": "Test2", "Währung": "12.00", "__rowNum__": 3},
  {"AGIMENDO Info Objekt 1": "00000003", "Beschreibung Kurz": "Test3", "Währung": "549153.00", "__rowNum__": 4},
  {"AGIMENDO Info Objekt 1": "00000004", "Beschreibung Kurz": "Text", "Währung": "1.05", "__rowNum__": 5},
  {"AGIMENDO Info Objekt 1": "00000005", "Beschreibung Kurz": "13.08.11", "Währung": "465.00", "__rowNum__": 6},
  {"AGIMENDO Info Objekt 1": "00000006", "Beschreibung Kurz": "Test21", "Währung": "4594.00", "__rowNum__": 7}
];

var types = [
  {type: "number", value: "200.00"},
  {type: "number", value: "456.00"},
  {type: "number", value: "12.00"},
  {type: "number", value: "549153.00"},
  {type: "number", value: "1.05"},
  {type: "date", value: "13.08.11"},
  {type: "number", value: "465.00"}
];

var typeVals = types.map(el => el.value);

function toDate(str) {
  var dateParts = str.split(".");
  var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);
  return date;
}
function toNum(str) {
  return parseFloat(str);
}


data.forEach(row => {
  var keys = Object.keys(row);
  keys.forEach(k => {
    var t = typeVals.indexOf(row[k]);
    if (t != -1) {
      switch (types[t].type) {
        case "date":
          row[k] = toDate(row[k]);
          break;
        case "number":
          row[k] = toNum(row[k]);
          break;
      }
    }
  });
});

console.log(data);

【讨论】:

  • 谢谢詹姆斯,对我来说很有意义,但现在我需要一种动态的方式来获取该数据,因为它并不总是 COL04 包含日期。我添加了一个关于如何分配“类型”的新问题" 字段到每个单元格,以便我可以检查它,然后使用您的解决方案。也许你也可以帮助我?
  • 好的,我找到了一种分配“类型”的方法,现在我回到了您的解决方案,但无法获得动态方式。
  • 谢谢!这会引发错误“解析 XML-Stream 时出错”.. 真的不知道为什么:O
  • 这里没有 XML,听起来像是一个新问题。
  • 我知道没有 XML.. 我该怎么办?
猜你喜欢
  • 2017-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
相关资源
最近更新 更多