Fork me on GitHub

JSON2ABAPType:根据JSON数据结构生成ABAP类型定义

一图表明本文将要介绍的工具:

 

JSON是常见的数据格式,经常用于接口开发。ABAP开发者通常使用/ui2/cl_json来把JSON数据转换为相应的ABAP类型

在转换前,必须要定义相应的ABAP类型,比如,如果要转换如下的JSON数据,

{
    "KEY1": "VALUE1",
    "KEY2": "VALUE2"
}

则必须定义相应的ABAP结构类型,

TYPES: BEGIN OF t_record,
        key1 TYPE string,
        key2 TYPE string,
       END OF t_record.

转换的代码如下,

types: begin of t_record,
         key1 type string,
         key2 type string,
       end of t_record.

data: json type string.
data: record type t_record.

json = '{"key1": "VALUE1",  "key2": "VALUE2"}'.

/ui2/cl_json=>deserialize( exporting json = json changing data = record ).

这是一个简单例子,如果JSON的格式复杂,会让record的类型定义变成一项劳心劳力的工作...不仅要花时间和精力手写结构定义,一旦出错,也要花大量时间来排查错误。

 

JSON2ABAPType是一个开源工具,它可以通过JSON数据自动生成相应的ABAP结构定义,支持复杂JSON结构,可以为开发者节约时间精力。

 

项目地址:https://github.com/fidley/JSON2ABAPType

 

注意事项:

1,该工具依赖最新版的/ui2/cl_json,如果你的版本比较旧的话,可以需要打相关的SAP Notes (25264052629179) 。

2019.10.12更新:我已经提交了一个新的PR,用zui2_json代替了/ui2/cl_json,这是样做为了解决abap定义中组件顺序问题。在这以后,不再需要系统中有/ui2/cl_json。

 

2,JSON数据中的字段是可以省略的,注意要通过完整的JSON结构生成ABAP定义,否则可能生成不完整的ABAP定义(感谢ABAP亮亮的提示)。

3,建议使用ABAPGIT安装它。

 

安装后,使用事务代码SE38运行程序ZJSON2ABAPTYPE。

 

posted @ 2019-10-10 11:34  氢氦  阅读(...)  评论(... 编辑 收藏