mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
refactor zcl_abapgit_services_abapgit
(#6690)
This commit is contained in:
parent
7c34dd33dc
commit
0a652c25a0
|
@ -137,7 +137,9 @@ CLASS zcl_abapgit_gui_page_debuginfo IMPLEMENTATION.
|
||||||
iv_act = 'https://github.com/abapGit/abapGit'
|
iv_act = 'https://github.com/abapGit/abapGit'
|
||||||
iv_typ = zif_abapgit_html=>c_action_type-url ) }).</div>| ).
|
iv_typ = zif_abapgit_html=>c_action_type-url ) }).</div>| ).
|
||||||
ELSE.
|
ELSE.
|
||||||
lv_devclass = zcl_abapgit_services_abapgit=>is_installed( ).
|
lv_devclass = zcl_abapgit_factory=>get_tadir( )->get_object_package(
|
||||||
|
iv_object = 'CLAS'
|
||||||
|
iv_obj_name = 'ZCX_ABAPGIT_EXCEPTION' ).
|
||||||
ri_html->add( '<h2>abapGit - Developer Version</h2>' ).
|
ri_html->add( '<h2>abapGit - Developer Version</h2>' ).
|
||||||
ri_html->add( |<div>abapGit is installed in package { lv_devclass }</div>| ).
|
ri_html->add( |<div>abapGit is installed in package { lv_devclass }</div>| ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
|
@ -9,7 +9,6 @@ CLASS zcl_abapgit_services_abapgit DEFINITION
|
||||||
CONSTANTS c_abapgit_homepage TYPE string VALUE 'https://www.abapgit.org' ##NO_TEXT.
|
CONSTANTS c_abapgit_homepage TYPE string VALUE 'https://www.abapgit.org' ##NO_TEXT.
|
||||||
CONSTANTS c_abapgit_wikipage TYPE string VALUE 'https://docs.abapgit.org' ##NO_TEXT.
|
CONSTANTS c_abapgit_wikipage TYPE string VALUE 'https://docs.abapgit.org' ##NO_TEXT.
|
||||||
CONSTANTS c_dotabap_homepage TYPE string VALUE 'https://dotabap.org' ##NO_TEXT.
|
CONSTANTS c_dotabap_homepage TYPE string VALUE 'https://dotabap.org' ##NO_TEXT.
|
||||||
CONSTANTS c_abapgit_class TYPE seoclsname VALUE `ZCX_ABAPGIT_EXCEPTION` ##NO_TEXT.
|
|
||||||
CONSTANTS c_changelog_path TYPE string VALUE '/blob/main/changelog.txt' ##NO_TEXT.
|
CONSTANTS c_changelog_path TYPE string VALUE '/blob/main/changelog.txt' ##NO_TEXT.
|
||||||
|
|
||||||
CLASS-METHODS open_abapgit_homepage
|
CLASS-METHODS open_abapgit_homepage
|
||||||
|
@ -28,29 +27,11 @@ CLASS zcl_abapgit_services_abapgit DEFINITION
|
||||||
CLASS-METHODS open_abapgit_changelog
|
CLASS-METHODS open_abapgit_changelog
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS is_installed
|
|
||||||
RETURNING
|
|
||||||
VALUE(rv_devclass) TYPE tadir-devclass .
|
|
||||||
CLASS-METHODS prepare_gui_startup
|
|
||||||
RAISING
|
|
||||||
zcx_abapgit_exception .
|
|
||||||
CLASS-METHODS get_abapgit_tcode
|
CLASS-METHODS get_abapgit_tcode
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_tcode) TYPE tcode .
|
VALUE(rv_tcode) TYPE tcode .
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
CLASS-METHODS set_start_repo_from_package
|
|
||||||
IMPORTING
|
|
||||||
!iv_package TYPE devclass
|
|
||||||
RAISING
|
|
||||||
zcx_abapgit_exception .
|
|
||||||
CLASS-METHODS get_package_from_adt
|
|
||||||
RETURNING
|
|
||||||
VALUE(rv_package) TYPE devclass .
|
|
||||||
CLASS-METHODS check_sapgui
|
|
||||||
RAISING
|
|
||||||
zcx_abapgit_exception .
|
|
||||||
CLASS-METHODS open_url_in_browser
|
CLASS-METHODS open_url_in_browser
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_url TYPE string
|
!iv_url TYPE string
|
||||||
|
@ -63,45 +44,6 @@ ENDCLASS.
|
||||||
CLASS zcl_abapgit_services_abapgit IMPLEMENTATION.
|
CLASS zcl_abapgit_services_abapgit IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD check_sapgui.
|
|
||||||
|
|
||||||
CONSTANTS:
|
|
||||||
lc_hide_sapgui_hint TYPE string VALUE '2'.
|
|
||||||
|
|
||||||
DATA:
|
|
||||||
lv_answer TYPE char1,
|
|
||||||
ls_settings TYPE zif_abapgit_definitions=>ty_s_user_settings,
|
|
||||||
li_user_persistence TYPE REF TO zif_abapgit_persist_user.
|
|
||||||
|
|
||||||
li_user_persistence = zcl_abapgit_persistence_user=>get_instance( ).
|
|
||||||
|
|
||||||
ls_settings = li_user_persistence->get_settings( ).
|
|
||||||
|
|
||||||
IF ls_settings-hide_sapgui_hint = abap_true.
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF zcl_abapgit_ui_factory=>get_frontend_services( )->is_sapgui_for_java( ) = abap_false.
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
|
|
||||||
iv_titlebar = 'Not supported SAPGUI'
|
|
||||||
iv_text_question = 'SAPGUI for Java is not supported! There might be some issues.'
|
|
||||||
iv_text_button_1 = 'Got it'
|
|
||||||
iv_icon_button_1 = |{ icon_okay }|
|
|
||||||
iv_text_button_2 = 'Hide'
|
|
||||||
iv_icon_button_2 = |{ icon_set_state }|
|
|
||||||
iv_display_cancel_button = abap_false ).
|
|
||||||
|
|
||||||
IF lv_answer = lc_hide_sapgui_hint.
|
|
||||||
ls_settings-hide_sapgui_hint = abap_true.
|
|
||||||
li_user_persistence->set_settings( ls_settings ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD get_abapgit_tcode.
|
METHOD get_abapgit_tcode.
|
||||||
CONSTANTS: lc_report_tcode_hex TYPE x VALUE '80'.
|
CONSTANTS: lc_report_tcode_hex TYPE x VALUE '80'.
|
||||||
DATA: lt_tcodes TYPE STANDARD TABLE OF tcode.
|
DATA: lt_tcodes TYPE STANDARD TABLE OF tcode.
|
||||||
|
@ -119,74 +61,6 @@ CLASS zcl_abapgit_services_abapgit IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_package_from_adt.
|
|
||||||
|
|
||||||
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
|
|
||||||
lr_context TYPE REF TO data,
|
|
||||||
lt_fields TYPE tihttpnvp.
|
|
||||||
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <lg_context> TYPE any,
|
|
||||||
<lv_parameters> TYPE string,
|
|
||||||
<ls_field> LIKE LINE OF lt_fields.
|
|
||||||
|
|
||||||
ls_item-obj_type = 'CLAS'.
|
|
||||||
ls_item-obj_name = 'CL_ADT_GUI_INTEGRATION_CONTEXT'.
|
|
||||||
|
|
||||||
IF zcl_abapgit_objects=>exists( ls_item ) = abap_false.
|
|
||||||
" ADT is not supported in this NW release
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
CREATE DATA lr_context TYPE ('CL_ADT_GUI_INTEGRATION_CONTEXT=>TY_CONTEXT_INFO').
|
|
||||||
|
|
||||||
ASSIGN lr_context->* TO <lg_context>.
|
|
||||||
ASSERT sy-subrc = 0.
|
|
||||||
|
|
||||||
CALL METHOD ('CL_ADT_GUI_INTEGRATION_CONTEXT')=>read_context
|
|
||||||
RECEIVING
|
|
||||||
result = <lg_context>.
|
|
||||||
|
|
||||||
ASSIGN COMPONENT 'PARAMETERS'
|
|
||||||
OF STRUCTURE <lg_context>
|
|
||||||
TO <lv_parameters>.
|
|
||||||
ASSERT sy-subrc = 0.
|
|
||||||
|
|
||||||
lt_fields = cl_http_utility=>string_to_fields( cl_http_utility=>unescape_url( <lv_parameters> ) ).
|
|
||||||
|
|
||||||
READ TABLE lt_fields ASSIGNING <ls_field>
|
|
||||||
WITH KEY name = 'p_package_name'.
|
|
||||||
IF sy-subrc = 0.
|
|
||||||
rv_package = <ls_field>-value.
|
|
||||||
|
|
||||||
" We want to open the repo just once. Therefore we delete the parameters
|
|
||||||
" and initialize the ADT context.
|
|
||||||
CLEAR <lv_parameters>.
|
|
||||||
CALL METHOD ('CL_ADT_GUI_INTEGRATION_CONTEXT')=>initialize_instance
|
|
||||||
EXPORTING
|
|
||||||
context_info = <lg_context>.
|
|
||||||
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
CATCH cx_root.
|
|
||||||
" Some problems with dynamic ADT access.
|
|
||||||
" Let's ignore it for now and fail silently
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD is_installed.
|
|
||||||
|
|
||||||
SELECT SINGLE devclass FROM tadir INTO rv_devclass
|
|
||||||
WHERE pgmid = 'R3TR'
|
|
||||||
AND object = 'CLAS'
|
|
||||||
AND obj_name = c_abapgit_class.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD open_abapgit_changelog.
|
METHOD open_abapgit_changelog.
|
||||||
open_url_in_browser( |{ c_abapgit_repo }{ c_changelog_path }| ).
|
open_url_in_browser( |{ c_abapgit_repo }{ c_changelog_path }| ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -218,94 +92,4 @@ CLASS zcl_abapgit_services_abapgit IMPLEMENTATION.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD prepare_gui_startup.
|
|
||||||
|
|
||||||
DATA: lv_repo_key TYPE zif_abapgit_persistence=>ty_value,
|
|
||||||
lv_package TYPE devclass,
|
|
||||||
lv_package_adt TYPE devclass.
|
|
||||||
|
|
||||||
check_sapgui( ).
|
|
||||||
|
|
||||||
IF zcl_abapgit_persist_factory=>get_settings( )->read( )->get_show_default_repo( ) = abap_false.
|
|
||||||
" Don't show the last seen repo at startup
|
|
||||||
zcl_abapgit_persistence_user=>get_instance( )->set_repo_show( || ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
" We have three special cases for gui startup
|
|
||||||
" - open a specific repo by repo key
|
|
||||||
" - open a specific repo by package name
|
|
||||||
" - open a specific repo by package name provided by ADT
|
|
||||||
" These overrule the last shown repo
|
|
||||||
|
|
||||||
GET PARAMETER ID zif_abapgit_definitions=>c_spagpa_param_repo_key FIELD lv_repo_key.
|
|
||||||
GET PARAMETER ID zif_abapgit_definitions=>c_spagpa_param_package FIELD lv_package.
|
|
||||||
lv_package_adt = get_package_from_adt( ).
|
|
||||||
|
|
||||||
IF lv_repo_key IS NOT INITIAL.
|
|
||||||
|
|
||||||
SET PARAMETER ID zif_abapgit_definitions=>c_spagpa_param_repo_key FIELD ''.
|
|
||||||
zcl_abapgit_persistence_user=>get_instance( )->set_repo_show( lv_repo_key ).
|
|
||||||
|
|
||||||
ELSEIF lv_package IS NOT INITIAL.
|
|
||||||
|
|
||||||
SET PARAMETER ID zif_abapgit_definitions=>c_spagpa_param_package FIELD ''.
|
|
||||||
set_start_repo_from_package( lv_package ).
|
|
||||||
|
|
||||||
ELSEIF lv_package_adt IS NOT INITIAL.
|
|
||||||
|
|
||||||
set_start_repo_from_package( lv_package_adt ).
|
|
||||||
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD set_start_repo_from_package.
|
|
||||||
|
|
||||||
DATA: lo_repo TYPE REF TO zcl_abapgit_repo,
|
|
||||||
lt_r_package TYPE RANGE OF devclass,
|
|
||||||
ls_r_package LIKE LINE OF lt_r_package,
|
|
||||||
lt_superpackages TYPE zif_abapgit_sap_package=>ty_devclass_tt,
|
|
||||||
li_package TYPE REF TO zif_abapgit_sap_package,
|
|
||||||
lt_repo_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <lo_repo> TYPE LINE OF zif_abapgit_repo_srv=>ty_repo_list,
|
|
||||||
<lv_superpackage> LIKE LINE OF lt_superpackages.
|
|
||||||
|
|
||||||
li_package = zcl_abapgit_factory=>get_sap_package( iv_package ).
|
|
||||||
|
|
||||||
IF li_package->exists( ) = abap_false.
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ls_r_package-sign = 'I'.
|
|
||||||
ls_r_package-option = 'EQ'.
|
|
||||||
ls_r_package-low = iv_package.
|
|
||||||
INSERT ls_r_package INTO TABLE lt_r_package.
|
|
||||||
|
|
||||||
" Also consider superpackages. E.g. when some open $abapgit_ui, abapGit repo
|
|
||||||
" should be found via package $abapgit
|
|
||||||
lt_superpackages = li_package->list_superpackages( ).
|
|
||||||
LOOP AT lt_superpackages ASSIGNING <lv_superpackage>.
|
|
||||||
ls_r_package-low = <lv_superpackage>.
|
|
||||||
INSERT ls_r_package INTO TABLE lt_r_package.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
lt_repo_list = zcl_abapgit_repo_srv=>get_instance( )->list( ).
|
|
||||||
|
|
||||||
LOOP AT lt_repo_list ASSIGNING <lo_repo>.
|
|
||||||
|
|
||||||
IF <lo_repo>->get_package( ) IN lt_r_package.
|
|
||||||
lo_repo ?= <lo_repo>.
|
|
||||||
EXIT.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
IF lo_repo IS BOUND.
|
|
||||||
zcl_abapgit_persistence_user=>get_instance( )->set_repo_show( lo_repo->get_key( ) ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -2,6 +2,212 @@
|
||||||
*& Include ZABAPGIT_FORMS
|
*& Include ZABAPGIT_FORMS
|
||||||
*&---------------------------------------------------------------------*
|
*&---------------------------------------------------------------------*
|
||||||
|
|
||||||
|
CLASS lcl_startup DEFINITION FINAL.
|
||||||
|
PUBLIC SECTION.
|
||||||
|
CLASS-METHODS prepare_gui_startup
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
CLASS-METHODS set_start_repo_from_package
|
||||||
|
IMPORTING
|
||||||
|
!iv_package TYPE devclass
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS get_package_from_adt
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_package) TYPE devclass.
|
||||||
|
|
||||||
|
CLASS-METHODS check_sapgui
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS lcl_startup IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD check_sapgui.
|
||||||
|
|
||||||
|
CONSTANTS:
|
||||||
|
lc_hide_sapgui_hint TYPE string VALUE '2'.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
lv_answer TYPE char1,
|
||||||
|
ls_settings TYPE zif_abapgit_definitions=>ty_s_user_settings,
|
||||||
|
li_user_persistence TYPE REF TO zif_abapgit_persist_user.
|
||||||
|
|
||||||
|
li_user_persistence = zcl_abapgit_persistence_user=>get_instance( ).
|
||||||
|
|
||||||
|
ls_settings = li_user_persistence->get_settings( ).
|
||||||
|
|
||||||
|
IF ls_settings-hide_sapgui_hint = abap_true.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF zcl_abapgit_ui_factory=>get_frontend_services( )->is_sapgui_for_java( ) = abap_false.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
|
||||||
|
iv_titlebar = 'Not supported SAPGUI'
|
||||||
|
iv_text_question = 'SAPGUI for Java is not supported! There might be some issues.'
|
||||||
|
iv_text_button_1 = 'Got it'
|
||||||
|
iv_icon_button_1 = |{ icon_okay }|
|
||||||
|
iv_text_button_2 = 'Hide'
|
||||||
|
iv_icon_button_2 = |{ icon_set_state }|
|
||||||
|
iv_display_cancel_button = abap_false ).
|
||||||
|
|
||||||
|
IF lv_answer = lc_hide_sapgui_hint.
|
||||||
|
ls_settings-hide_sapgui_hint = abap_true.
|
||||||
|
li_user_persistence->set_settings( ls_settings ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD prepare_gui_startup.
|
||||||
|
DATA: lv_repo_key TYPE zif_abapgit_persistence=>ty_value,
|
||||||
|
lv_package TYPE devclass,
|
||||||
|
lv_package_adt TYPE devclass.
|
||||||
|
|
||||||
|
check_sapgui( ).
|
||||||
|
|
||||||
|
IF zcl_abapgit_persist_factory=>get_settings( )->read( )->get_show_default_repo( ) = abap_false.
|
||||||
|
" Don't show the last seen repo at startup
|
||||||
|
zcl_abapgit_persistence_user=>get_instance( )->set_repo_show( || ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
" We have three special cases for gui startup
|
||||||
|
" - open a specific repo by repo key
|
||||||
|
" - open a specific repo by package name
|
||||||
|
" - open a specific repo by package name provided by ADT
|
||||||
|
" These overrule the last shown repo
|
||||||
|
|
||||||
|
GET PARAMETER ID zif_abapgit_definitions=>c_spagpa_param_repo_key FIELD lv_repo_key.
|
||||||
|
GET PARAMETER ID zif_abapgit_definitions=>c_spagpa_param_package FIELD lv_package.
|
||||||
|
lv_package_adt = get_package_from_adt( ).
|
||||||
|
|
||||||
|
IF lv_repo_key IS NOT INITIAL.
|
||||||
|
|
||||||
|
SET PARAMETER ID zif_abapgit_definitions=>c_spagpa_param_repo_key FIELD ''.
|
||||||
|
zcl_abapgit_persistence_user=>get_instance( )->set_repo_show( lv_repo_key ).
|
||||||
|
|
||||||
|
ELSEIF lv_package IS NOT INITIAL.
|
||||||
|
|
||||||
|
SET PARAMETER ID zif_abapgit_definitions=>c_spagpa_param_package FIELD ''.
|
||||||
|
set_start_repo_from_package( lv_package ).
|
||||||
|
|
||||||
|
ELSEIF lv_package_adt IS NOT INITIAL.
|
||||||
|
|
||||||
|
set_start_repo_from_package( lv_package_adt ).
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD set_start_repo_from_package.
|
||||||
|
DATA: lo_repo TYPE REF TO zcl_abapgit_repo,
|
||||||
|
lt_r_package TYPE RANGE OF devclass,
|
||||||
|
ls_r_package LIKE LINE OF lt_r_package,
|
||||||
|
lt_superpackages TYPE zif_abapgit_sap_package=>ty_devclass_tt,
|
||||||
|
li_package TYPE REF TO zif_abapgit_sap_package,
|
||||||
|
lt_repo_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <lo_repo> TYPE LINE OF zif_abapgit_repo_srv=>ty_repo_list,
|
||||||
|
<lv_superpackage> LIKE LINE OF lt_superpackages.
|
||||||
|
|
||||||
|
li_package = zcl_abapgit_factory=>get_sap_package( iv_package ).
|
||||||
|
|
||||||
|
IF li_package->exists( ) = abap_false.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ls_r_package-sign = 'I'.
|
||||||
|
ls_r_package-option = 'EQ'.
|
||||||
|
ls_r_package-low = iv_package.
|
||||||
|
INSERT ls_r_package INTO TABLE lt_r_package.
|
||||||
|
|
||||||
|
" Also consider superpackages. E.g. when some open $abapgit_ui, abapGit repo
|
||||||
|
" should be found via package $abapgit
|
||||||
|
lt_superpackages = li_package->list_superpackages( ).
|
||||||
|
LOOP AT lt_superpackages ASSIGNING <lv_superpackage>.
|
||||||
|
ls_r_package-low = <lv_superpackage>.
|
||||||
|
INSERT ls_r_package INTO TABLE lt_r_package.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
lt_repo_list = zcl_abapgit_repo_srv=>get_instance( )->list( ).
|
||||||
|
|
||||||
|
LOOP AT lt_repo_list ASSIGNING <lo_repo>.
|
||||||
|
|
||||||
|
IF <lo_repo>->get_package( ) IN lt_r_package.
|
||||||
|
lo_repo ?= <lo_repo>.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
IF lo_repo IS BOUND.
|
||||||
|
zcl_abapgit_persistence_user=>get_instance( )->set_repo_show( lo_repo->get_key( ) ).
|
||||||
|
ENDIF.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_package_from_adt.
|
||||||
|
|
||||||
|
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
|
||||||
|
lr_context TYPE REF TO data,
|
||||||
|
lt_fields TYPE tihttpnvp.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <lg_context> TYPE any,
|
||||||
|
<lv_parameters> TYPE string,
|
||||||
|
<ls_field> LIKE LINE OF lt_fields.
|
||||||
|
|
||||||
|
|
||||||
|
ls_item-obj_type = 'CLAS'.
|
||||||
|
ls_item-obj_name = 'CL_ADT_GUI_INTEGRATION_CONTEXT'.
|
||||||
|
|
||||||
|
IF zcl_abapgit_objects=>exists( ls_item ) = abap_false.
|
||||||
|
" ADT is not supported in this NW release
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CREATE DATA lr_context TYPE ('CL_ADT_GUI_INTEGRATION_CONTEXT=>TY_CONTEXT_INFO').
|
||||||
|
|
||||||
|
ASSIGN lr_context->* TO <lg_context>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
CALL METHOD (ls_item-obj_name)=>read_context
|
||||||
|
RECEIVING
|
||||||
|
result = <lg_context>.
|
||||||
|
|
||||||
|
ASSIGN COMPONENT 'PARAMETERS'
|
||||||
|
OF STRUCTURE <lg_context>
|
||||||
|
TO <lv_parameters>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
lt_fields = cl_http_utility=>string_to_fields( cl_http_utility=>unescape_url( <lv_parameters> ) ).
|
||||||
|
|
||||||
|
READ TABLE lt_fields ASSIGNING <ls_field>
|
||||||
|
WITH KEY name = 'p_package_name'.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
rv_package = <ls_field>-value.
|
||||||
|
|
||||||
|
" We want to open the repo just once. Therefore we delete the parameters
|
||||||
|
" and initialize the ADT context.
|
||||||
|
CLEAR <lv_parameters>.
|
||||||
|
CALL METHOD (ls_item-obj_name)=>initialize_instance
|
||||||
|
EXPORTING
|
||||||
|
context_info = <lg_context>.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CATCH cx_root.
|
||||||
|
" Some problems with dynamic ADT access.
|
||||||
|
" Let's ignore it for now and fail silently
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
*******************************************************
|
||||||
|
|
||||||
FORM run.
|
FORM run.
|
||||||
|
|
||||||
DATA lx_exception TYPE REF TO zcx_abapgit_exception.
|
DATA lx_exception TYPE REF TO zcx_abapgit_exception.
|
||||||
|
@ -40,7 +246,7 @@ FORM open_gui RAISING zcx_abapgit_exception.
|
||||||
lv_action = zif_abapgit_definitions=>c_action-go_home.
|
lv_action = zif_abapgit_definitions=>c_action-go_home.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
zcl_abapgit_services_abapgit=>prepare_gui_startup( ).
|
lcl_startup=>prepare_gui_startup( ).
|
||||||
zcl_abapgit_ui_factory=>get_gui( )->go_home( lv_action ).
|
zcl_abapgit_ui_factory=>get_gui( )->go_home( lv_action ).
|
||||||
CALL SELECTION-SCREEN 1001. " trigger screen
|
CALL SELECTION-SCREEN 1001. " trigger screen
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user