点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我正在使用odata服务发布日志,但不断收到错误消息,指出格式不受支持。
我尝试将内容类型更改为application/xml,但这也没有用。
我要去哪里错了?
entityset
班
METHOD DATALOGSET_CREATE_ENTITY。 数据:IT_ENTITY TYPE ZCL_ZIOT_DATAENTRY_MPC => TS_DATALOG, EXREF TYPE REF TO CX_ROOT, IT_IOT TYPE ZIOT_DATA_REC => TT_IOT, WA_IOT TYPE ZIOT_DATA_REC => TS_IOT, G_REF TYPE REF TO ZIOT_DATA_REC。 创建对象G_REF。 尝试。 调用方法IO_DATA_PROVIDER-> READ_ENTRY_DATA 输入 ES_DATA = IT_ENTITY。 将/IWBEP/CX_MGW_TECH_EXCEPTION捕获到EXREF中。 ENDTRY。 如果IT_ENTITY不是INITIAL。 通话功能'ABI_TIMESTAMP_CONVERT_FROM' 出口 IV_TIMESTAMP = IT_ENTITY-DATETIME 输入 O_DATE = WA_IOT-POSTING_DATE O_TIME = WA_IOT-POSTING_TIME *例外情况 * CONVERSION_ERROR = 1 *其他= 2 。 将WA_IOT附加到IT_IOT。 调用方法ZIOT_DATA_REC => GET_DATA 出口 IM_IOT = IT_IOT *重要 * EX_STATUS = 。 万一。 ENDMETHOD。
服务维护
输入:
<?xml version =" 1.0" encoding =" UTF-8"?>http://IILTEST:8000/sap/opu/odata/sap/ZIOT_DATAENTRY_SRV/dataLogSet dataLogSet 2019-08-08T10:04:09Z <作者> <名称/> <条目>http://IILTEST:8000/sap/opu/odata/sap/ZIOT_DATAENTRY_SRV/dataLogSet('0000000001') dataLogSet('0000000001') 2019-08-08T10:04:09Z 0000000001 Prod1 2019-07-26T12:39:14 X
错误
请帮助
预先感谢
Siddharth
(22.7 kB)
对不起,我迟来了。
问题在于DateTime格式。 SAP OData要求DateTime输入的格式必须是从1970年1月1日以来发生的毫秒数,并且对于时间和日期也是如此,它具有某些奇怪的格式,我无法在前端创建该格式以提供给服务。
因此,要解决此问题,因为仅日期需要DateTime,即(yyyy-mm-ddT00.00.00),所以我能够提供。
为了时间,我欺骗了系统,方法是将带有" $"之前的时间($ 00.00.00)作为字符串值发送给系统,然后手动将其内部分开。
不是理想的解决方案,但确实有效
致谢
Siddharth Shaligram
您是否检查过此博客?
https://博客。 sap.com/2017/01/05/date-and-time-in-sap-gateway-foundation /
我认为您输入的内容有问题-我 假设上面显示的XML提取是您要作为POST请求发送的请求正文。 它应该只包含一个 ... 在XML序言之后,没有 。 唯一让我感到困惑的是状态码415; 通常,格式错误的请求正文会返回400。请检查 再次 odata.org 有关如何指定POST请求正文。
或者,如果您的客户端允许,请尝试使用内容类型application/json。 请求主体变得更具可读性。
我检查了博客,进一步讨论了将日期传递给odata的问题。 我认为,(我可能是错的)我的接收数据时出现了问题,因为我发送的数据是使用get_entityset方法从中获得的数据。
您还可以设置 DateTime字段为空。 您可以检查属性中的Nullable。
对不起,您的回复很晚。
问题在于DateTime格式。 SAP OData要求DateTime输入的格式必须是自1970年1月1日以来发生的毫秒数,并且对于时间和日期也是如此,它具有某些奇怪的格式,我无法在前端创建该格式以提供给服务。 >
因此,要解决此问题,因为只有日期需要DateTime,即(yyyy-mm-ddT00.00.00),我才能够提供。
为了时间,我欺骗了系统,方法是将带有" $"之前的时间($ 00.00.00)作为字符串值发送给系统,然后手动将其内部分开。
不是理想的解决方案,但确实有效
致谢
Siddharth Shaligram
@ iddharth Shaligram 如果 字段是关键字段,则必须填写。 检查字段的大小,必须至少8个字符。
一周热门 更多>