diff --git a/src/zabapgit_forms.prog.abap b/src/zabapgit_forms.prog.abap index 4fa84fb56..be9c512c0 100644 --- a/src/zabapgit_forms.prog.abap +++ b/src/zabapgit_forms.prog.abap @@ -68,8 +68,8 @@ FORM branch_popup TABLES tt_fields TYPE zif_abapgit_definitions=>ty_sval_tt lv_create TYPE boolean. FIELD-SYMBOLS: LIKE LINE OF tt_fields, - LIKE LINE OF tt_fields. - + LIKE LINE OF tt_fields, + LIKE LINE OF tt_fields. CLEAR cs_error. @@ -100,6 +100,10 @@ FORM branch_popup TABLES tt_fields TYPE zif_abapgit_definitions=>ty_sval_tt ELSEIF pv_code = 'COD2'. cv_show_popup = abap_true. + READ TABLE tt_fields ASSIGNING WITH KEY fieldname = 'DEVCLASS'. + ASSERT sy-subrc = 0. + ls_package_data-devclass = -value. + lcl_popups=>popup_to_create_package( IMPORTING es_package_data = ls_package_data ev_create = lv_create ). IF lv_create = abap_false. diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index 52b9c41ff..f898f9da8 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -119,8 +119,22 @@ CLASS lcl_popups DEFINITION FINAL. on_select_list_function_click FOR EVENT added_function OF cl_salv_events_table IMPORTING - e_salv_function. + 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, + + validate + IMPORTING + iv_package TYPE tdevc-devclass + iv_url TYPE abaptxt255-line + RAISING + zcx_abapgit_exception. ENDCLASS. @@ -499,9 +513,12 @@ CLASS lcl_popups IMPLEMENTATION. lv_uattr TYPE spo_fattr, lv_pattr TYPE spo_fattr, lv_button2 TYPE svalbutton-buttontext, - lv_icon2 TYPE icon-name. - - FIELD-SYMBOLS: LIKE LINE OF lt_fields. + lv_icon2 TYPE icon-name, + lv_package TYPE tdevc-devclass, + lv_url TYPE abaptxt255-line, + lv_branch TYPE textl-line, + lv_finished TYPE abap_bool, + lx_error TYPE REF TO zcx_abapgit_exception. IF iv_freeze_url = abap_true. lv_uattr = '05'. @@ -516,69 +533,91 @@ CLASS lcl_popups IMPLEMENTATION. lv_icon2 = icon_folder. ENDIF. - add_field( EXPORTING iv_tabname = 'ABAPTXT255' - iv_fieldname = 'LINE' - iv_fieldtext = 'Git clone URL' - iv_value = iv_url - iv_field_attr = lv_uattr - CHANGING ct_fields = lt_fields ). + lv_package = iv_package. + lv_url = iv_url. + lv_branch = iv_branch. - add_field( EXPORTING iv_tabname = 'TDEVC' - iv_fieldname = 'DEVCLASS' - iv_fieldtext = 'Target package' - iv_value = iv_package - iv_field_attr = lv_pattr - CHANGING ct_fields = lt_fields ). + WHILE lv_finished = abap_false. - add_field( EXPORTING iv_tabname = 'TEXTL' - iv_fieldname = 'LINE' - iv_fieldtext = 'Branch' - iv_value = iv_branch - iv_field_attr = '05' - CHANGING ct_fields = lt_fields ). + CLEAR: lt_fields. - lv_icon_ok = icon_okay. - lv_icon_br = icon_workflow_fork. + add_field( EXPORTING iv_tabname = 'ABAPTXT255' + iv_fieldname = 'LINE' + iv_fieldtext = 'Git clone URL' + iv_value = lv_url + iv_field_attr = lv_uattr + CHANGING ct_fields = lt_fields ). - CALL FUNCTION 'POPUP_GET_VALUES_USER_BUTTONS' - EXPORTING - popup_title = iv_title - programname = sy-repid - formname = 'BRANCH_POPUP' - ok_pushbuttontext = 'OK' - icon_ok_push = lv_icon_ok - first_pushbutton = 'Select branch' - icon_button_1 = lv_icon_br - second_pushbutton = lv_button2 - icon_button_2 = lv_icon2 - IMPORTING - returncode = lv_returncode - TABLES - fields = lt_fields - EXCEPTIONS - error_in_fields = 1 - OTHERS = 2. "#EC NOTEXT - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'Error from POPUP_GET_VALUES' ). - ENDIF. - IF lv_returncode = 'A'. - rs_popup-cancel = abap_true. - RETURN. - ENDIF. + add_field( EXPORTING iv_tabname = 'TDEVC' + iv_fieldname = 'DEVCLASS' + iv_fieldtext = 'Target package' + iv_value = lv_package + iv_field_attr = lv_pattr + CHANGING ct_fields = lt_fields ). - READ TABLE lt_fields INDEX 1 ASSIGNING . - ASSERT sy-subrc = 0. - rs_popup-url = -value. - lcl_url=>name( rs_popup-url ). " validate + add_field( EXPORTING iv_tabname = 'TEXTL' + iv_fieldname = 'LINE' + iv_fieldtext = 'Branch' + iv_value = lv_branch + iv_field_attr = '05' + CHANGING ct_fields = lt_fields ). - READ TABLE lt_fields INDEX 2 ASSIGNING . - ASSERT sy-subrc = 0. - rs_popup-package = -value. - TRANSLATE rs_popup-package TO UPPER CASE. + lv_icon_ok = icon_okay. + lv_icon_br = icon_workflow_fork. - READ TABLE lt_fields INDEX 3 ASSIGNING . - ASSERT sy-subrc = 0. - rs_popup-branch_name = -value. + CALL FUNCTION 'POPUP_GET_VALUES_USER_BUTTONS' + EXPORTING + popup_title = iv_title + programname = sy-repid + formname = 'BRANCH_POPUP' + ok_pushbuttontext = 'OK' + icon_ok_push = lv_icon_ok + first_pushbutton = 'Select branch' + icon_button_1 = lv_icon_br + second_pushbutton = lv_button2 + icon_button_2 = lv_icon2 + IMPORTING + returncode = lv_returncode + TABLES + fields = lt_fields + EXCEPTIONS + error_in_fields = 1 + OTHERS = 2. "#EC NOTEXT + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'Error from POPUP_GET_VALUES' ). + ENDIF. + + IF lv_returncode = 'A'. + rs_popup-cancel = abap_true. + RETURN. + ENDIF. + + extract_field_values( + EXPORTING + it_fields = lt_fields + IMPORTING + ev_url = lv_url + ev_package = lv_package + ev_branch = lv_branch ). + + lv_finished = abap_true. + + TRY. + validate( iv_url = lv_url + iv_package = lv_package ). + + CATCH zcx_abapgit_exception INTO lx_error. + MESSAGE lx_error->text TYPE 'S' DISPLAY LIKE 'E'. + " in case of validation errors we display the popup again + CLEAR: lv_finished. + ENDTRY. + + ENDWHILE. + + rs_popup-url = lv_url. + rs_popup-package = lv_package. + rs_popup-branch_name = lv_branch. ENDMETHOD. @@ -978,4 +1017,36 @@ CLASS lcl_popups IMPLEMENTATION. ENDMETHOD. + + METHOD extract_field_values. + + FIELD-SYMBOLS: LIKE LINE OF it_fields. + + CLEAR: ev_url, + ev_package, + ev_branch. + + READ TABLE it_fields INDEX 1 ASSIGNING . + ASSERT sy-subrc = 0. + ev_url = -value. + + READ TABLE it_fields INDEX 2 ASSIGNING . + ASSERT sy-subrc = 0. + ev_package = -value. + TRANSLATE ev_package TO UPPER CASE. + + READ TABLE it_fields INDEX 3 ASSIGNING . + ASSERT sy-subrc = 0. + ev_branch = -value. + + ENDMETHOD. + + + METHOD validate. + + lcl_url=>name( |{ iv_url }| ). + lcl_app=>repo_srv( )->validate_package( iv_package ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/zabapgit_repo.prog.abap b/src/zabapgit_repo.prog.abap index 55473ba8f..3087f7754 100644 --- a/src/zabapgit_repo.prog.abap +++ b/src/zabapgit_repo.prog.abap @@ -134,7 +134,7 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL. io_stage TYPE REF TO lcl_stage RAISING zcx_abapgit_exception, get_unnecessary_local_objs - RETURNING VALUE(rt_unnecessary_local_objects) TYPE zif_abapgit_definitions=>TY_TADIR_TT + RETURNING VALUE(rt_unnecessary_local_objects) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception. PRIVATE SECTION. @@ -219,6 +219,10 @@ CLASS lcl_repo_srv DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. iv_offline TYPE abap_bool RAISING zcx_abapgit_exception. + METHODS validate_package + IMPORTING iv_package TYPE devclass + RAISING zcx_abapgit_exception. + PRIVATE SECTION. METHODS constructor. @@ -227,16 +231,12 @@ CLASS lcl_repo_srv DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. mo_persistence TYPE REF TO lcl_persistence_repo, mt_list TYPE ty_repo_tt. + METHODS is_sap_object_allowed + RETURNING + VALUE(r_is_sap_object_allowed) TYPE abap_bool. + METHODS add IMPORTING io_repo TYPE REF TO lcl_repo RAISING zcx_abapgit_exception. - METHODS validate_package - IMPORTING iv_package TYPE devclass - RAISING zcx_abapgit_exception. - - METHODS is_sap_object_allowed - RETURNING - value(r_is_sap_object_allowed) TYPE abap_bool. - ENDCLASS. "lcl_repo_srv DEFINITION