在ABAP程序中将JSON日期从外部OData转换为YYYYMMDD

2020-08-15 03:15发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) SAP专家, 我正在使用CL...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


SAP专家,

我正在使用CL_HTTP_CLIENT在我的SAP ECC系统(Netweaver 7.0版)中调用外部OData服务。

当我调用服务时,我得到的是JSON格式的日期,即Unix/Epoch格式的日期:" \/Date(1567981296000)\/"

按照Unix格式,此值表示 01.01.1970 + 1567981296000秒。

我想用我的 ABAP代码将此日期转换为常规SAP日期时间格式(YYYYMMDD HH:MM:SS)。

但是,我找不到能完成此转换并给我真实日期的现成的FM。

有人可以为此提供解决方案吗?

此致

巴拉特·巴贾杰

5条回答
SAP小菜
2020-08-15 03:35

现在,我发现一个更好的解决方案 JSON DateTime值的一种方法。

如果我将ABAP字段声明为:

LV_DATETIME TYPE TIMESTAMP(而不是字符串)

/ui2/cl_json类将将JSON日期自动转换为时间戳。

尝试以下示例代码:

 TYPES:BEGIN OF lty_data,
           order_no TYPE char10,
           create_date TYPE时间戳," <<<<<<<<<这是技巧
         lty_data的结尾。

 数据:ls_data TYPE lty_data,
       lv_json类型/ui2/cl_json => json。

 lv_json ='{" Order_No":" 0021232324"," Create_Date":"/img/Date(1596240000000)/"}"。

/ui2/cl_json =>反序列化(
   出口
     json = lv_json" JSON字符串
   改变
     data = ls_data)。 转换后的数据

 

反序列化后,您会注意到ls_data-create_date转换为20200801000000。

这很简单,但非常重要。

希望这会有所帮助。

此致

巴拉特·巴贾杰

一周热门 更多>