LIKE LINE OF rt_objects.
diff --git a/src/ui/core/zcl_abapgit_gui.clas.abap b/src/ui/core/zcl_abapgit_gui.clas.abap
index ef5e6f477..9c9b5bfe2 100644
--- a/src/ui/core/zcl_abapgit_gui.clas.abap
+++ b/src/ui/core/zcl_abapgit_gui.clas.abap
@@ -115,7 +115,7 @@ ENDCLASS.
-CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
+CLASS zcl_abapgit_gui IMPLEMENTATION.
METHOD back.
@@ -373,7 +373,7 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
li_modal ?= ii_page.
rv_yes = li_modal->is_modal( ).
ENDIF.
- CATCH cx_sy_move_cast_error.
+ CATCH cx_sy_move_cast_error ##NO_HANDLER.
ENDTRY.
ENDMETHOD.
diff --git a/src/ui/core/zcl_abapgit_html.clas.abap b/src/ui/core/zcl_abapgit_html.clas.abap
index a8aaafdf7..f0936f9d6 100644
--- a/src/ui/core/zcl_abapgit_html.clas.abap
+++ b/src/ui/core/zcl_abapgit_html.clas.abap
@@ -48,6 +48,7 @@ CLASS zcl_abapgit_html DEFINITION
within_style TYPE abap_bool,
within_js TYPE abap_bool,
within_textarea TYPE abap_bool,
+ within_pre TYPE abap_bool,
indent TYPE i,
indent_str TYPE string,
END OF ty_indent_context .
@@ -59,6 +60,8 @@ CLASS zcl_abapgit_html DEFINITION
script_close TYPE abap_bool,
textarea_open TYPE abap_bool,
textarea_close TYPE abap_bool,
+ pre_open TYPE abap_bool,
+ pre_close TYPE abap_bool,
tag_close TYPE abap_bool,
curly_close TYPE abap_bool,
openings TYPE i,
@@ -85,7 +88,7 @@ ENDCLASS.
-CLASS ZCL_ABAPGIT_HTML IMPLEMENTATION.
+CLASS zcl_abapgit_html IMPLEMENTATION.
METHOD checkbox.
@@ -120,10 +123,6 @@ CLASS ZCL_ABAPGIT_HTML IMPLEMENTATION.
ENDMETHOD.
- METHOD set_debug_mode.
- gv_debug_mode = iv_mode.
- ENDMETHOD.
-
METHOD create.
CREATE OBJECT ri_instance TYPE zcl_abapgit_html.
IF iv_initial_chunk IS NOT INITIAL.
@@ -134,11 +133,11 @@ CLASS ZCL_ABAPGIT_HTML IMPLEMENTATION.
METHOD icon.
- DATA: lv_hint TYPE string,
- lv_name TYPE string,
- lv_color TYPE string,
- lv_class TYPE string,
- lv_onclick TYPE string.
+ DATA: lv_hint TYPE string,
+ lv_name TYPE string,
+ lv_color TYPE string,
+ lv_class TYPE string,
+ lv_onclick TYPE string.
SPLIT iv_name AT '/' INTO lv_name lv_color.
@@ -181,6 +180,17 @@ CLASS ZCL_ABAPGIT_HTML IMPLEMENTATION.
RETURN.
ENDIF.
+ " No indent for pre tags
+ IF ls_study-pre_open = abap_true.
+ cs_context-within_pre = abap_true.
+ RETURN.
+ ELSEIF ls_study-pre_close = abap_true.
+ cs_context-within_pre = abap_false.
+ RETURN.
+ ELSEIF cs_context-within_pre = abap_true.
+ RETURN.
+ ENDIF.
+
" First closing tag - shift back exceptionally
IF ( ls_study-script_close = abap_true
OR ls_study-style_close = abap_true
@@ -239,6 +249,11 @@ CLASS ZCL_ABAPGIT_HTML IMPLEMENTATION.
ENDMETHOD.
+ METHOD set_debug_mode.
+ gv_debug_mode = iv_mode.
+ ENDMETHOD.
+
+
METHOD study_line.
DATA: lv_line TYPE string,
@@ -309,6 +324,16 @@ CLASS ZCL_ABAPGIT_HTML IMPLEMENTATION.
ENDIF.
ENDIF.
+ " Pre (same assumptions as above)
+ IF is_context-within_pre = abap_true AND lv_len >= 5 AND lv_line(5) = '= 4 AND lv_line(4) = ' 0. " Not found
+ rs_result-pre_open = abap_true.
+ ENDIF.
+ ENDIF.
+
ENDMETHOD.
@@ -564,10 +589,10 @@ CLASS ZCL_ABAPGIT_HTML IMPLEMENTATION.
DATA lv_close_tag TYPE string.
DATA ls_data_attr LIKE LINE OF it_data_attrs.
- DATA: lv_class TYPE string,
- lv_id TYPE string,
+ DATA: lv_class TYPE string,
+ lv_id TYPE string,
lv_data_attr TYPE string,
- lv_title TYPE string.
+ lv_title TYPE string.
IF iv_id IS NOT INITIAL.
lv_id = | id="{ iv_id }"|.
diff --git a/src/ui/core/zcl_abapgit_html.clas.testclasses.abap b/src/ui/core/zcl_abapgit_html.clas.testclasses.abap
index 1e97e3232..09f920dd3 100644
--- a/src/ui/core/zcl_abapgit_html.clas.testclasses.abap
+++ b/src/ui/core/zcl_abapgit_html.clas.testclasses.abap
@@ -34,6 +34,8 @@ CLASS ltcl_html DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
indent3 FOR TESTING RAISING zcx_abapgit_exception,
indent4 FOR TESTING RAISING zcx_abapgit_exception,
indent5 FOR TESTING RAISING zcx_abapgit_exception,
+ indent6 FOR TESTING RAISING zcx_abapgit_exception,
+ indent7 FOR TESTING RAISING zcx_abapgit_exception,
style1 FOR TESTING RAISING zcx_abapgit_exception.
METHODS:
@@ -130,6 +132,59 @@ CLASS ltcl_html IMPLEMENTATION.
ENDMETHOD.
+ METHOD indent6.
+
+ " Content of textarea must not be indented
+ DATA lv_exp TYPE string.
+
+ mo_html->add( '' ).
+ mo_html->add( '' ).
+ mo_html->add( ' | ' ).
+
+ lv_exp = '' && cl_abap_char_utilities=>newline &&
+ '' && cl_abap_char_utilities=>newline &&
+ ' | '.
+
+ cl_abap_unit_assert=>assert_equals(
+ act = mo_html->render( )
+ exp = lv_exp ).
+
+ ENDMETHOD.
+
+ METHOD indent7.
+
+ " Content of pre tag must not be indented
+ DATA lv_exp TYPE string.
+
+ mo_html->add( '' ).
+ mo_html->add( '' ).
+ mo_html->add( 'Do not change' ).
+ mo_html->add( ' the indent' ).
+ mo_html->add( ' here' ).
+ mo_html->add( ' ' ).
+ mo_html->add( ' | ' ).
+
+ lv_exp = '' && cl_abap_char_utilities=>newline &&
+ '' && cl_abap_char_utilities=>newline &&
+ 'Do not change' && cl_abap_char_utilities=>newline &&
+ ' the indent' && cl_abap_char_utilities=>newline &&
+ ' here' && cl_abap_char_utilities=>newline &&
+ ' ' && cl_abap_char_utilities=>newline &&
+ ' | '.
+
+ cl_abap_unit_assert=>assert_equals(
+ act = mo_html->render( )
+ exp = lv_exp ).
+
+ ENDMETHOD.
+
+
METHOD style1.
DATA lv_exp TYPE string.
diff --git a/src/ui/lib/zcl_abapgit_exception_viewer.clas.abap b/src/ui/lib/zcl_abapgit_exception_viewer.clas.abap
index 31e1fc8ac..0dc5fa2f2 100644
--- a/src/ui/lib/zcl_abapgit_exception_viewer.clas.abap
+++ b/src/ui/lib/zcl_abapgit_exception_viewer.clas.abap
@@ -146,6 +146,7 @@ CLASS zcl_abapgit_exception_viewer IMPLEMENTATION.
METHOD goto_message.
+ DATA: lv_msg TYPE c LENGTH 100.
DATA: lt_bdcdata TYPE STANDARD TABLE OF bdcdata,
ls_bdcdata LIKE LINE OF lt_bdcdata.
@@ -177,17 +178,18 @@ CLASS zcl_abapgit_exception_viewer IMPLEMENTATION.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
STARTING NEW TASK 'GIT'
EXPORTING
- tcode = 'SE91'
- mode_val = 'E'
+ tcode = 'SE91'
+ mode_val = 'E'
TABLES
- using_tab = lt_bdcdata
+ using_tab = lt_bdcdata
EXCEPTIONS
- call_transaction_denied = 1
- tcode_invalid = 2
- OTHERS = 3.
+ system_failure = 1 MESSAGE lv_msg
+ communication_failure = 2 MESSAGE lv_msg
+ resource_failure = 3
+ OTHERS = 4.
IF sy-subrc <> 0.
- zcx_abapgit_exception=>raise_t100( ).
+ zcx_abapgit_exception=>raise( lv_msg ).
ENDIF.
ENDMETHOD.
diff --git a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap
index fe330fbeb..85babc732 100644
--- a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap
+++ b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap
@@ -243,7 +243,7 @@ ENDCLASS.
-CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
+CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION.
METHOD class_constructor.
@@ -261,7 +261,7 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
timezone = gv_time_zone
EXCEPTIONS
customizing_missing = 1
- OTHERS = 2.
+ OTHERS = 2 ##FM_SUBRC_OK.
ENDTRY.
ENDMETHOD.
diff --git a/src/ui/lib/zcl_abapgit_gui_page_hoc.clas.abap b/src/ui/lib/zcl_abapgit_gui_page_hoc.clas.abap
index 2a8ae8e53..ff2d8b1c9 100644
--- a/src/ui/lib/zcl_abapgit_gui_page_hoc.clas.abap
+++ b/src/ui/lib/zcl_abapgit_gui_page_hoc.clas.abap
@@ -54,7 +54,7 @@ ENDCLASS.
-CLASS ZCL_ABAPGIT_GUI_PAGE_HOC IMPLEMENTATION.
+CLASS zcl_abapgit_gui_page_hoc IMPLEMENTATION.
METHOD constructor.
@@ -96,14 +96,14 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_HOC IMPLEMENTATION.
IF ls_control-page_menu_provider IS NOT BOUND. " try component itself
TRY.
ls_control-page_menu_provider ?= ii_child_component.
- CATCH cx_sy_move_cast_error.
+ CATCH cx_sy_move_cast_error ##NO_HANDLER.
ENDTRY.
ENDIF.
IF ls_control-page_title_provider IS NOT BOUND. " try component itself
TRY.
ls_control-page_title_provider ?= ii_child_component.
- CATCH cx_sy_move_cast_error.
+ CATCH cx_sy_move_cast_error ##NO_HANDLER.
ENDTRY.
ENDIF.
@@ -132,7 +132,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_HOC IMPLEMENTATION.
TRY.
li_modal ?= mi_child.
rv_is_modal = li_modal->is_modal( ).
- CATCH cx_sy_move_cast_error.
+ CATCH cx_sy_move_cast_error ##NO_HANDLER.
ENDTRY.
ENDMETHOD.
@@ -141,7 +141,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_HOC IMPLEMENTATION.
METHOD detect_title_provider.
TRY.
ri_ref ?= mi_child.
- CATCH cx_sy_move_cast_error.
+ CATCH cx_sy_move_cast_error ##NO_HANDLER.
ENDTRY.
ENDMETHOD.
diff --git a/src/ui/lib/zcl_abapgit_gui_picklist.clas.xml b/src/ui/lib/zcl_abapgit_gui_picklist.clas.xml
index 3830c0365..d11fbd3be 100644
--- a/src/ui/lib/zcl_abapgit_gui_picklist.clas.xml
+++ b/src/ui/lib/zcl_abapgit_gui_picklist.clas.xml
@@ -5,7 +5,7 @@
ZCL_ABAPGIT_GUI_PICKLIST
E
- abapGit - Pick from list
+ abapGit - GUI Pick List
1
X
X
diff --git a/src/ui/lib/zcl_abapgit_log_viewer.clas.abap b/src/ui/lib/zcl_abapgit_log_viewer.clas.abap
index 9c86a540a..b78d2fa71 100644
--- a/src/ui/lib/zcl_abapgit_log_viewer.clas.abap
+++ b/src/ui/lib/zcl_abapgit_log_viewer.clas.abap
@@ -30,6 +30,8 @@ CLASS zcl_abapgit_log_viewer DEFINITION
source TYPE icon_d,
callstack TYPE icon_d,
cell_type TYPE salv_t_int4_column,
+ id TYPE sy-msgid,
+ number TYPE sy-msgno,
END OF ty_log_out.
TYPES:
ty_log_outs TYPE STANDARD TABLE OF ty_log_out
@@ -91,7 +93,7 @@ ENDCLASS.
-CLASS ZCL_ABAPGIT_LOG_VIEWER IMPLEMENTATION.
+CLASS zcl_abapgit_log_viewer IMPLEMENTATION.
METHOD calculate_cell_type.
@@ -230,7 +232,7 @@ CLASS ZCL_ABAPGIT_LOG_VIEWER IMPLEMENTATION.
CLEAR: ls_log.
- ls_log-msg = lr_message->text.
+ ls_log-msg = lr_message->text.
ls_log-exception = lr_message->exception.
CASE lr_message->type.
@@ -268,6 +270,10 @@ CLASS ZCL_ABAPGIT_LOG_VIEWER IMPLEMENTATION.
CATCH cx_sy_move_cast_error ##NO_HANDLER.
ENDTRY.
+ ELSEIF lr_message->id IS NOT INITIAL AND lr_message->number IS NOT INITIAL.
+ ls_log-id = lr_message->id.
+ ls_log-number = lr_message->number.
+ ls_log-longtext = icon_system_help.
ENDIF.
ls_log-obj_type = lr_message->obj_type.
@@ -387,6 +393,16 @@ CLASS ZCL_ABAPGIT_LOG_VIEWER IMPLEMENTATION.
lo_column->set_technical( abap_true ).
ENDIF.
+ LOOP AT gt_log TRANSPORTING NO FIELDS WHERE id IS NOT INITIAL.
+ EXIT.
+ ENDLOOP.
+ IF sy-subrc <> 0.
+ lo_column = lo_columns->get_column( |ID| ).
+ lo_column->set_technical( abap_true ).
+ lo_column = lo_columns->get_column( |NUMBER| ).
+ lo_column->set_technical( abap_true ).
+ ENDIF.
+
ls_position = zcl_abapgit_popups=>center(
iv_width = 125
iv_height = 20 ).
@@ -424,31 +440,34 @@ CLASS ZCL_ABAPGIT_LOG_VIEWER IMPLEMENTATION.
lt_dummy2 TYPE TABLE OF dval,
ls_help_info TYPE help_info.
- IF is_log-exception IS NOT BOUND.
+ IF is_log-exception IS BOUND.
+ TRY.
+ lx_abapgit ?= is_log-exception.
+ CATCH cx_sy_move_cast_error.
+ RETURN.
+ ENDTRY.
+
+ lv_docu_object = lx_abapgit->if_t100_message~t100key-msgid && lx_abapgit->if_t100_message~t100key-msgno.
+ ls_help_info-messageid = lx_abapgit->if_t100_message~t100key-msgid.
+ ls_help_info-messagenr = lx_abapgit->if_t100_message~t100key-msgno.
+ ls_help_info-msgv1 = lx_abapgit->msgv1.
+ ls_help_info-msgv2 = lx_abapgit->msgv2.
+ ls_help_info-msgv3 = lx_abapgit->msgv3.
+ ls_help_info-msgv4 = lx_abapgit->msgv4.
+ ELSEIF is_log-id IS NOT INITIAL AND is_log-number IS NOT INITIAL.
+ lv_docu_object = is_log-id && is_log-number.
+ ls_help_info-messageid = is_log-id.
+ ls_help_info-messagenr = is_log-number.
+ ELSE.
RETURN.
ENDIF.
- TRY.
- lx_abapgit ?= is_log-exception.
- CATCH cx_sy_move_cast_error.
- RETURN.
- ENDTRY.
-
- lv_docu_object = lx_abapgit->if_t100_message~t100key-msgid.
- lv_docu_object+2 = lx_abapgit->if_t100_message~t100key-msgno.
-
ls_help_info-call = 'D'.
ls_help_info-spras = sy-langu.
- ls_help_info-messageid = lx_abapgit->if_t100_message~t100key-msgid.
- ls_help_info-messagenr = lx_abapgit->if_t100_message~t100key-msgno.
ls_help_info-message = is_log-msg.
ls_help_info-title = 'Longtext'.
ls_help_info-docuid = 'NA'.
- ls_help_info-docuobject = lv_docu_object.
- ls_help_info-msgv1 = lx_abapgit->msgv1.
- ls_help_info-msgv2 = lx_abapgit->msgv2.
- ls_help_info-msgv3 = lx_abapgit->msgv3.
- ls_help_info-msgv4 = lx_abapgit->msgv4.
+ ls_help_info-docuobject = condense( lv_docu_object ).
CALL FUNCTION 'HELP_START'
EXPORTING
diff --git a/src/ui/pages/codi/zcl_abapgit_gui_page_codi_base.clas.abap b/src/ui/pages/codi/zcl_abapgit_gui_page_codi_base.clas.abap
index 4a18a629b..822f53c53 100644
--- a/src/ui/pages/codi/zcl_abapgit_gui_page_codi_base.clas.abap
+++ b/src/ui/pages/codi/zcl_abapgit_gui_page_codi_base.clas.abap
@@ -127,7 +127,7 @@ ENDCLASS.
-CLASS ZCL_ABAPGIT_GUI_PAGE_CODI_BASE IMPLEMENTATION.
+CLASS zcl_abapgit_gui_page_codi_base IMPLEMENTATION.
METHOD apply_filter_kind.
@@ -256,7 +256,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODI_BASE IMPLEMENTATION.
ENDIF.
ENDCASE.
- CATCH cx_root.
+ CATCH cx_root ##NO_HANDLER.
" leave empty, fallback to default, defined elsewhere
ENDTRY.
@@ -340,7 +340,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODI_BASE IMPLEMENTATION.
RETURN.
ENDIF.
- CATCH zcx_abapgit_exception.
+ CATCH zcx_abapgit_exception ##NO_HANDLER.
ENDTRY.
TRY.
diff --git a/src/ui/pages/codi/zcl_abapgit_gui_page_whereused.clas.xml b/src/ui/pages/codi/zcl_abapgit_gui_page_whereused.clas.xml
index 1f1873811..ad32d13b8 100644
--- a/src/ui/pages/codi/zcl_abapgit_gui_page_whereused.clas.xml
+++ b/src/ui/pages/codi/zcl_abapgit_gui_page_whereused.clas.xml
@@ -5,7 +5,7 @@
ZCL_ABAPGIT_GUI_PAGE_WHEREUSED
E
- abapGit where-used page
+ abapGit - GUI Where-used
1
X
X
diff --git a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap
index 3125d605c..690b144cc 100644
--- a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap
+++ b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap
@@ -422,7 +422,7 @@ CLASS zcl_abapgit_gui_page_sett_info IMPLEMENTATION.
DATA:
ls_stats TYPE ty_stats,
ls_item TYPE zif_abapgit_definitions=>ty_item,
- lt_supported_types TYPE zcl_abapgit_objects=>ty_types_tt.
+ lt_supported_types TYPE zif_abapgit_objects=>ty_types_tt.
ls_stats-measure = 'Number of Objects'.
diff --git a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_pers.clas.abap b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_pers.clas.abap
index 7e1209753..71f423278 100644
--- a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_pers.clas.abap
+++ b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_pers.clas.abap
@@ -317,7 +317,7 @@ CLASS zcl_abapgit_gui_page_sett_pers IMPLEMENTATION.
lo_colors->set(
iv_key = lv_l
iv_val = lv_l ).
- CATCH zcx_abapgit_exception.
+ CATCH zcx_abapgit_exception ##NO_HANDLER.
ENDTRY.
ENDLOOP.
diff --git a/src/ui/pages/zcl_abapgit_gui_page_debuginfo.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_debuginfo.clas.abap
index 9fc930243..c2b561118 100644
--- a/src/ui/pages/zcl_abapgit_gui_page_debuginfo.clas.abap
+++ b/src/ui/pages/zcl_abapgit_gui_page_debuginfo.clas.abap
@@ -298,15 +298,15 @@ CLASS zcl_abapgit_gui_page_debuginfo IMPLEMENTATION.
DATA: lv_list TYPE string,
li_html TYPE REF TO zif_abapgit_html,
- lt_types TYPE zcl_abapgit_objects=>ty_types_tt,
+ lt_types TYPE zif_abapgit_objects=>ty_types_tt,
lv_type LIKE LINE OF lt_types,
lt_obj TYPE STANDARD TABLE OF ko100 WITH DEFAULT KEY,
lv_class TYPE seoclsname,
li_object TYPE REF TO zif_abapgit_object,
ls_item TYPE zif_abapgit_definitions=>ty_item,
ls_metadata TYPE zif_abapgit_definitions=>ty_metadata,
- lv_step TYPE zif_abapgit_definitions=>ty_deserialization_step,
- lt_steps TYPE zif_abapgit_definitions=>ty_deserialization_step_tt.
+ lv_step TYPE zif_abapgit_objects=>ty_deserialization_step,
+ lt_steps TYPE zif_abapgit_objects=>ty_deserialization_step_tt.
FIELD-SYMBOLS: TYPE ko100.
diff --git a/src/ui/pages/zcl_abapgit_gui_page_patch.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_patch.clas.abap
index 9391f8a5a..922f9e049 100644
--- a/src/ui/pages/zcl_abapgit_gui_page_patch.clas.abap
+++ b/src/ui/pages/zcl_abapgit_gui_page_patch.clas.abap
@@ -528,7 +528,10 @@ CLASS zcl_abapgit_gui_page_patch IMPLEMENTATION.
lv_patched TYPE abap_bool,
lv_is_patch_possible TYPE abap_bool.
- lv_patched = get_diff_object( iv_filename )->is_line_patched( iv_index ).
+ " In case an object is falsely detected as changed, filename is empty and there's no diff object
+ IF iv_filename IS NOT INITIAL.
+ lv_patched = get_diff_object( iv_filename )->is_line_patched( iv_index ).
+ ENDIF.
lv_is_patch_possible = is_patch_line_possible( is_diff_line ).
diff --git a/src/ui/pages/zcl_abapgit_gui_page_stage.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_stage.clas.abap
index 79c55fd92..9f4dba922 100644
--- a/src/ui/pages/zcl_abapgit_gui_page_stage.clas.abap
+++ b/src/ui/pages/zcl_abapgit_gui_page_stage.clas.abap
@@ -137,7 +137,7 @@ ENDCLASS.
-CLASS ZCL_ABAPGIT_GUI_PAGE_STAGE IMPLEMENTATION.
+CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION.
METHOD check_selected.
@@ -281,7 +281,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_STAGE IMPLEMENTATION.
es_item = ls_item ).
ls_changed_by-item = ls_item.
INSERT ls_changed_by INTO TABLE lt_changed_by_remote.
- CATCH zcx_abapgit_exception.
+ CATCH zcx_abapgit_exception ##NO_HANDLER.
ENDTRY.
ENDLOOP.
@@ -348,7 +348,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_STAGE IMPLEMENTATION.
rt_transports = li_cts_api->get_transports_for_list( lt_items ).
- CATCH zcx_abapgit_exception.
+ CATCH zcx_abapgit_exception ##NO_HANDLER.
ENDTRY.
ENDMETHOD.
diff --git a/src/ui/popups/zcl_abapgit_popup_branch_list.clas.abap b/src/ui/popups/zcl_abapgit_popup_branch_list.clas.abap
index 7e6d5e8c3..232395a02 100644
--- a/src/ui/popups/zcl_abapgit_popup_branch_list.clas.abap
+++ b/src/ui/popups/zcl_abapgit_popup_branch_list.clas.abap
@@ -22,6 +22,7 @@ CLASS zcl_abapgit_popup_branch_list DEFINITION
!iv_default_branch TYPE string OPTIONAL
!iv_show_new_option TYPE abap_bool DEFAULT abap_false.
+ PROTECTED SECTION.
PRIVATE SECTION.
DATA mv_repo_url TYPE string.
@@ -41,15 +42,6 @@ ENDCLASS.
CLASS zcl_abapgit_popup_branch_list IMPLEMENTATION.
- METHOD create.
- CREATE OBJECT ri_popup TYPE zcl_abapgit_popup_branch_list
- EXPORTING
- iv_url = iv_url
- iv_default_branch = iv_default_branch
- iv_show_new_option = iv_show_new_option.
- ENDMETHOD.
-
-
METHOD constructor.
mv_repo_url = iv_url.
mv_default_branch = zif_abapgit_git_definitions=>c_git_branch-heads_prefix && iv_default_branch.
@@ -57,14 +49,12 @@ CLASS zcl_abapgit_popup_branch_list IMPLEMENTATION.
ENDMETHOD.
- METHOD zif_abapgit_html_popup~create_picklist.
-
- CREATE OBJECT ro_picklist
+ METHOD create.
+ CREATE OBJECT ri_popup TYPE zcl_abapgit_popup_branch_list
EXPORTING
- iv_title = 'Choose Branch'
- it_list = fetch_branch_list( )
- ii_item_renderer = me.
-
+ iv_url = iv_url
+ iv_default_branch = iv_default_branch
+ iv_show_new_option = iv_show_new_option.
ENDMETHOD.
@@ -109,7 +99,6 @@ CLASS zcl_abapgit_popup_branch_list IMPLEMENTATION.
FIELD-SYMBOLS TYPE zif_abapgit_git_definitions=>ty_git_branch.
ASSIGN iv_item TO .
- ASSERT sy-subrc = 0.
" TODO render mv_default_branch properly, needs respecting support from the picklist components
@@ -120,4 +109,15 @@ CLASS zcl_abapgit_popup_branch_list IMPLEMENTATION.
ri_html = zcl_abapgit_html=>create( |{ -display_name }{ lv_head_marker }| ).
ENDMETHOD.
+
+
+ METHOD zif_abapgit_html_popup~create_picklist.
+
+ CREATE OBJECT ro_picklist
+ EXPORTING
+ iv_title = 'Choose Branch'
+ it_list = fetch_branch_list( )
+ ii_item_renderer = me.
+
+ ENDMETHOD.
ENDCLASS.
diff --git a/src/ui/popups/zcl_abapgit_popup_code_insp.clas.abap b/src/ui/popups/zcl_abapgit_popup_code_insp.clas.abap
index 4e39b9984..09b14720c 100644
--- a/src/ui/popups/zcl_abapgit_popup_code_insp.clas.abap
+++ b/src/ui/popups/zcl_abapgit_popup_code_insp.clas.abap
@@ -24,7 +24,7 @@ ENDCLASS.
-CLASS ZCL_ABAPGIT_POPUP_CODE_INSP IMPLEMENTATION.
+CLASS zcl_abapgit_popup_code_insp IMPLEMENTATION.
METHOD create.
@@ -44,7 +44,6 @@ CLASS ZCL_ABAPGIT_POPUP_CODE_INSP IMPLEMENTATION.
FIELD-SYMBOLS TYPE LINE OF zif_abapgit_code_inspector=>ty_variants.
ASSIGN iv_item TO .
- ASSERT sy-subrc = 0.
ri_html = zcl_abapgit_html=>create( |{ -name } - { -description }| ).
diff --git a/src/ui/popups/zcl_abapgit_popup_pull_request.clas.abap b/src/ui/popups/zcl_abapgit_popup_pull_request.clas.abap
index e6ed9f72b..327550038 100644
--- a/src/ui/popups/zcl_abapgit_popup_pull_request.clas.abap
+++ b/src/ui/popups/zcl_abapgit_popup_pull_request.clas.abap
@@ -67,7 +67,6 @@ CLASS zcl_abapgit_popup_pull_request IMPLEMENTATION.
FIELD-SYMBOLS TYPE zif_abapgit_pr_enum_provider=>ty_pull_request.
ASSIGN iv_item TO .
- ASSERT sy-subrc = 0.
ri_html = zcl_abapgit_html=>create( |{ -number } - { -title } @{ -user }| ).
diff --git a/src/ui/popups/zcl_abapgit_popup_tag_list.clas.abap b/src/ui/popups/zcl_abapgit_popup_tag_list.clas.abap
index 85ecdb296..fb99de911 100644
--- a/src/ui/popups/zcl_abapgit_popup_tag_list.clas.abap
+++ b/src/ui/popups/zcl_abapgit_popup_tag_list.clas.abap
@@ -18,6 +18,7 @@ CLASS zcl_abapgit_popup_tag_list DEFINITION
IMPORTING
iv_url TYPE string.
+ PROTECTED SECTION.
PRIVATE SECTION.
DATA mv_repo_url TYPE string.
@@ -34,26 +35,15 @@ ENDCLASS.
CLASS zcl_abapgit_popup_tag_list IMPLEMENTATION.
- METHOD create.
- CREATE OBJECT ri_popup TYPE zcl_abapgit_popup_tag_list
- EXPORTING
- iv_url = iv_url.
- ENDMETHOD.
-
-
METHOD constructor.
mv_repo_url = iv_url.
ENDMETHOD.
- METHOD zif_abapgit_html_popup~create_picklist.
-
- CREATE OBJECT ro_picklist
+ METHOD create.
+ CREATE OBJECT ri_popup TYPE zcl_abapgit_popup_tag_list
EXPORTING
- iv_title = 'Choose Tag'
- it_list = fetch_tag_list( )
- ii_item_renderer = me.
-
+ iv_url = iv_url.
ENDMETHOD.
@@ -80,9 +70,19 @@ CLASS zcl_abapgit_popup_tag_list IMPLEMENTATION.
FIELD-SYMBOLS TYPE zif_abapgit_git_definitions=>ty_git_branch.
ASSIGN iv_item TO .
- ASSERT sy-subrc = 0.
ri_html = zcl_abapgit_html=>create( |{ -display_name }| ).
ENDMETHOD.
+
+
+ METHOD zif_abapgit_html_popup~create_picklist.
+
+ CREATE OBJECT ro_picklist
+ EXPORTING
+ iv_title = 'Choose Tag'
+ it_list = fetch_tag_list( )
+ ii_item_renderer = me.
+
+ ENDMETHOD.
ENDCLASS.
diff --git a/src/ui/routing/zcl_abapgit_gui_router.clas.abap b/src/ui/routing/zcl_abapgit_gui_router.clas.abap
index 685b6af98..db7cf5da2 100644
--- a/src/ui/routing/zcl_abapgit_gui_router.clas.abap
+++ b/src/ui/routing/zcl_abapgit_gui_router.clas.abap
@@ -186,7 +186,8 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
EXCEPTIONS
communication_failure = 1 MESSAGE lv_msg
system_failure = 2 MESSAGE lv_msg
- OTHERS = 3.
+ resource_failure = 3
+ OTHERS = 4.
IF sy-subrc <> 0.
lv_msg = |Error starting transaction { iv_tcode }: { lv_msg }|.
MESSAGE lv_msg TYPE 'I'.
@@ -478,6 +479,22 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
ENDMETHOD.
+ METHOD go_stage_transport.
+
+ DATA lt_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt.
+ DATA lo_repo TYPE REF TO zcl_abapgit_repo.
+
+ lt_r_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_select_wb_tc_tr_and_tsk( ).
+
+ lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
+
+ CREATE OBJECT ro_filter.
+ ro_filter->set_filter_values( iv_package = lo_repo->get_package( )
+ it_r_trkorr = lt_r_trkorr ).
+
+ ENDMETHOD.
+
+
METHOD jump_display_transport.
DATA:
@@ -762,6 +779,28 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
ENDMETHOD.
+ METHOD zip_export_transport.
+
+ DATA lo_obj_filter_trans TYPE REF TO zcl_abapgit_object_filter_tran.
+ DATA lt_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt.
+ DATA lo_repo TYPE REF TO zcl_abapgit_repo.
+ DATA lv_xstr TYPE xstring.
+
+ lt_r_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_select_wb_tc_tr_and_tsk( ).
+ lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
+ lo_repo->refresh( ).
+ CREATE OBJECT lo_obj_filter_trans.
+ lo_obj_filter_trans->set_filter_values( iv_package = lo_repo->get_package( )
+ it_r_trkorr = lt_r_trkorr ).
+
+ lv_xstr = zcl_abapgit_zip=>encode_files( lo_repo->get_files_local_filtered( lo_obj_filter_trans ) ).
+ lo_repo->refresh( ).
+ file_download( iv_package = lo_repo->get_package( )
+ iv_xstr = lv_xstr ).
+
+ ENDMETHOD.
+
+
METHOD zip_services.
DATA: lv_key TYPE zif_abapgit_persistence=>ty_repo-key,
@@ -860,40 +899,4 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
ENDCASE.
ENDMETHOD.
-
- METHOD zip_export_transport.
-
- DATA lo_obj_filter_trans TYPE REF TO zcl_abapgit_object_filter_tran.
- DATA lt_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt.
- DATA lo_repo TYPE REF TO zcl_abapgit_repo.
- DATA lv_xstr TYPE xstring.
-
- lt_r_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_select_wb_tc_tr_and_tsk( ).
- lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
- lo_repo->refresh( ).
- CREATE OBJECT lo_obj_filter_trans.
- lo_obj_filter_trans->set_filter_values( iv_package = lo_repo->get_package( )
- it_r_trkorr = lt_r_trkorr ).
-
- lv_xstr = zcl_abapgit_zip=>encode_files( lo_repo->get_files_local_filtered( lo_obj_filter_trans ) ).
- lo_repo->refresh( ).
- file_download( iv_package = lo_repo->get_package( )
- iv_xstr = lv_xstr ).
-
- ENDMETHOD.
-
- METHOD go_stage_transport.
-
- DATA lt_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt.
- DATA lo_repo TYPE REF TO zcl_abapgit_repo.
-
- lt_r_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_select_wb_tc_tr_and_tsk( ).
-
- lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
-
- CREATE OBJECT ro_filter.
- ro_filter->set_filter_values( iv_package = lo_repo->get_package( )
- it_r_trkorr = lt_r_trkorr ).
-
- ENDMETHOD.
ENDCLASS.
diff --git a/src/ui/zabapgit_css_theme_dark.w3mi.data.css b/src/ui/zabapgit_css_theme_dark.w3mi.data.css
index e6e867b36..2d59d8e4c 100644
--- a/src/ui/zabapgit_css_theme_dark.w3mi.data.css
+++ b/src/ui/zabapgit_css_theme_dark.w3mi.data.css
@@ -263,4 +263,4 @@ div.log { color: var(--theme-greyscale-dark); }
.dialog input[readonly] {
background-color: var(--theme-greyscale-dark);
color: var(--theme-greyscale-medium);
-}
+}
diff --git a/src/ui/zcl_abapgit_popups.clas.locals_imp.abap b/src/ui/zcl_abapgit_popups.clas.locals_imp.abap
index 5facf3f92..1bbfcc52a 100644
--- a/src/ui/zcl_abapgit_popups.clas.locals_imp.abap
+++ b/src/ui/zcl_abapgit_popups.clas.locals_imp.abap
@@ -248,7 +248,7 @@ CLASS lcl_object_decision_list IMPLEMENTATION.
TRY.
lo_columns->get_column( |{ c_fieldname_obj_type }| ).
lv_object_list = abap_true.
- CATCH cx_salv_not_found.
+ CATCH cx_salv_not_found ##NO_HANDLER.
ENDTRY.
setup_columns(
diff --git a/src/ui/zif_abapgit_popups.intf.abap b/src/ui/zif_abapgit_popups.intf.abap
index d6217dbcb..d921b749e 100644
--- a/src/ui/zif_abapgit_popups.intf.abap
+++ b/src/ui/zif_abapgit_popups.intf.abap
@@ -12,7 +12,7 @@ INTERFACE zif_abapgit_popups
show_icon TYPE abap_bool,
center TYPE abap_bool,
END OF ty_alv_column,
- ty_alv_column_tt TYPE TABLE OF ty_alv_column WITH DEFAULT KEY.
+ ty_alv_column_tt TYPE STANDARD TABLE OF ty_alv_column WITH DEFAULT KEY.
TYPES:
BEGIN OF ty_popup_position,
diff --git a/src/utils/zcl_abapgit_convert.clas.abap b/src/utils/zcl_abapgit_convert.clas.abap
index c395457e0..f85d5f97e 100644
--- a/src/utils/zcl_abapgit_convert.clas.abap
+++ b/src/utils/zcl_abapgit_convert.clas.abap
@@ -85,7 +85,7 @@ CLASS zcl_abapgit_convert DEFINITION
VALUE(rv_xstr) TYPE xstring .
CLASS-METHODS xstring_to_bintab
IMPORTING
- !iv_xstr TYPE xstring
+ !iv_xstr TYPE xsequence
EXPORTING
!ev_size TYPE i
!et_bintab TYPE STANDARD TABLE .
@@ -144,6 +144,7 @@ ENDCLASS.
CLASS zcl_abapgit_convert IMPLEMENTATION.
+
METHOD base64_to_xstring.
rv_xstr = cl_http_utility=>decode_x_base64( iv_base64 ).
@@ -207,32 +208,6 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
- METHOD language_sap1_to_bcp47.
- DATA lv_converter_instance TYPE REF TO object.
- DATA lv_converter_class_name TYPE string VALUE `CL_AFF_LANGUAGE_CONVERTER`.
-
- TRY.
- CALL METHOD (lv_converter_class_name)=>create_instance
- RECEIVING
- result = lv_converter_instance.
-
- TRY.
- CALL METHOD lv_converter_instance->(`IF_AFF_LANGUAGE_CONVERTER~SAP1_TO_BCP47`)
- EXPORTING
- language = im_lang_sap1
- RECEIVING
- result = re_lang_bcp47.
- CATCH cx_static_check.
- RAISE no_assignment.
- ENDTRY.
- CATCH cx_sy_dyn_call_error.
- TRY.
- re_lang_bcp47 = lcl_bcp47_language_table=>sap1_to_bcp47( im_lang_sap1 ).
- CATCH zcx_abapgit_exception.
- RAISE no_assignment.
- ENDTRY.
- ENDTRY.
- ENDMETHOD.
METHOD language_bcp47_to_sap1.
DATA lv_converter_instance TYPE REF TO object.
@@ -289,6 +264,35 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDTRY.
ENDMETHOD.
+
+ METHOD language_sap1_to_bcp47.
+ DATA lv_converter_instance TYPE REF TO object.
+ DATA lv_converter_class_name TYPE string VALUE `CL_AFF_LANGUAGE_CONVERTER`.
+
+ TRY.
+ CALL METHOD (lv_converter_class_name)=>create_instance
+ RECEIVING
+ result = lv_converter_instance.
+
+ TRY.
+ CALL METHOD lv_converter_instance->(`IF_AFF_LANGUAGE_CONVERTER~SAP1_TO_BCP47`)
+ EXPORTING
+ language = im_lang_sap1
+ RECEIVING
+ result = re_lang_bcp47.
+ CATCH cx_static_check.
+ RAISE no_assignment.
+ ENDTRY.
+ CATCH cx_sy_dyn_call_error.
+ TRY.
+ re_lang_bcp47 = lcl_bcp47_language_table=>sap1_to_bcp47( im_lang_sap1 ).
+ CATCH zcx_abapgit_exception.
+ RAISE no_assignment.
+ ENDTRY.
+ ENDTRY.
+ ENDMETHOD.
+
+
METHOD language_sap1_to_sap2.
TRY.
@@ -381,6 +385,42 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
+ METHOD uccp.
+
+ DATA lv_class TYPE string.
+ DATA lv_xstr TYPE xstring.
+ DATA lo_instance TYPE REF TO object.
+
+ lv_class = 'CL_ABAP_CONV_IN_CE'.
+
+ TRY.
+ CALL METHOD (lv_class)=>uccp
+ EXPORTING
+ uccp = iv_uccp
+ RECEIVING
+ char = rv_char.
+ CATCH cx_sy_dyn_call_illegal_class.
+ lv_xstr = iv_uccp.
+
+ CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_in
+ EXPORTING
+ codepage = 'UTF-16'
+ RECEIVING
+ instance = lo_instance.
+
+* convert endianness
+ CONCATENATE lv_xstr+1(1) lv_xstr(1) INTO lv_xstr IN BYTE MODE.
+
+ CALL METHOD lo_instance->('IF_ABAP_CONV_IN~CONVERT')
+ EXPORTING
+ source = lv_xstr
+ RECEIVING
+ result = rv_char.
+ ENDTRY.
+
+ ENDMETHOD.
+
+
METHOD xstring_remove_bom.
rv_xstr = iv_xstr.
@@ -405,10 +445,13 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
FIELD-SYMBOLS TYPE any.
-
CLEAR et_bintab.
ev_size = xstrlen( iv_xstr ).
+ IF iv_xstr IS INITIAL.
+ RETURN.
+ ENDIF.
+
APPEND INITIAL LINE TO et_bintab ASSIGNING .
lv_struct = boolc(
cl_abap_typedescr=>describe_by_data( )->type_kind = cl_abap_typedescr=>typekind_struct1 ).
@@ -418,7 +461,9 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
= iv_xstr.
lv_length = cl_abap_typedescr=>describe_by_data( )->length.
- lv_iterations = ev_size DIV lv_length.
+ ASSERT lv_length > 0.
+
+ lv_iterations = ( ev_size - 1 ) DIV lv_length.
DO lv_iterations TIMES.
lv_offset = sy-index * lv_length.
@@ -493,39 +538,4 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
GET BIT 8 OF iv_x INTO rv_bitbyte+7(1).
ENDMETHOD.
-
- METHOD uccp.
-
- DATA lv_class TYPE string.
- DATA lv_xstr TYPE xstring.
- DATA lo_instance TYPE REF TO object.
-
- lv_class = 'CL_ABAP_CONV_IN_CE'.
-
- TRY.
- CALL METHOD (lv_class)=>uccp
- EXPORTING
- uccp = iv_uccp
- RECEIVING
- char = rv_char.
- CATCH cx_sy_dyn_call_illegal_class.
- lv_xstr = iv_uccp.
-
- CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_in
- EXPORTING
- codepage = 'UTF-16'
- RECEIVING
- instance = lo_instance.
-
-* convert endianness
- CONCATENATE lv_xstr+1(1) lv_xstr(1) INTO lv_xstr IN BYTE MODE.
-
- CALL METHOD lo_instance->('IF_ABAP_CONV_IN~CONVERT')
- EXPORTING
- source = lv_xstr
- RECEIVING
- result = rv_char.
- ENDTRY.
-
- ENDMETHOD.
ENDCLASS.
diff --git a/src/utils/zcl_abapgit_convert.clas.locals_imp.abap b/src/utils/zcl_abapgit_convert.clas.locals_imp.abap
index e7606c952..1b153248f 100644
--- a/src/utils/zcl_abapgit_convert.clas.locals_imp.abap
+++ b/src/utils/zcl_abapgit_convert.clas.locals_imp.abap
@@ -125,16 +125,22 @@ CLASS lcl_bcp47_language_table DEFINITION CREATE PRIVATE.
bcp47_code TYPE string,
END OF ty_language_mapping,
ty_language_mappings TYPE STANDARD TABLE OF ty_language_mapping WITH DEFAULT KEY.
- CLASS-DATA gv_language_mappings TYPE ty_language_mappings.
+ CLASS-DATA gt_language_mappings TYPE ty_language_mappings.
CLASS-METHODS:
sap1_to_sap2
- IMPORTING im_sap1 TYPE sy-langu
- RETURNING VALUE(re_sap2) TYPE laiso
- RAISING zcx_abapgit_exception,
+ IMPORTING
+ im_sap1 TYPE sy-langu
+ RETURNING
+ VALUE(re_sap2) TYPE laiso
+ RAISING
+ zcx_abapgit_exception,
sap2_to_sap1
- IMPORTING im_sap2 TYPE laiso
- RETURNING VALUE(re_sap1) TYPE sy-langu
- RAISING zcx_abapgit_exception,
+ IMPORTING
+ im_sap2 TYPE laiso
+ RETURNING
+ VALUE(re_sap1) TYPE sy-langu
+ RAISING
+ zcx_abapgit_exception,
sap1_to_bcp47
IMPORTING
im_sap1 TYPE sy-langu
@@ -168,11 +174,11 @@ CLASS lcl_bcp47_language_table IMPLEMENTATION.
METHOD sap1_to_bcp47.
DATA lv_language_mapping TYPE ty_language_mapping.
- IF gv_language_mappings IS INITIAL OR lines( gv_language_mappings ) = 0.
+ IF gt_language_mappings IS INITIAL OR lines( gt_language_mappings ) = 0.
fill_language_mappings( ).
ENDIF.
- LOOP AT gv_language_mappings INTO lv_language_mapping WHERE sap1_code = im_sap1.
+ LOOP AT gt_language_mappings INTO lv_language_mapping WHERE sap1_code = im_sap1.
IF re_bcp47 IS INITIAL OR strlen( re_bcp47 ) > strlen( lv_language_mapping-bcp47_code ).
re_bcp47 = lv_language_mapping-bcp47_code.
ENDIF.
@@ -186,11 +192,11 @@ CLASS lcl_bcp47_language_table IMPLEMENTATION.
METHOD bcp47_to_sap1.
DATA lv_language_mapping TYPE ty_language_mapping.
- IF gv_language_mappings IS INITIAL OR lines( gv_language_mappings ) = 0.
+ IF gt_language_mappings IS INITIAL OR lines( gt_language_mappings ) = 0.
fill_language_mappings( ).
ENDIF.
- LOOP AT gv_language_mappings INTO lv_language_mapping.
+ LOOP AT gt_language_mappings INTO lv_language_mapping.
IF to_lower( lv_language_mapping-bcp47_code ) = to_lower( im_bcp47 ) AND re_sap1 IS INITIAL.
re_sap1 = lv_language_mapping-sap1_code.
ENDIF.
@@ -205,26 +211,26 @@ CLASS lcl_bcp47_language_table IMPLEMENTATION.
METHOD sap1_to_sap2.
DATA lv_language_mapping TYPE ty_language_mapping.
- IF gv_language_mappings IS INITIAL.
+ IF gt_language_mappings IS INITIAL.
fill_language_mappings( ).
ENDIF.
- READ TABLE gv_language_mappings WITH KEY sap1_code = im_sap1 INTO lv_language_mapping.
+ READ TABLE gt_language_mappings WITH KEY sap1_code = im_sap1 INTO lv_language_mapping.
re_sap2 = lv_language_mapping-sap2_code.
IF re_sap2 IS INITIAL.
- zcx_abapgit_exception=>raise( |Could not convert SAP1 language code { im_sap1 } to SAP2 language code.| ).
+ zcx_abapgit_exception=>raise( |Could not map SAP1 language code { im_sap1 } to SAP2 language code.| ).
ENDIF.
ENDMETHOD.
METHOD sap2_to_sap1.
DATA lv_language_mapping TYPE ty_language_mapping.
- IF gv_language_mappings IS INITIAL.
+ IF gt_language_mappings IS INITIAL.
fill_language_mappings( ).
ENDIF.
- READ TABLE gv_language_mappings WITH KEY sap2_code = im_sap2 INTO lv_language_mapping.
+ READ TABLE gt_language_mappings WITH KEY sap2_code = im_sap2 INTO lv_language_mapping.
re_sap1 = lv_language_mapping-sap1_code.
IF re_sap1 IS INITIAL.
@@ -237,7 +243,13 @@ CLASS lcl_bcp47_language_table IMPLEMENTATION.
DATA lv_sap1 TYPE sy-langu.
IF strlen( im_sap1 ) = 4.
- lv_sap1 = zcl_abapgit_convert=>uccp( im_sap1 ).
+ TRY.
+ lv_sap1 = zcl_abapgit_convert=>uccp( im_sap1 ).
+ CATCH cx_root.
+ " Language is not supported in this system -> ignore it
+ " Should someone try to use the language in a repo, it will result in an error (see above)
+ RETURN.
+ ENDTRY.
ELSEIF strlen( im_sap1 ) = 1.
lv_sap1 = im_sap1.
ENDIF.
@@ -246,7 +258,7 @@ CLASS lcl_bcp47_language_table IMPLEMENTATION.
lv_line-sap2_code = im_sap2.
lv_line-sap1_code = lv_sap1.
- APPEND lv_line TO gv_language_mappings.
+ APPEND lv_line TO gt_language_mappings.
CLEAR lv_line.
ENDMETHOD.
diff --git a/src/utils/zcl_abapgit_convert.clas.testclasses.abap b/src/utils/zcl_abapgit_convert.clas.testclasses.abap
index 97b82ee10..5067fc5c4 100644
--- a/src/utils/zcl_abapgit_convert.clas.testclasses.abap
+++ b/src/utils/zcl_abapgit_convert.clas.testclasses.abap
@@ -19,6 +19,9 @@ CLASS ltcl_convert DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FIN
METHODS string_to_xstring FOR TESTING RAISING zcx_abapgit_exception.
METHODS xstring_to_bintab FOR TESTING.
METHODS xstring_to_bintab_with_field FOR TESTING.
+ METHODS xstring_to_bintab_initial FOR TESTING.
+ METHODS xstring_to_bintab_long FOR TESTING.
+ METHODS xstring_to_bintab_exact FOR TESTING.
ENDCLASS.
@@ -74,6 +77,89 @@ CLASS ltcl_convert IMPLEMENTATION.
ENDMETHOD.
+ METHOD xstring_to_bintab_initial.
+
+ DATA lt_bintab TYPE TABLE OF w3mime.
+ DATA lv_size TYPE i.
+ DATA lv_xstr TYPE xstring.
+
+ zcl_abapgit_convert=>xstring_to_bintab(
+ EXPORTING
+ iv_xstr = lv_xstr
+ IMPORTING
+ ev_size = lv_size
+ et_bintab = lt_bintab ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lv_size
+ exp = 0 ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lines( lt_bintab )
+ exp = 0 ).
+
+ ENDMETHOD.
+
+ METHOD xstring_to_bintab_long.
+
+ DATA lt_bintab TYPE TABLE OF w3mime. " x(255)
+ DATA lv_bin LIKE LINE OF lt_bintab.
+ DATA lv_size TYPE i.
+ DATA lv_xstr TYPE xstring.
+
+ lv_xstr = repeat(
+ val = '1122334455'
+ occ = 200 ).
+
+ zcl_abapgit_convert=>xstring_to_bintab(
+ EXPORTING
+ iv_xstr = lv_xstr
+ IMPORTING
+ ev_size = lv_size
+ et_bintab = lt_bintab ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lv_size
+ exp = 1000 ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lines( lt_bintab )
+ exp = 4 ).
+
+ READ TABLE lt_bintab INTO lv_bin INDEX 4.
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lv_bin-line+230(10)
+ exp = '11223344550000000000' ).
+
+ ENDMETHOD.
+
+ METHOD xstring_to_bintab_exact.
+
+ TYPES ty_line TYPE x LENGTH 5.
+ DATA lv_xdata TYPE x LENGTH 10.
+ DATA lt_bintab TYPE TABLE OF ty_line.
+ DATA lv_size TYPE i.
+
+ lv_xdata = '1122334455FFEEDDCCBB'.
+
+ " must not dump if content fits exactly into bintab
+ zcl_abapgit_convert=>xstring_to_bintab(
+ EXPORTING
+ iv_xstr = lv_xdata
+ IMPORTING
+ ev_size = lv_size
+ et_bintab = lt_bintab ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lv_size
+ exp = 10 ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lines( lt_bintab )
+ exp = 2 ).
+
+ ENDMETHOD.
METHOD string_to_xstring.
@@ -331,12 +417,15 @@ CLASS ltcl_bcp47_to_sap1 IMPLEMENTATION.
DATA lv_result TYPE sy-langu.
lv_result = zcl_abapgit_convert=>language_bcp47_to_sap1( im_from ).
- cl_abap_unit_assert=>assert_equals( exp = im_to
- act = lv_result ).
+ cl_abap_unit_assert=>assert_equals(
+ exp = im_to
+ act = lv_result
+ msg = |Converting "{ im_from }" should result in "{ im_to }"| ).
ENDMETHOD.
METHOD assert_bcp47_to_sap1_fail.
DATA lv_result TYPE string.
+ DATA lv_act TYPE sy-subrc.
zcl_abapgit_convert=>language_bcp47_to_sap1(
EXPORTING
@@ -345,10 +434,15 @@ CLASS ltcl_bcp47_to_sap1 IMPLEMENTATION.
re_lang_sap1 = lv_result
EXCEPTIONS
no_assignment = 1
- OTHERS = 2 ).
+ OTHERS = 2 ).
- cl_abap_unit_assert=>assert_equals( exp = 1
- act = sy-subrc ).
+ " Assert itself might change sy-subrc (it does in 702!)
+ lv_act = sy-subrc.
+
+ cl_abap_unit_assert=>assert_equals(
+ exp = 1
+ act = lv_act
+ msg = |Converting "{ im_from }" should fail| ).
ENDMETHOD.
METHOD english.
@@ -466,14 +560,18 @@ CLASS ltcl_sap1_to_bcp47 IMPLEMENTATION.
METHOD assert_sap1_to_bcp47.
DATA lv_result TYPE string.
+
lv_result = zcl_abapgit_convert=>language_sap1_to_bcp47( im_from ).
- cl_abap_unit_assert=>assert_equals( exp = im_to
- act = lv_result ).
+ cl_abap_unit_assert=>assert_equals(
+ exp = im_to
+ act = lv_result
+ msg = |Converting "{ im_from }" should result in "{ im_to }"| ).
ENDMETHOD.
METHOD assert_sap1_to_bcp47_fail.
DATA lv_result TYPE string.
+ DATA lv_act TYPE sy-subrc.
zcl_abapgit_convert=>language_sap1_to_bcp47(
EXPORTING
@@ -482,10 +580,15 @@ CLASS ltcl_sap1_to_bcp47 IMPLEMENTATION.
re_lang_bcp47 = lv_result
EXCEPTIONS
no_assignment = 1
- OTHERS = 2 ).
+ OTHERS = 2 ).
- cl_abap_unit_assert=>assert_equals( exp = 1
- act = sy-subrc ).
+ " Assert itself might change sy-subrc (it does in 702!)
+ lv_act = sy-subrc.
+
+ cl_abap_unit_assert=>assert_equals(
+ exp = 1
+ act = lv_act
+ msg = |Converting "{ im_from }" should fail| ).
ENDMETHOD.
METHOD english.
diff --git a/src/utils/zcl_abapgit_diff.clas.abap b/src/utils/zcl_abapgit_diff.clas.abap
index a3319f1eb..b8e936abd 100644
--- a/src/utils/zcl_abapgit_diff.clas.abap
+++ b/src/utils/zcl_abapgit_diff.clas.abap
@@ -89,6 +89,12 @@ CLASS zcl_abapgit_diff DEFINITION
VALUE(rt_diff) TYPE zif_abapgit_definitions=>ty_diffs_tt.
METHODS calculate_stats.
METHODS adjust_diff.
+ METHODS has_line_diff
+ IMPORTING
+ iv_old TYPE string
+ iv_new TYPE string
+ RETURNING
+ VALUE(rv_has_diff) TYPE abap_bool.
ENDCLASS.
@@ -262,43 +268,27 @@ CLASS zcl_abapgit_diff IMPLEMENTATION.
METHOD compute_diff_extra.
DATA:
- lv_last_new TYPE c LENGTH 1,
- lv_last_old TYPE c LENGTH 1,
- ls_diff LIKE LINE OF rt_diff.
+ ls_diff LIKE LINE OF rt_diff.
FIELD-SYMBOLS:
- LIKE LINE OF it_old,
- LIKE LINE OF it_new.
+ LIKE LINE OF it_old,
+ LIKE LINE OF it_new.
- LOOP AT it_old ASSIGNING .
+ LOOP AT it_old ASSIGNING