From 56e2ef39830f84bd6c85de4e504a02011172f883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Thu, 19 Dec 2019 10:30:22 +0100 Subject: [PATCH] Fix: Preserve spaces in error messages (#3128) * Fix: Preserve spaces in error messages * cleanup + fix linter --- src/zcl_abapgit_message_helper.clas.abap | 79 +++++++++++++++++++++--- 1 file changed, 69 insertions(+), 10 deletions(-) diff --git a/src/zcl_abapgit_message_helper.clas.abap b/src/zcl_abapgit_message_helper.clas.abap index d969c2d0a..a210f1857 100644 --- a/src/zcl_abapgit_message_helper.clas.abap +++ b/src/zcl_abapgit_message_helper.clas.abap @@ -34,6 +34,21 @@ CLASS zcl_abapgit_message_helper DEFINITION PROTECTED SECTION. PRIVATE SECTION. + TYPES: + BEGIN OF ty_msg, + msgv1 TYPE symsgv, + msgv2 TYPE symsgv, + msgv3 TYPE symsgv, + msgv4 TYPE symsgv, + END OF ty_msg. + + CLASS-METHODS: + split_text + IMPORTING + iv_text TYPE string + RETURNING + VALUE(rs_msg) TYPE ty_msg. + DATA: mi_t100_message TYPE REF TO if_t100_message. @@ -266,20 +281,11 @@ CLASS ZCL_ABAPGIT_MESSAGE_HELPER IMPLEMENTATION. METHOD set_msg_vars_for_clike. - TYPES: - BEGIN OF ty_msg, - msgv1 TYPE symsgv, - msgv2 TYPE symsgv, - msgv3 TYPE symsgv, - msgv4 TYPE symsgv, - END OF ty_msg. - DATA: ls_msg TYPE ty_msg, lv_dummy TYPE string. - ls_msg = iv_text. + ls_msg = split_text( iv_text ). - " &1&2&3&4&5&6&7&8 MESSAGE e001(00) WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO lv_dummy. @@ -359,4 +365,57 @@ CLASS ZCL_ABAPGIT_MESSAGE_HELPER IMPLEMENTATION. " a kind of MOVE where all conversion errors are signalled by exceptions WRITE iv_arg LEFT-JUSTIFIED TO ev_target. ENDMETHOD. + + + METHOD split_text. + + CONSTANTS: + lc_length_of_msgv TYPE i VALUE 50, + lc_offset_of_last_character TYPE i VALUE 49. + + TYPES: + ty_char200 TYPE c LENGTH 200. + + DATA: + lv_text TYPE ty_char200, + lv_msg_var TYPE c LENGTH lc_length_of_msgv, + lv_rest TYPE ty_char200, + lv_index TYPE syst-index. + + lv_text = iv_text. + + DO 4 TIMES. + + lv_index = sy-index. + + CALL FUNCTION 'TEXT_SPLIT' + EXPORTING + length = lc_length_of_msgv + text = lv_text + IMPORTING + line = lv_msg_var + rest = lv_rest. + + IF lv_msg_var+lc_offset_of_last_character = space. + " keep the space at the beginning of the rest + " because otherwise it's lost + lv_rest = | { lv_rest }|. + ENDIF. + + lv_text = lv_rest. + + CASE lv_index. + WHEN 1. + rs_msg-msgv1 = lv_msg_var. + WHEN 2. + rs_msg-msgv2 = lv_msg_var. + WHEN 3. + rs_msg-msgv3 = lv_msg_var. + WHEN 4. + rs_msg-msgv4 = lv_msg_var. + ENDCASE. + + ENDDO. + + ENDMETHOD. ENDCLASS.