From eb2db0653c459f07150542ac73f8ac1228128261 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Wed, 17 Jan 2018 18:57:07 +0000 Subject: [PATCH] Fix issue #1152 --- src/zabapgit_forms.prog.abap | 99 +++++++-------------------- src/zabapgit_popups.prog.abap | 96 ++++++++++++++++++++++++++ src/zcl_abapgit_sap_package.clas.abap | 14 ++++ 3 files changed, 134 insertions(+), 75 deletions(-) diff --git a/src/zabapgit_forms.prog.abap b/src/zabapgit_forms.prog.abap index 0410cf56d..aadd5adab 100644 --- a/src/zabapgit_forms.prog.abap +++ b/src/zabapgit_forms.prog.abap @@ -61,60 +61,20 @@ FORM branch_popup TABLES tt_fields TYPE zif_abapgit_definitions=>ty_sval_tt RAISING zcx_abapgit_exception ##called ##needed. * called dynamically from function module POPUP_GET_VALUES_USER_BUTTONS - DATA: lv_url TYPE string, - lx_error TYPE REF TO zcx_abapgit_exception, - ls_package_data TYPE scompkdtln, - ls_branch TYPE zcl_abapgit_git_branch_list=>ty_git_branch, - lv_create TYPE boolean. + DATA: lx_error TYPE REF TO zcx_abapgit_exception. - FIELD-SYMBOLS: LIKE LINE OF tt_fields, - LIKE LINE OF tt_fields, - LIKE LINE OF tt_fields. + TRY. + lcl_popups=>branch_popup_callback( + EXPORTING + iv_code = pv_code + CHANGING + ct_fields = tt_fields[] + cs_error = cs_error + cv_show_popup = cv_show_popup ). - CLEAR cs_error. - - IF pv_code = 'COD1'. - cv_show_popup = abap_true. - - READ TABLE tt_fields ASSIGNING WITH KEY tabname = 'ABAPTXT255'. - IF sy-subrc <> 0 OR -value IS INITIAL. - MESSAGE 'Fill URL' TYPE 'S' DISPLAY LIKE 'E'. "#EC NOTEXT - RETURN. - ENDIF. - lv_url = -value. - - TRY. - ls_branch = lcl_popups=>branch_list_popup( lv_url ). - CATCH zcx_abapgit_exception INTO lx_error. - MESSAGE lx_error TYPE 'S' DISPLAY LIKE 'E'. - RETURN. - ENDTRY. - IF ls_branch IS INITIAL. - RETURN. - ENDIF. - - READ TABLE tt_fields ASSIGNING WITH KEY tabname = 'TEXTL'. - ASSERT sy-subrc = 0. - -value = ls_branch-name. - - 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. - RETURN. - ENDIF. - - zcl_abapgit_sap_package=>create( ls_package_data ). - COMMIT WORK. - - -value = ls_package_data-devclass. - ENDIF. + CATCH zcx_abapgit_exception INTO lx_error. + MESSAGE lx_error->text TYPE 'S' DISPLAY LIKE 'E'. + ENDTRY. ENDFORM. "branch_popup @@ -125,31 +85,20 @@ FORM package_popup TABLES tt_fields TYPE zif_abapgit_definitions=>ty_sval_tt RAISING zcx_abapgit_exception ##called ##needed. * called dynamically from function module POPUP_GET_VALUES_USER_BUTTONS - DATA: ls_package_data TYPE scompkdtln, - lv_create TYPE boolean. + DATA: lx_error TYPE REF TO zcx_abapgit_exception. - FIELD-SYMBOLS: LIKE LINE OF tt_fields. + TRY. + lcl_popups=>package_popup_callback( + EXPORTING + iv_code = pv_code + CHANGING + ct_fields = tt_fields[] + cs_error = cs_error + cv_show_popup = cv_show_popup ). - CLEAR cs_error. - - IF pv_code = 'COD1'. - 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. - RETURN. - ENDIF. - - zcl_abapgit_sap_package=>create( ls_package_data ). - COMMIT WORK. - - -value = ls_package_data-devclass. - ENDIF. + CATCH zcx_abapgit_exception INTO lx_error. + MESSAGE lx_error->text TYPE 'S' DISPLAY LIKE 'E'. + ENDTRY. ENDFORM. "package_popup diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index de2a654e9..385b1fa23 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -93,6 +93,18 @@ CLASS lcl_popups DEFINITION FINAL. i_select_column_text TYPE csequence it_columns_to_display TYPE stringtab EXPORTING VALUE(et_list) TYPE STANDARD TABLE + RAISING zcx_abapgit_exception, + branch_popup_callback + IMPORTING iv_code TYPE clike + CHANGING ct_fields TYPE zif_abapgit_definitions=>ty_sval_tt + cs_error TYPE svale + cv_show_popup TYPE char01 + RAISING zcx_abapgit_exception, + package_popup_callback + IMPORTING iv_code TYPE clike + CHANGING ct_fields TYPE zif_abapgit_definitions=>ty_sval_tt + cs_error TYPE svale + cv_show_popup TYPE char01 RAISING zcx_abapgit_exception. PRIVATE SECTION. @@ -1224,4 +1236,88 @@ CLASS lcl_popups IMPLEMENTATION. ENDMETHOD. + METHOD branch_popup_callback. + + DATA: lv_url TYPE string, + ls_package_data TYPE scompkdtln, + ls_branch TYPE zcl_abapgit_git_branch_list=>ty_git_branch, + lv_create TYPE boolean. + + FIELD-SYMBOLS: LIKE LINE OF ct_fields, + LIKE LINE OF ct_fields, + LIKE LINE OF ct_fields. + + CLEAR cs_error. + + IF iv_code = 'COD1'. + cv_show_popup = abap_true. + + READ TABLE ct_fields ASSIGNING WITH KEY tabname = 'ABAPTXT255'. + IF sy-subrc <> 0 OR -value IS INITIAL. + MESSAGE 'Fill URL' TYPE 'S' DISPLAY LIKE 'E'. "#EC NOTEXT + RETURN. + ENDIF. + lv_url = -value. + + ls_branch = lcl_popups=>branch_list_popup( lv_url ). + IF ls_branch IS INITIAL. + RETURN. + ENDIF. + + READ TABLE ct_fields ASSIGNING WITH KEY tabname = 'TEXTL'. + ASSERT sy-subrc = 0. + -value = ls_branch-name. + + ELSEIF iv_code = 'COD2'. + cv_show_popup = abap_true. + + READ TABLE ct_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. + RETURN. + ENDIF. + + zcl_abapgit_sap_package=>create( ls_package_data ). + COMMIT WORK. + + -value = ls_package_data-devclass. + ENDIF. + + ENDMETHOD. + + + METHOD package_popup_callback. + + DATA: ls_package_data TYPE scompkdtln, + lv_create TYPE boolean. + + FIELD-SYMBOLS: LIKE LINE OF ct_fields. + + CLEAR cs_error. + + IF iv_code = 'COD1'. + cv_show_popup = abap_true. + + READ TABLE ct_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. + RETURN. + ENDIF. + + zcl_abapgit_sap_package=>create( ls_package_data ). + COMMIT WORK. + + -value = ls_package_data-devclass. + ENDIF. + + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_abapgit_sap_package.clas.abap b/src/zcl_abapgit_sap_package.clas.abap index e086a43c7..64e3a9309 100644 --- a/src/zcl_abapgit_sap_package.clas.abap +++ b/src/zcl_abapgit_sap_package.clas.abap @@ -120,9 +120,23 @@ CLASS ZCL_ABAPGIT_SAP_PACKAGE IMPLEMENTATION. intern_err = 6 OTHERS = 7 ). IF sy-subrc <> 0. + MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO lv_err. + + " Here we have to delete the package, + " otherwise it would remain in the memory + " and cannot created again in this session. + li_package->delete( + EXCEPTIONS + object_not_empty = 1 + object_not_changeable = 2 + object_invalid = 3 + intern_err = 4 + others = 5 ). + zcx_abapgit_exception=>raise( lv_err ). + ENDIF. li_package->set_changeable( abap_false ).