diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index 385b1fa23..f1ff13b0e 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -30,6 +30,7 @@ CLASS lcl_popups DEFINITION FINAL. create_tag_popup IMPORTING iv_sha1 TYPE zif_abapgit_definitions=>ty_sha1 EXPORTING ev_name TYPE string + ev_sha1 TYPE zif_abapgit_definitions=>ty_sha1 ev_cancel TYPE abap_bool RAISING zcx_abapgit_exception, run_page_class_popup @@ -124,32 +125,27 @@ CLASS lcl_popups DEFINITION FINAL. iv_fieldtext TYPE sval-fieldtext iv_value TYPE clike DEFAULT '' iv_field_attr TYPE sval-field_attr DEFAULT '' + iv_obligatory TYPE spo_obl OPTIONAL CHANGING ct_fields TYPE ty_sval_tt, create_new_table - IMPORTING - it_list TYPE STANDARD TABLE, + IMPORTING it_list TYPE STANDARD TABLE, get_selected_rows - EXPORTING - et_list TYPE INDEX TABLE, + EXPORTING et_list TYPE INDEX TABLE, on_select_list_link_click FOR EVENT link_click OF cl_salv_events_table - IMPORTING - row - column, + IMPORTING row + column, on_select_list_function_click FOR EVENT added_function OF cl_salv_events_table - IMPORTING - e_salv_function, + IMPORTING e_salv_function, extract_field_values - IMPORTING - it_fields TYPE ty_sval_tt - EXPORTING - ev_url TYPE abaptxt255-line - ev_package TYPE tdevc-devclass - ev_branch TYPE textl-line. + IMPORTING it_fields TYPE ty_sval_tt + EXPORTING ev_url TYPE abaptxt255-line + ev_package TYPE tdevc-devclass + ev_branch TYPE textl-line. ENDCLASS. @@ -165,6 +161,7 @@ CLASS lcl_popups IMPLEMENTATION. -fieldtext = iv_fieldtext. -value = iv_value. -field_attr = iv_field_attr. + -field_obl = iv_obligatory. ENDMETHOD. @@ -313,48 +310,69 @@ CLASS lcl_popups IMPLEMENTATION. METHOD create_tag_popup. - DATA: lv_answer TYPE c LENGTH 1, - lt_fields TYPE TABLE OF sval. + DATA: lv_answer TYPE c LENGTH 1, + lt_fields TYPE TABLE OF sval, + lv_exit_while_loop TYPE abap_bool. FIELD-SYMBOLS: LIKE LINE OF lt_fields. - CLEAR: ev_name, ev_cancel. + CLEAR: ev_name, ev_cancel, ev_sha1. - add_field( EXPORTING iv_tabname = 'TOAVALUE' - iv_fieldname = 'REFER_CODE' + add_field( EXPORTING iv_tabname = 'TBDTPPT' + iv_fieldname = 'P_TEXT' iv_fieldtext = 'SHA' - iv_value = iv_sha1(7) - iv_field_attr = '05' + iv_value = iv_sha1 + iv_obligatory = abap_true CHANGING ct_fields = lt_fields ). - add_field( EXPORTING iv_tabname = 'TEXTL' - iv_fieldname = 'LINE' - iv_fieldtext = 'Name' - iv_value = 'new-tag-name' - CHANGING ct_fields = lt_fields ). + add_field( EXPORTING iv_tabname = 'TEXTL' + iv_fieldname = 'LINE' + iv_fieldtext = 'Name' + iv_obligatory = abap_true + CHANGING ct_fields = lt_fields ). - CALL FUNCTION 'POPUP_GET_VALUES' - EXPORTING - popup_title = 'Create tag' - IMPORTING - returncode = lv_answer - TABLES - fields = lt_fields - EXCEPTIONS - error_in_fields = 1 - OTHERS = 2 ##NO_TEXT. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'error from POPUP_GET_VALUES' ). - ENDIF. + WHILE lv_exit_while_loop = abap_false. + + CALL FUNCTION 'POPUP_GET_VALUES' + EXPORTING + popup_title = 'Create tag' + IMPORTING + returncode = lv_answer + TABLES + fields = lt_fields + EXCEPTIONS + error_in_fields = 1 + OTHERS = 2 ##NO_TEXT. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'error from POPUP_GET_VALUES' ). + ENDIF. + + IF lv_answer = 'A'. + ev_cancel = abap_true. + RETURN. + ENDIF. + + READ TABLE lt_fields WITH KEY fieldname = 'P_TEXT' + ASSIGNING . + ASSERT sy-subrc = 0. + + ev_sha1 = -value. - IF lv_answer = 'A'. - ev_cancel = abap_true. - ELSE. READ TABLE lt_fields WITH KEY fieldname = 'LINE' ASSIGNING . ASSERT sy-subrc = 0. + + IF condense( -value ) CS ` `. + CLEAR: lv_exit_while_loop. + MESSAGE 'Tag name cannot contain blank spaces' TYPE 'S' DISPLAY LIKE 'E'. + CONTINUE. + ENDIF. + ev_name = zcl_abapgit_tag=>add_tag_prefix( -value ). - ENDIF. + + lv_exit_while_loop = abap_true. + + ENDWHILE. ENDMETHOD. @@ -1235,7 +1253,6 @@ CLASS lcl_popups IMPLEMENTATION. ENDMETHOD. - METHOD branch_popup_callback. DATA: lv_url TYPE string, diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index d0956346a..304e122fb 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -229,9 +229,10 @@ CLASS lcl_services_git IMPLEMENTATION. DATA: lv_name TYPE string, lv_cancel TYPE abap_bool, - lo_repo TYPE REF TO lcl_repo_online, lx_error TYPE REF TO zcx_abapgit_exception, - lv_text TYPE string. + lv_text TYPE string, + lo_repo TYPE REF TO lcl_repo_online, + lv_sha1 TYPE zif_abapgit_definitions=>ty_sha1. lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ). @@ -240,7 +241,9 @@ CLASS lcl_services_git IMPLEMENTATION. iv_sha1 = lo_repo->get_sha1_local( ) IMPORTING ev_name = lv_name + ev_sha1 = lv_sha1 ev_cancel = lv_cancel ). + IF lv_cancel = abap_true. RAISE EXCEPTION TYPE zcx_abapgit_cancel. ENDIF. @@ -250,7 +253,7 @@ CLASS lcl_services_git IMPLEMENTATION. TRY. lcl_git_porcelain=>create_tag( io_repo = lo_repo iv_name = lv_name - iv_from = lo_repo->get_sha1_local( ) ). + iv_from = lv_sha1 ). CATCH zcx_abapgit_exception INTO lx_error. zcx_abapgit_exception=>raise( |Cannot create tag { lv_name }. Error: '{ lx_error->text }'| ).