Merge pull request #1029 from christianguenter2/optimize_create_package

Improve usability of repository popup
This commit is contained in:
Lars Hvam 2017-10-29 07:04:37 +01:00 committed by GitHub
commit d77d823fed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 146 additions and 71 deletions

View File

@ -68,8 +68,8 @@ FORM branch_popup TABLES tt_fields TYPE zif_abapgit_definitions=>ty_sval_tt
lv_create TYPE boolean.
FIELD-SYMBOLS: <ls_furl> LIKE LINE OF tt_fields,
<ls_fbranch> LIKE LINE OF tt_fields.
<ls_fbranch> LIKE LINE OF tt_fields,
<ls_fpackage> 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 <ls_fpackage> WITH KEY fieldname = 'DEVCLASS'.
ASSERT sy-subrc = 0.
ls_package_data-devclass = <ls_fpackage>-value.
lcl_popups=>popup_to_create_package( IMPORTING es_package_data = ls_package_data
ev_create = lv_create ).
IF lv_create = abap_false.

View File

@ -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: <ls_field> 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 <ls_field>.
ASSERT sy-subrc = 0.
rs_popup-url = <ls_field>-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 <ls_field>.
ASSERT sy-subrc = 0.
rs_popup-package = <ls_field>-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 <ls_field>.
ASSERT sy-subrc = 0.
rs_popup-branch_name = <ls_field>-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: <ls_field> LIKE LINE OF it_fields.
CLEAR: ev_url,
ev_package,
ev_branch.
READ TABLE it_fields INDEX 1 ASSIGNING <ls_field>.
ASSERT sy-subrc = 0.
ev_url = <ls_field>-value.
READ TABLE it_fields INDEX 2 ASSIGNING <ls_field>.
ASSERT sy-subrc = 0.
ev_package = <ls_field>-value.
TRANSLATE ev_package TO UPPER CASE.
READ TABLE it_fields INDEX 3 ASSIGNING <ls_field>.
ASSERT sy-subrc = 0.
ev_branch = <ls_field>-value.
ENDMETHOD.
METHOD validate.
lcl_url=>name( |{ iv_url }| ).
lcl_app=>repo_srv( )->validate_package( iv_package ).
ENDMETHOD.
ENDCLASS.

View File

@ -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