From 6183f2d30dc527dceabd56d201afbbf7dd9d2ed2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 06:41:43 +0100 Subject: [PATCH] ajson, Automatic Update (#6844) Co-authored-by: larshp Co-authored-by: Lars Hvam --- .../zcl_abapgit_ajson.clas.locals_imp.abap | 19 +++++++++---- .../zcl_abapgit_ajson.clas.testclasses.abap | 28 +++++++++++++++++++ 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/json/zcl_abapgit_ajson.clas.locals_imp.abap b/src/json/zcl_abapgit_ajson.clas.locals_imp.abap index d256a8b59..b206349a4 100644 --- a/src/json/zcl_abapgit_ajson.clas.locals_imp.abap +++ b/src/json/zcl_abapgit_ajson.clas.locals_imp.abap @@ -992,12 +992,19 @@ CLASS lcl_json_to_abap IMPLEMENTATION. WHEN zif_abapgit_ajson_types=>node_type-string. " TODO: check type ? - IF is_node_type-type_kind = lif_kind=>date AND is_node-value IS NOT INITIAL. - = to_date( is_node-value ). - ELSEIF is_node_type-type_kind = lif_kind=>time AND is_node-value IS NOT INITIAL. - = to_time( is_node-value ). - ELSEIF is_node_type-type_kind = lif_kind=>packed AND is_node-value IS NOT INITIAL. - = to_timestamp( is_node-value ). + IF is_node-value IS NOT INITIAL. + IF is_node_type-type_kind = lif_kind=>date. + = to_date( is_node-value ). + ELSEIF is_node_type-type_kind = lif_kind=>time. + = to_time( is_node-value ). + ELSEIF is_node_type-dd->absolute_name = '\TYPE=TIMESTAMP' + OR is_node_type-dd->absolute_name = '\TYPE=TIMESTAMPL'. + = to_timestamp( is_node-value ). + ELSEIF is_node_type-type_kind = lif_kind=>packed. " Number as a string, but not a timestamp + = is_node-value. + ELSE. + = is_node-value. + ENDIF. ELSE. = is_node-value. ENDIF. diff --git a/src/json/zcl_abapgit_ajson.clas.testclasses.abap b/src/json/zcl_abapgit_ajson.clas.testclasses.abap index 611f68d5b..e3b846c36 100644 --- a/src/json/zcl_abapgit_ajson.clas.testclasses.abap +++ b/src/json/zcl_abapgit_ajson.clas.testclasses.abap @@ -1409,6 +1409,7 @@ CLASS ltcl_json_to_abap DEFINITION timestamp1 TYPE timestamp, timestamp2 TYPE timestamp, timestamp3 TYPE timestamp, + timestamp4 TYPE timestampl, END OF ty_complex. METHODS to_abap_struc @@ -1462,6 +1463,9 @@ CLASS ltcl_json_to_abap DEFINITION METHODS to_abap_time FOR TESTING RAISING cx_static_check. + METHODS to_abap_str_to_packed + FOR TESTING + RAISING cx_static_check. ENDCLASS. CLASS zcl_abapgit_ajson DEFINITION LOCAL FRIENDS ltcl_json_to_abap. @@ -1491,6 +1495,7 @@ CLASS ltcl_json_to_abap IMPLEMENTATION. lo_nodes->add( '/ |timestamp1 |str |2020-07-28T00:00:00 | ' ). lo_nodes->add( '/ |timestamp2 |str |2020-07-28T00:00:00Z | ' ). lo_nodes->add( '/ |timestamp3 |str |2020-07-28T01:00:00+01:00 | ' ). + lo_nodes->add( '/ |timestamp4 |str |2020-07-28T01:00:00+01:00 | ' ). CREATE OBJECT lo_cut. lo_cut->to_abap( @@ -1509,6 +1514,7 @@ CLASS ltcl_json_to_abap IMPLEMENTATION. ls_exp-timestamp1 = lv_exp_timestamp. ls_exp-timestamp2 = lv_exp_timestamp. ls_exp-timestamp3 = lv_exp_timestamp. + ls_exp-timestamp4 = lv_exp_timestamp. cl_abap_unit_assert=>assert_equals( act = ls_mock @@ -1576,6 +1582,28 @@ CLASS ltcl_json_to_abap IMPLEMENTATION. ENDMETHOD. + METHOD to_abap_str_to_packed. + + DATA lo_cut TYPE REF TO lcl_json_to_abap. + DATA lv_act TYPE p LENGTH 10 DECIMALS 3. + DATA lo_nodes TYPE REF TO lcl_nodes_helper. + + CREATE OBJECT lo_nodes. + lo_nodes->add( ' | |str |1.3333 | ' ). + + CREATE OBJECT lo_cut. + lo_cut->to_abap( + EXPORTING + it_nodes = lo_nodes->sorted( ) + CHANGING + c_container = lv_act ). + + cl_abap_unit_assert=>assert_equals( + act = lv_act + exp = '1.333' ). + + ENDMETHOD. + METHOD to_abap_value. DATA lo_cut TYPE REF TO lcl_json_to_abap.