abapGit/src/ui/zcl_abapgit_services_basis.clas.abap
Marc Bernard b46c8b4599
Refactor: Consolidate front-end classes (#5172)
* Refactor: Consolidate front-end classes

There's no need for two "front-end classes". Moves all of ZCL_ABAPGIT_GUI_FUNCTIONS to ZCL_ABAPGIT_FRONTEND_SERVICES. Now all front-end calls are nicely together.

No functional change, some method reordering. 

Ref #2510, #5145

* Add missing interface

Co-authored-by: Christian Günter <christianguenter@googlemail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2021-12-09 06:49:43 +01:00

92 lines
2.3 KiB
ABAP

CLASS zcl_abapgit_services_basis DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS create_package
IMPORTING
!iv_prefill_package TYPE devclass OPTIONAL
RETURNING
VALUE(rv_package) TYPE devclass
RAISING
zcx_abapgit_exception .
CLASS-METHODS open_ie_devtools
RAISING
zcx_abapgit_exception .
PROTECTED SECTION.
PRIVATE SECTION.
CLASS-METHODS raise_error_if_package_exists
IMPORTING
iv_devclass TYPE scompkdtln-devclass
RAISING
zcx_abapgit_exception.
ENDCLASS.
CLASS zcl_abapgit_services_basis IMPLEMENTATION.
METHOD create_package.
DATA ls_package_data TYPE scompkdtln.
DATA lv_create TYPE abap_bool.
DATA li_popup TYPE REF TO zif_abapgit_popups.
ls_package_data-devclass = to_upper( iv_prefill_package ).
raise_error_if_package_exists( ls_package_data-devclass ).
li_popup = zcl_abapgit_ui_factory=>get_popups( ).
li_popup->popup_to_create_package(
IMPORTING
es_package_data = ls_package_data
ev_create = lv_create ).
IF lv_create = abap_true.
zcl_abapgit_factory=>get_sap_package( ls_package_data-devclass )->create( ls_package_data ).
rv_package = ls_package_data-devclass.
COMMIT WORK.
ENDIF.
ENDMETHOD.
METHOD open_ie_devtools.
DATA: lv_system_directory TYPE string,
lv_exe_full_path TYPE string,
lo_frontend_serv TYPE REF TO zif_abapgit_frontend_services.
lo_frontend_serv = zcl_abapgit_ui_factory=>get_frontend_services( ).
IF lo_frontend_serv->is_sapgui_for_windows( ) = abap_false.
zcx_abapgit_exception=>raise( |IE DevTools not supported on frontend OS| ).
ENDIF.
lo_frontend_serv->get_system_directory( CHANGING cv_system_directory = lv_system_directory ).
cl_gui_cfw=>flush( ).
lv_exe_full_path = lv_system_directory && `\F12\IEChooser.exe`.
lo_frontend_serv->execute( iv_application = lv_exe_full_path ).
ENDMETHOD.
METHOD raise_error_if_package_exists.
IF iv_devclass IS INITIAL.
RETURN.
ENDIF.
IF zcl_abapgit_factory=>get_sap_package( iv_devclass )->exists( ) = abap_true.
" Package &1 already exists
MESSAGE e042(pak) INTO sy-msgli WITH iv_devclass.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDMETHOD.
ENDCLASS.