一、表结构如下:
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}]}