mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Refactor: Jump to Object Logic (#5114)
* Refactor: Jump to Object Logic The goal is to greatly simplify the code to jump to an object, and to separate UI and object layers some more. This PR introduces GUI Jumper (`zcl/if_abapgit_gui_jumper`), which covers all generic options to show an object. It tries the following options in order: - ADT (if enabled) - Workbench with line number - Workbench without line number - Transport System (new) Only if all fail, abapGit will call the object-specific handler. Next steps: - Remove `jump_adt` and `jump_se11` from `zcl_abapgit_objects_super` and replace by GUI Jumper - Remove almost all object-specific jump handler since they are covered by GUI Jumper now * Add class * Lint * Misleading name
This commit is contained in:
parent
9f689e4e4f
commit
a37cf58e01
173
src/objects/core/zcl_abapgit_gui_jumper.clas.abap
Normal file
173
src/objects/core/zcl_abapgit_gui_jumper.clas.abap
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
CLASS zcl_abapgit_gui_jumper DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
INTERFACES zif_abapgit_gui_jumper.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
METHODS jump_tr
|
||||||
|
IMPORTING
|
||||||
|
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_exit) TYPE abap_bool.
|
||||||
|
|
||||||
|
METHODS jump_wb
|
||||||
|
IMPORTING
|
||||||
|
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
|
!iv_new_window TYPE abap_bool
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_exit) TYPE abap_bool.
|
||||||
|
|
||||||
|
METHODS jump_wb_line
|
||||||
|
IMPORTING
|
||||||
|
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
|
!iv_sub_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name
|
||||||
|
!iv_sub_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type
|
||||||
|
!iv_line_number TYPE i
|
||||||
|
!iv_new_window TYPE abap_bool
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_exit) TYPE abap_bool.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD jump_tr.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
lv_e071_object TYPE e071-object,
|
||||||
|
lv_e071_obj_name TYPE e071-obj_name.
|
||||||
|
|
||||||
|
lv_e071_object = is_item-obj_type.
|
||||||
|
lv_e071_obj_name = is_item-obj_name.
|
||||||
|
|
||||||
|
CALL FUNCTION 'TR_OBJECT_JUMP_TO_TOOL'
|
||||||
|
EXPORTING
|
||||||
|
iv_action = 'SHOW'
|
||||||
|
iv_pgmid = 'R3TR'
|
||||||
|
iv_object = lv_e071_object
|
||||||
|
iv_obj_name = lv_e071_obj_name
|
||||||
|
EXCEPTIONS
|
||||||
|
jump_not_possible = 1
|
||||||
|
OTHERS = 2.
|
||||||
|
|
||||||
|
rv_exit = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD jump_wb.
|
||||||
|
|
||||||
|
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||||
|
EXPORTING
|
||||||
|
operation = 'SHOW'
|
||||||
|
object_name = is_item-obj_name
|
||||||
|
object_type = is_item-obj_type
|
||||||
|
devclass = is_item-devclass
|
||||||
|
in_new_window = iv_new_window
|
||||||
|
EXCEPTIONS
|
||||||
|
not_executed = 1
|
||||||
|
invalid_object_type = 2
|
||||||
|
OTHERS = 3.
|
||||||
|
|
||||||
|
rv_exit = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD jump_wb_line.
|
||||||
|
|
||||||
|
IF iv_line_number IS NOT INITIAL AND iv_sub_obj_type IS NOT INITIAL AND iv_sub_obj_name IS NOT INITIAL.
|
||||||
|
|
||||||
|
" For the line navigation we have to supply the sub object type (iv_sub_obj_type).
|
||||||
|
" If we use is_item-obj_type it navigates only to the object.
|
||||||
|
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||||
|
EXPORTING
|
||||||
|
operation = 'SHOW'
|
||||||
|
object_name = is_item-obj_name
|
||||||
|
object_type = iv_sub_obj_type
|
||||||
|
devclass = is_item-devclass
|
||||||
|
include = iv_sub_obj_name
|
||||||
|
position = iv_line_number
|
||||||
|
in_new_window = iv_new_window
|
||||||
|
EXCEPTIONS
|
||||||
|
not_executed = 1
|
||||||
|
invalid_object_type = 2
|
||||||
|
OTHERS = 3.
|
||||||
|
|
||||||
|
rv_exit = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_gui_jumper~jump.
|
||||||
|
|
||||||
|
" Try all generic jump options
|
||||||
|
|
||||||
|
" 1) ADT Jump
|
||||||
|
rv_exit = zif_abapgit_gui_jumper~jump_adt(
|
||||||
|
is_item = is_item
|
||||||
|
iv_sub_obj_name = iv_sub_obj_name
|
||||||
|
iv_line_number = iv_line_number ).
|
||||||
|
|
||||||
|
IF rv_exit = abap_true.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
" 2) WB Jump with Line Number
|
||||||
|
rv_exit = jump_wb_line(
|
||||||
|
is_item = is_item
|
||||||
|
iv_sub_obj_name = iv_sub_obj_name
|
||||||
|
iv_sub_obj_type = iv_sub_obj_type
|
||||||
|
iv_line_number = iv_line_number
|
||||||
|
iv_new_window = iv_new_window ).
|
||||||
|
|
||||||
|
IF rv_exit = abap_true.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
" 3) WB Jump without Line Number
|
||||||
|
rv_exit = jump_wb(
|
||||||
|
is_item = is_item
|
||||||
|
iv_new_window = iv_new_window ).
|
||||||
|
|
||||||
|
IF rv_exit = abap_true.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
" 4) Transport Tool Jump
|
||||||
|
rv_exit = jump_tr( is_item ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_gui_jumper~jump_adt.
|
||||||
|
|
||||||
|
" Open object in ADT (if enabled)
|
||||||
|
|
||||||
|
DATA lv_adt_jump_enabled TYPE abap_bool.
|
||||||
|
|
||||||
|
lv_adt_jump_enabled = zcl_abapgit_persist_factory=>get_settings( )->read( )->get_adt_jump_enabled( ).
|
||||||
|
|
||||||
|
IF lv_adt_jump_enabled = abap_true.
|
||||||
|
zcl_abapgit_adt_link=>jump(
|
||||||
|
iv_obj_name = is_item-obj_name
|
||||||
|
iv_obj_type = is_item-obj_type
|
||||||
|
iv_sub_obj_name = iv_sub_obj_name
|
||||||
|
iv_line_number = iv_line_number ).
|
||||||
|
|
||||||
|
rv_exit = abap_true.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/objects/core/zcl_abapgit_gui_jumper.clas.xml
Normal file
16
src/objects/core/zcl_abapgit_gui_jumper.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>ZCL_ABAPGIT_GUI_JUMPER</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abapGit - GUI Jump</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -898,14 +898,15 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD jump.
|
METHOD jump.
|
||||||
|
|
||||||
DATA: li_obj TYPE REF TO zif_abapgit_object,
|
DATA: li_obj TYPE REF TO zif_abapgit_object,
|
||||||
lv_adt_jump_enabled TYPE abap_bool.
|
lv_exit TYPE abap_bool.
|
||||||
|
|
||||||
" Nothing to do for unsupported objects
|
" Nothing to do for unsupported objects
|
||||||
IF is_type_supported( is_item-obj_type ) = abap_false.
|
IF is_type_supported( is_item-obj_type ) = abap_false.
|
||||||
zcx_abapgit_exception=>raise( |Object type { is_item-obj_type } is not supported by this system| ).
|
zcx_abapgit_exception=>raise( |Object type { is_item-obj_type } is not supported by this system| ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
" Nothing to do if object does not exist
|
||||||
li_obj = create_object( is_item = is_item
|
li_obj = create_object( is_item = is_item
|
||||||
iv_language = zif_abapgit_definitions=>c_english ).
|
iv_language = zif_abapgit_definitions=>c_english ).
|
||||||
|
|
||||||
|
@ -913,46 +914,15 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise( |Object { is_item-obj_type } { is_item-obj_name } doesn't exist| ).
|
zcx_abapgit_exception=>raise( |Object { is_item-obj_type } { is_item-obj_name } doesn't exist| ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
lv_adt_jump_enabled = zcl_abapgit_persist_factory=>get_settings( )->read( )->get_adt_jump_enabled( ).
|
" Open object in new window
|
||||||
|
lv_exit = zcl_abapgit_ui_factory=>get_gui_jumper( )->jump(
|
||||||
|
is_item = is_item
|
||||||
|
iv_sub_obj_name = iv_sub_obj_name
|
||||||
|
iv_sub_obj_type = iv_sub_obj_type
|
||||||
|
iv_line_number = iv_line_number ).
|
||||||
|
|
||||||
IF lv_adt_jump_enabled = abap_true.
|
" If all fails, try object-specific handler
|
||||||
|
IF lv_exit IS INITIAL.
|
||||||
TRY.
|
|
||||||
zcl_abapgit_objects_super=>jump_adt(
|
|
||||||
iv_obj_name = is_item-obj_name
|
|
||||||
iv_obj_type = is_item-obj_type
|
|
||||||
iv_sub_obj_name = iv_sub_obj_name
|
|
||||||
iv_sub_obj_type = iv_sub_obj_type
|
|
||||||
iv_line_number = iv_line_number ).
|
|
||||||
CATCH zcx_abapgit_exception.
|
|
||||||
li_obj->jump( ).
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
ELSEIF iv_line_number IS NOT INITIAL
|
|
||||||
AND iv_sub_obj_type IS NOT INITIAL
|
|
||||||
AND iv_sub_obj_name IS NOT INITIAL.
|
|
||||||
|
|
||||||
" For the line navigation we have to supply the sub object type (i_sub_obj_type).
|
|
||||||
" If we use is_item-obj_type it navigates only to the object.
|
|
||||||
|
|
||||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
|
||||||
EXPORTING
|
|
||||||
operation = 'SHOW'
|
|
||||||
object_name = is_item-obj_name
|
|
||||||
object_type = iv_sub_obj_type
|
|
||||||
include = iv_sub_obj_name
|
|
||||||
position = iv_line_number
|
|
||||||
in_new_window = abap_true
|
|
||||||
EXCEPTIONS
|
|
||||||
not_executed = 1
|
|
||||||
invalid_object_type = 2
|
|
||||||
OTHERS = 3.
|
|
||||||
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ELSE.
|
|
||||||
li_obj->jump( ).
|
li_obj->jump( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
|
|
@ -295,23 +295,11 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD jump_adt.
|
METHOD jump_adt.
|
||||||
|
|
||||||
DATA: lv_adt_link TYPE string,
|
zcl_abapgit_adt_link=>jump(
|
||||||
lx_error TYPE REF TO cx_root.
|
iv_obj_name = iv_obj_name
|
||||||
|
iv_obj_type = iv_obj_type
|
||||||
TRY.
|
iv_sub_obj_name = iv_sub_obj_name
|
||||||
|
iv_line_number = iv_line_number ).
|
||||||
lv_adt_link = zcl_abapgit_adt_link=>generate(
|
|
||||||
iv_obj_name = iv_obj_name
|
|
||||||
iv_obj_type = iv_obj_type
|
|
||||||
iv_sub_obj_name = iv_sub_obj_name
|
|
||||||
iv_line_number = iv_line_number ).
|
|
||||||
|
|
||||||
zcl_abapgit_ui_factory=>get_frontend_services( )->execute( iv_document = lv_adt_link ).
|
|
||||||
|
|
||||||
CATCH cx_root INTO lx_error.
|
|
||||||
zcx_abapgit_exception=>raise( iv_text = 'ADT Jump Error'
|
|
||||||
ix_previous = lx_error ).
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -830,8 +830,8 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD render_diff_head.
|
METHOD render_diff_head.
|
||||||
|
|
||||||
DATA: ls_stats TYPE zif_abapgit_definitions=>ty_count,
|
DATA: ls_stats TYPE zif_abapgit_definitions=>ty_count,
|
||||||
lv_adt_link TYPE string.
|
lv_link TYPE string.
|
||||||
|
|
||||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||||
|
|
||||||
|
@ -859,14 +859,14 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
||||||
IF NOT ( is_diff-lstate = zif_abapgit_definitions=>c_state-unchanged AND
|
IF NOT ( is_diff-lstate = zif_abapgit_definitions=>c_state-unchanged AND
|
||||||
is_diff-rstate = zif_abapgit_definitions=>c_state-added ) AND
|
is_diff-rstate = zif_abapgit_definitions=>c_state-added ) AND
|
||||||
NOT is_diff-lstate = zif_abapgit_definitions=>c_state-deleted.
|
NOT is_diff-lstate = zif_abapgit_definitions=>c_state-deleted.
|
||||||
lv_adt_link = ri_html->a(
|
lv_link = ri_html->a(
|
||||||
iv_txt = |{ is_diff-path }{ is_diff-filename }|
|
iv_txt = |{ is_diff-path }{ is_diff-filename }|
|
||||||
iv_typ = zif_abapgit_html=>c_action_type-sapevent
|
iv_typ = zif_abapgit_html=>c_action_type-sapevent
|
||||||
iv_act = |jump?TYPE={ is_diff-obj_type }&NAME={ is_diff-obj_name }| ).
|
iv_act = |jump?TYPE={ is_diff-obj_type }&NAME={ is_diff-obj_name }| ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF lv_adt_link IS NOT INITIAL.
|
IF lv_link IS NOT INITIAL.
|
||||||
ri_html->add( |<span class="diff_name">{ lv_adt_link }</span>| ).
|
ri_html->add( |<span class="diff_name">{ lv_link }</span>| ).
|
||||||
ELSE.
|
ELSE.
|
||||||
ri_html->add( |<span class="diff_name">{ is_diff-path }{ is_diff-filename }</span>| ).
|
ri_html->add( |<span class="diff_name">{ is_diff-path }{ is_diff-filename }</span>| ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
|
@ -38,6 +38,9 @@ CLASS zcl_abapgit_ui_factory DEFINITION
|
||||||
!iv_disable_query_table TYPE abap_bool DEFAULT abap_true
|
!iv_disable_query_table TYPE abap_bool DEFAULT abap_true
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ri_viewer) TYPE REF TO zif_abapgit_html_viewer .
|
VALUE(ri_viewer) TYPE REF TO zif_abapgit_html_viewer .
|
||||||
|
CLASS-METHODS get_gui_jumper
|
||||||
|
RETURNING
|
||||||
|
VALUE(ri_gui_jumper) TYPE REF TO zif_abapgit_gui_jumper .
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
@ -48,6 +51,7 @@ CLASS zcl_abapgit_ui_factory DEFINITION
|
||||||
CLASS-DATA go_gui TYPE REF TO zcl_abapgit_gui .
|
CLASS-DATA go_gui TYPE REF TO zcl_abapgit_gui .
|
||||||
CLASS-DATA gi_fe_services TYPE REF TO zif_abapgit_frontend_services .
|
CLASS-DATA gi_fe_services TYPE REF TO zif_abapgit_frontend_services .
|
||||||
CLASS-DATA gi_gui_services TYPE REF TO zif_abapgit_gui_services .
|
CLASS-DATA gi_gui_services TYPE REF TO zif_abapgit_gui_services .
|
||||||
|
CLASS-DATA gi_gui_jumper TYPE REF TO zif_abapgit_gui_jumper .
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -173,6 +177,17 @@ CLASS zcl_abapgit_ui_factory IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_gui_jumper.
|
||||||
|
|
||||||
|
IF gi_gui_jumper IS INITIAL.
|
||||||
|
CREATE OBJECT gi_gui_jumper TYPE zcl_abapgit_gui_jumper.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ri_gui_jumper = gi_gui_jumper.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_gui_services.
|
METHOD get_gui_services.
|
||||||
IF gi_gui_services IS NOT BOUND.
|
IF gi_gui_services IS NOT BOUND.
|
||||||
gi_gui_services ?= get_gui( ).
|
gi_gui_services ?= get_gui( ).
|
||||||
|
|
26
src/ui/zif_abapgit_gui_jumper.intf.abap
Normal file
26
src/ui/zif_abapgit_gui_jumper.intf.abap
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
INTERFACE zif_abapgit_gui_jumper
|
||||||
|
PUBLIC.
|
||||||
|
|
||||||
|
METHODS jump
|
||||||
|
IMPORTING
|
||||||
|
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
|
!iv_sub_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name OPTIONAL
|
||||||
|
!iv_sub_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type OPTIONAL
|
||||||
|
!iv_line_number TYPE i OPTIONAL
|
||||||
|
!iv_new_window TYPE abap_bool DEFAULT abap_true
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_exit) TYPE abap_bool
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
METHODS jump_adt
|
||||||
|
IMPORTING
|
||||||
|
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
|
!iv_sub_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name
|
||||||
|
!iv_line_number TYPE i
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_exit) TYPE abap_bool
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
ENDINTERFACE.
|
15
src/ui/zif_abapgit_gui_jumper.intf.xml
Normal file
15
src/ui/zif_abapgit_gui_jumper.intf.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOINTERF>
|
||||||
|
<CLSNAME>ZIF_ABAPGIT_GUI_JUMPER</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abapGit - GUI Jump</DESCRIPT>
|
||||||
|
<EXPOSURE>2</EXPOSURE>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOINTERF>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -1,10 +1,21 @@
|
||||||
CLASS zcl_abapgit_adt_link DEFINITION
|
CLASS zcl_abapgit_adt_link DEFINITION
|
||||||
PUBLIC
|
PUBLIC
|
||||||
FINAL
|
FINAL
|
||||||
CREATE PUBLIC .
|
CREATE PUBLIC.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
CLASS-METHODS jump
|
||||||
|
IMPORTING
|
||||||
|
!iv_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name
|
||||||
|
!iv_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type
|
||||||
|
!iv_sub_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name OPTIONAL
|
||||||
|
!iv_line_number TYPE i OPTIONAL
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
|
||||||
CLASS-METHODS generate
|
CLASS-METHODS generate
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name
|
!iv_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name
|
||||||
|
@ -14,54 +25,58 @@ CLASS zcl_abapgit_adt_link DEFINITION
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_result) TYPE string
|
VALUE(rv_result) TYPE string
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception.
|
||||||
PROTECTED SECTION.
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
CLASS-METHODS:
|
|
||||||
get_adt_objects_and_names
|
CLASS-METHODS get_adt_objects_and_names
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name
|
iv_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name
|
||||||
iv_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type
|
iv_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type
|
||||||
EXPORTING
|
EXPORTING
|
||||||
eo_adt_uri_mapper TYPE REF TO object
|
eo_adt_uri_mapper TYPE REF TO object
|
||||||
eo_adt_objectref TYPE REF TO object
|
eo_adt_objectref TYPE REF TO object
|
||||||
ev_program TYPE progname
|
ev_program TYPE progname
|
||||||
ev_include TYPE progname
|
ev_include TYPE progname
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS is_adt_jump_possible
|
||||||
|
IMPORTING
|
||||||
|
io_object TYPE REF TO cl_wb_object
|
||||||
|
io_adt TYPE REF TO object
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_is_adt_jump_possible) TYPE abap_bool
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
CLASS-METHODS:
|
|
||||||
is_adt_jump_possible
|
|
||||||
IMPORTING io_object TYPE REF TO cl_wb_object
|
|
||||||
io_adt TYPE REF TO object
|
|
||||||
RETURNING VALUE(rv_is_adt_jump_possible) TYPE abap_bool
|
|
||||||
RAISING zcx_abapgit_exception.
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_ADT_LINK IMPLEMENTATION.
|
CLASS zcl_abapgit_adt_link IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD generate.
|
METHOD generate.
|
||||||
|
|
||||||
DATA: lv_adt_link TYPE string.
|
DATA: lv_adt_link TYPE string.
|
||||||
DATA: lo_adt_uri_mapper TYPE REF TO object ##needed.
|
DATA: lo_adt_uri_mapper TYPE REF TO object.
|
||||||
DATA: lo_adt_objref TYPE REF TO object ##needed.
|
DATA: lo_adt_objref TYPE REF TO object.
|
||||||
DATA: lo_adt_sub_objref TYPE REF TO object ##needed.
|
DATA: lo_adt_sub_objref TYPE REF TO object.
|
||||||
DATA: lv_program TYPE progname.
|
DATA: lv_program TYPE progname.
|
||||||
DATA: lv_include TYPE progname.
|
DATA: lv_include TYPE progname.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <lv_uri> TYPE string.
|
FIELD-SYMBOLS: <lv_uri> TYPE string.
|
||||||
|
|
||||||
get_adt_objects_and_names(
|
get_adt_objects_and_names(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
iv_obj_name = iv_obj_name
|
iv_obj_name = iv_obj_name
|
||||||
iv_obj_type = iv_obj_type
|
iv_obj_type = iv_obj_type
|
||||||
IMPORTING
|
IMPORTING
|
||||||
eo_adt_uri_mapper = lo_adt_uri_mapper
|
eo_adt_uri_mapper = lo_adt_uri_mapper
|
||||||
eo_adt_objectref = lo_adt_objref
|
eo_adt_objectref = lo_adt_objref
|
||||||
ev_program = lv_program
|
ev_program = lv_program
|
||||||
ev_include = lv_include ).
|
ev_include = lv_include ).
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
IF iv_sub_obj_name IS NOT INITIAL.
|
IF iv_sub_obj_name IS NOT INITIAL.
|
||||||
|
@ -93,9 +108,11 @@ CLASS ZCL_ABAPGIT_ADT_LINK IMPLEMENTATION.
|
||||||
CONCATENATE 'adt://' sy-sysid <lv_uri> INTO lv_adt_link.
|
CONCATENATE 'adt://' sy-sysid <lv_uri> INTO lv_adt_link.
|
||||||
|
|
||||||
rv_result = lv_adt_link.
|
rv_result = lv_adt_link.
|
||||||
|
|
||||||
CATCH cx_root.
|
CATCH cx_root.
|
||||||
zcx_abapgit_exception=>raise( 'ADT Jump Error' ).
|
zcx_abapgit_exception=>raise( 'ADT Jump Error' ).
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -105,6 +122,7 @@ CLASS ZCL_ABAPGIT_ADT_LINK IMPLEMENTATION.
|
||||||
DATA lv_obj_name TYPE trobj_name.
|
DATA lv_obj_name TYPE trobj_name.
|
||||||
DATA lo_object TYPE REF TO cl_wb_object.
|
DATA lo_object TYPE REF TO cl_wb_object.
|
||||||
DATA lo_adt TYPE REF TO object.
|
DATA lo_adt TYPE REF TO object.
|
||||||
|
|
||||||
FIELD-SYMBOLS <lv_uri> TYPE string.
|
FIELD-SYMBOLS <lv_uri> TYPE string.
|
||||||
|
|
||||||
lv_obj_name = iv_obj_name.
|
lv_obj_name = iv_obj_name.
|
||||||
|
@ -197,4 +215,24 @@ CLASS ZCL_ABAPGIT_ADT_LINK IMPLEMENTATION.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD jump.
|
||||||
|
|
||||||
|
DATA lv_adt_link TYPE string.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lv_adt_link = generate(
|
||||||
|
iv_obj_name = iv_obj_name
|
||||||
|
iv_obj_type = iv_obj_type
|
||||||
|
iv_sub_obj_name = iv_sub_obj_name
|
||||||
|
iv_line_number = iv_line_number ).
|
||||||
|
|
||||||
|
zcl_abapgit_ui_factory=>get_frontend_services( )->execute( iv_document = lv_adt_link ).
|
||||||
|
|
||||||
|
CATCH cx_root.
|
||||||
|
zcx_abapgit_exception=>raise( 'ADT Jump Error' ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user