ABAP:相关联内表(主次表)生成json字符串示例

本文展示了一个使用ABAP编程语言生成JSON字符串的例子,通过定义数据类型和转换过程,将ABAP数据结构转换为标准JSON格式,适用于系统间的数据交换。

一、表结构如下:

1、主表:

2、明细表结构:

二、生成 json字符串代码如下:

REPORT ztest.

DATA:lw_main TYPE zstr_main.
DATA:lt_detail TYPE zstr_detail,
     lw_detail TYPE zstr_detail_line.

DATA: lv_json TYPE string.

lw_main-aufnr = '10000000'.
lw_main-werks = '8100'.
lw_main-plnbez = '10000111'.
lw_main-gamng = '10'.
*lw_main-pos = ''.



lw_detail-matnr = '11-11'.
lw_detail-revlv = '01'.
lw_detail-bdmng = '1'.
APPEND lw_detail TO lt_detail.

lw_detail-matnr = '11-12'.
lw_detail-revlv = '02'.
lw_detail-bdmng = '2'.
APPEND lw_detail TO lt_detail.


lw_detail-matnr = '11-13'.
lw_detail-revlv = '03'.
lw_detail-bdmng = '3'.
APPEND lw_detail TO lt_detail.

DATA(lv_gamng_string) = condense( CONV string( CONV i( lw_main-gamng ) ) ).

LOOP AT lw_main-pos INTO lw_detail.
  lw_detail-bdmng = condense( CONV string( CONV i( lw_detail-bdmng ) ) ).
  APPEND lw_detail TO lt_detail.
ENDLOOP.

DATA(o_writer_itab) = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ).
CALL TRANSFORMATION id SOURCE aufnr = lw_main-aufnr
                              werks = lw_main-werks
                              plnbez = lw_main-plnbez
                              gamng = lv_gamng_string
                              pos = lt_detail
                       RESULT XML o_writer_itab.

cl_abap_conv_in_ce=>create( )->convert( EXPORTING
                                          input = o_writer_itab->get_output( )
                                        IMPORTING
                                          data = lv_json ).

MESSAGE lv_json TYPE 'I'.

生成的json字符串如下:

{"AUFNR":"10000000","WERKS":"8100","PLNBEZ":"10000111","GAMNG":"10","POS":[{"MATNR":"11-11","REVLV":"01","BDMNG":1.0},{"MATNR":"11-12","REVLV":"02","BDMNG":2.0},{"MATNR":"11-13","REVLV":"03","BDMNG":3.0}]}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChampaignWolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值