From 3a1e10998254d4897c77c568f054116d559c727c Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Fri, 2 Aug 2024 12:23:23 +0200 Subject: [PATCH 1/3] serialize timestampl --- src/json/#ui2#cl_json.clas.testclasses.abap | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/json/#ui2#cl_json.clas.testclasses.abap b/src/json/#ui2#cl_json.clas.testclasses.abap index 5efccb69..f54f8da6 100644 --- a/src/json/#ui2#cl_json.clas.testclasses.abap +++ b/src/json/#ui2#cl_json.clas.testclasses.abap @@ -638,6 +638,7 @@ CLASS ltcl_serialize DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT F METHODS serialize_timestamp_iso FOR TESTING RAISING cx_static_check. METHODS serialize_timestamp_iso_empty FOR TESTING RAISING cx_static_check. METHODS serialize_timestampl_iso_empty FOR TESTING RAISING cx_static_check. + METHODS serialize_timestampl_iso FOR TESTING RAISING cx_static_check. METHODS camel_case FOR TESTING RAISING cx_static_check. METHODS character10 FOR TESTING RAISING cx_static_check. METHODS character10_value FOR TESTING RAISING cx_static_check. @@ -664,6 +665,20 @@ ENDCLASS. CLASS ltcl_serialize IMPLEMENTATION. + METHOD serialize_timestampl_iso. + DATA: BEGIN OF foo, + ts TYPE timestampl, + END OF foo. + DATA lv_json TYPE string. + GET TIME STAMP FIELD foo-ts. + lv_json = /ui2/cl_json=>serialize( + data = foo + ts_as_iso8601 = abap_true ). + cl_abap_unit_assert=>assert_text_matches( + text = lv_json + pattern = '\{"TS":"\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.0000000Z"\}' ). + ENDMETHOD. + METHOD serialize_empty_xstring. DATA: BEGIN OF is_metadata, foo TYPE xstring, From e12a59d46c47d772dfb3ee4f690c5053975289e9 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Fri, 2 Aug 2024 12:25:19 +0200 Subject: [PATCH 2/3] fix test --- src/json/#ui2#cl_json.clas.testclasses.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/json/#ui2#cl_json.clas.testclasses.abap b/src/json/#ui2#cl_json.clas.testclasses.abap index f54f8da6..8bb3fdd9 100644 --- a/src/json/#ui2#cl_json.clas.testclasses.abap +++ b/src/json/#ui2#cl_json.clas.testclasses.abap @@ -676,7 +676,7 @@ CLASS ltcl_serialize IMPLEMENTATION. ts_as_iso8601 = abap_true ). cl_abap_unit_assert=>assert_text_matches( text = lv_json - pattern = '\{"TS":"\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.0000000Z"\}' ). + pattern = '\{"TS":"\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\d\d\d\d\d\d\dZ"\}' ). ENDMETHOD. METHOD serialize_empty_xstring. From 4ed7be247ec53225f12c3bd1ceb1ae764a65b015 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Fri, 2 Aug 2024 12:40:07 +0200 Subject: [PATCH 3/3] fix --- src/json/#ui2#cl_json.clas.abap | 5 ++++- src/json/#ui2#cl_json.clas.testclasses.abap | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/json/#ui2#cl_json.clas.abap b/src/json/#ui2#cl_json.clas.abap index bdddca35..e7f873f6 100644 --- a/src/json/#ui2#cl_json.clas.abap +++ b/src/json/#ui2#cl_json.clas.abap @@ -136,8 +136,11 @@ CLASS /ui2/cl_json IMPLEMENTATION. OR lo_type->absolute_name = `\TYPE=TIMESTAMPL` ). IF data IS INITIAL. r_json = |""|. - ELSE. + ELSEIF lo_type->absolute_name = `\TYPE=TIMESTAMP`. r_json = |"{ data TIMESTAMP = ISO }.0000000Z"|. + ELSE. + r_json = |"{ data TIMESTAMP = ISO }Z"|. + REPLACE ',' IN r_json WITH '.'. ENDIF. ELSE. r_json = |{ data }|. diff --git a/src/json/#ui2#cl_json.clas.testclasses.abap b/src/json/#ui2#cl_json.clas.testclasses.abap index 8bb3fdd9..ff484bea 100644 --- a/src/json/#ui2#cl_json.clas.testclasses.abap +++ b/src/json/#ui2#cl_json.clas.testclasses.abap @@ -676,7 +676,7 @@ CLASS ltcl_serialize IMPLEMENTATION. ts_as_iso8601 = abap_true ). cl_abap_unit_assert=>assert_text_matches( text = lv_json - pattern = '\{"TS":"\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\d\d\d\d\d\d\dZ"\}' ). + pattern = '\{"TS":"\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d\.\d\d\d\d\d\d\dZ"\}' ). ENDMETHOD. METHOD serialize_empty_xstring.