OData服务:不支持的格式。

2020-08-20 23:37发布

         点击此处--->   EasySAP.com群内免费提供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)

         点击此处--->   EasySAP.com群内免费提供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)
付费偷看设置
发送
7条回答
大圣 - sap领域执行人,9年sap运营经验
1楼 · 2020-08-21 00:30.采纳回答

对不起,我迟来了。

问题在于DateTime格式。 SAP OData要求DateTime输入的格式必须是从1970年1月1日以来发生的毫秒数,并且对于时间和日期也是如此,它具有某些奇怪的格式,我无法在前端创建该格式以提供给服务。

因此,要解决此问题,因为仅日期需要DateTime,即(yyyy-mm-ddT00.00.00),所以我能够提供。

为了时间,我欺骗了系统,方法是将带有" $"之前的时间($ 00.00.00)作为字符串值发送给系统,然后手动将其内部分开。

不是理想的解决方案,但确实有效

致谢

Siddharth Shaligram

ZJXianG
2楼-- · 2020-08-21 00:40
小灯塔
3楼-- · 2020-08-21 00:17

我认为您输入的内容有问题-我 假设上面显示的XML提取是您要作为POST请求发送的请求正文。 它应该只包含一个 ... 在XML序言之后,没有 。 唯一让我感到困惑的是状态码415; 通常,格式错误的请求正文会返回400。请检查 再次 odata.org 有关如何指定POST请求正文。

或者,如果您的客户端允许,请尝试使用内容类型application/json。 请求主体变得更具可读性。

悻福寶寶
4楼-- · 2020-08-21 00:32

我检查了博客,进一步讨论了将日期传递给odata的问题。 我认为,(我可能是错的)我的接收数据时出现了问题,因为我发送的数据是使用get_entityset方法从中获得的数据。

Climb_Ma
5楼-- · 2020-08-21 00:31

您还可以设置 DateTime字段为空。 您可以检查属性中的Nullable。

葫芦娃快救爷爷
6楼-- · 2020-08-21 00:17

对不起,您的回复很晚。

问题在于DateTime格式。 SAP OData要求DateTime输入的格式必须是自1970年1月1日以来发生的毫秒数,并且对于时间和日期也是如此,它具有某些奇怪的格式,我无法在前端创建该格式以提供给服务。 >

因此,要解决此问题,因为只有日期需要DateTime,即(yyyy-mm-ddT00.00.00),我才能够提供。

为了时间,我欺骗了系统,方法是将带有" $"之前的时间($ 00.00.00)作为字符串值发送给系统,然后手动将其内部分开。

不是理想的解决方案,但确实有效

致谢

Siddharth Shaligram

半个程序猿
7楼-- · 2020-08-21 00:24

@ iddharth Shaligram 如果 字段是关键字段,则必须填写。 检查字段的大小,必须至少8个字符。

一周热门 更多>