[create-pull-request] automated change (#4787)

Co-authored-by: larshp <larshp@users.noreply.github.com>
This commit is contained in:
github-actions[bot] 2021-05-24 12:55:50 +02:00 committed by GitHub
parent bd391fc04f
commit a862224c00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 100 additions and 3 deletions

View File

@ -4,8 +4,6 @@ CLASS zcl_abapgit_ajson DEFINITION
PUBLIC SECTION.
INTERFACES zif_abapgit_ajson_reader .
INTERFACES zif_abapgit_ajson_writer .
INTERFACES zif_abapgit_ajson .
ALIASES:
@ -29,6 +27,7 @@ CLASS zcl_abapgit_ajson DEFINITION
set_string FOR zif_abapgit_ajson_writer~set_string,
set_integer FOR zif_abapgit_ajson_writer~set_integer,
set_date FOR zif_abapgit_ajson_writer~set_date,
set_timestamp FOR zif_abapgit_ajson_writer~set_timestamp,
set_null FOR zif_abapgit_ajson_writer~set_null,
delete FOR zif_abapgit_ajson_writer~delete,
touch_array FOR zif_abapgit_ajson_writer~touch_array,
@ -652,6 +651,39 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~set_timestamp.
DATA:
lv_tz TYPE tznzone,
lv_date TYPE d,
lv_time TYPE t,
lv_timestamp_iso TYPE string.
IF iv_val IS INITIAL.
" The zero value is January 1, year 1, 00:00:00.000000000 UTC.
lv_date = '00010101'.
ELSE.
lv_tz = 'UTC'.
CONVERT TIME STAMP iv_val TIME ZONE lv_tz
INTO DATE lv_date TIME lv_time.
ENDIF.
lv_timestamp_iso =
lv_date+0(4) && '-' && lv_date+4(2) && '-' && lv_date+6(2) &&
'T' &&
lv_time+0(2) && '-' && lv_time+2(2) && '-' && lv_time+4(2) &&
'Z'.
zif_abapgit_ajson_writer~set(
iv_ignore_empty = abap_false
iv_path = iv_path
iv_val = lv_timestamp_iso ).
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~stringify.
rv_json = lcl_json_serializer=>stringify(

View File

@ -1169,6 +1169,7 @@ CLASS lcl_abap_to_json IMPLEMENTATION.
DATA lo_table TYPE REF TO cl_abap_tabledescr.
DATA lo_ltype TYPE REF TO cl_abap_typedescr.
DATA ls_next_prefix LIKE is_prefix.
DATA lv_tabix TYPE sy-tabix.
FIELD-SYMBOLS <root> LIKE LINE OF ct_nodes.
FIELD-SYMBOLS <tab> TYPE ANY TABLE.
@ -1196,8 +1197,9 @@ CLASS lcl_abap_to_json IMPLEMENTATION.
ls_next_prefix-path = is_prefix-path && is_prefix-name && '/'.
ASSIGN iv_data TO <tab>.
lv_tabix = 1.
LOOP AT <tab> ASSIGNING <val>.
ls_next_prefix-name = to_lower( |{ sy-tabix }| ).
ls_next_prefix-name = to_lower( |{ lv_tabix }| ).
convert_any(
EXPORTING
@ -1209,6 +1211,7 @@ CLASS lcl_abap_to_json IMPLEMENTATION.
ct_nodes = ct_nodes ).
<root>-children = <root>-children + 1.
lv_tabix = lv_tabix + 1.
ENDLOOP.
ENDMETHOD.

View File

@ -1602,6 +1602,7 @@ CLASS ltcl_writer_test DEFINITION FINAL
METHODS ignore_empty FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_obj FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_tab FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_tab_hashed FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS prove_path_exists FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS delete_subtree FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS delete FOR TESTING RAISING zcx_abapgit_ajson_error.
@ -1612,6 +1613,7 @@ CLASS ltcl_writer_test DEFINITION FINAL
METHODS set_str FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_int FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_date FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_timestamp FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS read_only FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_array_obj FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_with_type FOR TESTING RAISING zcx_abapgit_ajson_error.
@ -1935,6 +1937,35 @@ CLASS ltcl_writer_test IMPLEMENTATION.
ENDMETHOD.
METHOD set_tab_hashed.
DATA lo_nodes TYPE REF TO lcl_nodes_helper.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA lt_tab TYPE HASHED TABLE OF string WITH UNIQUE DEFAULT KEY.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
li_writer = lo_cut.
INSERT `hello` INTO TABLE lt_tab.
INSERT `world` INTO TABLE lt_tab.
" Prepare source
CREATE OBJECT lo_nodes.
lo_nodes->add( ' | |object | | |1' ).
lo_nodes->add( '/ |x |array | | |2' ).
lo_nodes->add( '/x/ |1 |str |hello|1|0' ).
lo_nodes->add( '/x/ |2 |str |world|2|0' ).
li_writer->set(
iv_path = '/x'
iv_val = lt_tab ).
cl_abap_unit_assert=>assert_equals(
act = lo_cut->mt_json_tree
exp = lo_nodes->sorted( ) ).
ENDMETHOD.
METHOD arrays.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
@ -2333,6 +2364,30 @@ CLASS ltcl_writer_test IMPLEMENTATION.
ENDMETHOD.
METHOD set_timestamp.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA lv_timestamp TYPE timestamp.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
li_writer = lo_cut.
CREATE OBJECT lo_nodes_exp.
lo_nodes_exp->add( ' | |object | ||1' ).
lo_nodes_exp->add( '/ |a |str |2021-05-05T12-00-00Z ||0' ).
lv_timestamp = '20210505120000'.
li_writer->set_timestamp(
iv_path = '/a'
iv_val = lv_timestamp ).
cl_abap_unit_assert=>assert_equals(
act = lo_cut->mt_json_tree
exp = lo_nodes_exp->sorted( ) ).
ENDMETHOD.
METHOD read_only.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.

View File

@ -42,6 +42,13 @@ INTERFACE zif_abapgit_ajson_writer
RAISING
zcx_abapgit_ajson_error.
METHODS set_timestamp
IMPORTING
iv_path TYPE string
iv_val TYPE timestamp
RAISING
zcx_abapgit_ajson_error.
METHODS set_null
IMPORTING
iv_path TYPE string