From 6172c4a2eccd9b8c98e2ee8692d8caa8f40e863d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Wed, 25 Oct 2017 20:02:51 +0000 Subject: [PATCH 1/3] Improve repository popup --- src/zabapgit_forms.prog.abap | 8 +- src/zabapgit_popups.prog.abap | 178 ++++++++++++++++++++++------------ src/zabapgit_repo.prog.abap | 18 ++-- 3 files changed, 133 insertions(+), 71 deletions(-) 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..98b2a54d6 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -119,8 +119,15 @@ 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. ENDCLASS. @@ -499,9 +506,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 +526,93 @@ 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 + lcl_url=>name( |{ lv_url }| ). + lcl_app=>repo_srv( )->validate_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 +1012,28 @@ 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. + 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 From 03d003b625deec05306070c5e445f88f68731be6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Wed, 25 Oct 2017 20:18:24 +0000 Subject: [PATCH 2/3] Extract validation into separat method --- src/zabapgit_popups.prog.abap | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index 98b2a54d6..893c71ed0 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -127,7 +127,12 @@ CLASS lcl_popups DEFINITION FINAL. EXPORTING ev_url TYPE abaptxt255-line ev_package TYPE tdevc-devclass - ev_branch TYPE textl-line. + ev_branch TYPE textl-line, + + validate + IMPORTING + iv_package TYPE tdevc-devclass + iv_url TYPE abaptxt255-line. ENDCLASS. @@ -597,10 +602,8 @@ CLASS lcl_popups IMPLEMENTATION. lv_finished = abap_true. TRY. - - " validate - lcl_url=>name( |{ lv_url }| ). - lcl_app=>repo_srv( )->validate_package( lv_package ). + 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'. @@ -1036,4 +1039,9 @@ CLASS lcl_popups IMPLEMENTATION. ENDMETHOD. + + METHOD validate. + + ENDMETHOD. + ENDCLASS. From 5a540a98ffd288d8724a2d6cc73dc39e2c3f4114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Wed, 25 Oct 2017 20:26:40 +0000 Subject: [PATCH 3/3] Fix missing validations --- src/zabapgit_popups.prog.abap | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index 893c71ed0..f898f9da8 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -132,7 +132,9 @@ CLASS lcl_popups DEFINITION FINAL. validate IMPORTING iv_package TYPE tdevc-devclass - iv_url TYPE abaptxt255-line. + iv_url TYPE abaptxt255-line + RAISING + zcx_abapgit_exception. ENDCLASS. @@ -1042,6 +1044,9 @@ CLASS lcl_popups IMPLEMENTATION. METHOD validate. + lcl_url=>name( |{ iv_url }| ). + lcl_app=>repo_srv( )->validate_package( iv_package ). + ENDMETHOD. ENDCLASS.