From d1b6631738be763d8453dd0bae57a50c97d50601 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sun, 23 Apr 2017 11:05:24 +0000 Subject: [PATCH 1/2] Refactored jump to ADT to common method jump_adt The jump to ADT functionality for DDLS and DCLS are quite similar. Therefore I refactored them to the common superclass lcl_objects_super. The new method jump_adt can now also be used by other object types. --- src/zabapgit_object_dcls.prog.abap | 36 +---------------- src/zabapgit_object_ddls.prog.abap | 37 ++--------------- src/zabapgit_objects.prog.abap | 64 ++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 68 deletions(-) diff --git a/src/zabapgit_object_dcls.prog.abap b/src/zabapgit_object_dcls.prog.abap index 6269d3a52..c9ea8ad2a 100644 --- a/src/zabapgit_object_dcls.prog.abap +++ b/src/zabapgit_object_dcls.prog.abap @@ -50,43 +50,11 @@ CLASS lcl_object_dcls IMPLEMENTATION. METHOD lif_object~jump. - DATA: adt_link TYPE string, - obj_name TYPE e071-obj_name, - li_object TYPE REF TO cl_wb_object, - li_adt TYPE REF TO object, - li_adt_uri_mapper TYPE REF TO object, - li_adt_objref TYPE REF TO object. - - FIELD-SYMBOLS: TYPE string. - TRY. - obj_name = ms_item-obj_name. + jump_adt( ). - li_object = cl_wb_object=>create_from_transport_key( p_object = ms_item-obj_type p_obj_name = obj_name ). - - CALL METHOD ('CL_ADT_TOOLS_CORE_FACTORY')=>('GET_INSTANCE') - RECEIVING - result = li_adt. - - CALL METHOD li_adt->('IF_ADT_TOOLS_CORE_FACTORY~GET_URI_MAPPER') - RECEIVING - result = li_adt_uri_mapper. - - CALL METHOD li_adt_uri_mapper->('IF_ADT_URI_MAPPER~MAP_WB_OBJECT_TO_OBJREF') - EXPORTING - wb_object = li_object - RECEIVING - result = li_adt_objref. - - ASSIGN ('li_adt_objref->ref_data-uri') TO . - - CONCATENATE 'adt://' sy-sysid INTO adt_link. - - cl_gui_frontend_services=>execute( EXPORTING document = adt_link - EXCEPTIONS OTHERS = 1 ). - - CATCH cx_root. + CATCH lcx_exception. lcx_exception=>raise( 'DCLS Jump Error' ). ENDTRY. diff --git a/src/zabapgit_object_ddls.prog.abap b/src/zabapgit_object_ddls.prog.abap index 288280bcd..090122fb7 100644 --- a/src/zabapgit_object_ddls.prog.abap +++ b/src/zabapgit_object_ddls.prog.abap @@ -212,12 +212,7 @@ CLASS lcl_object_ddls IMPLEMENTATION. METHOD open_adt_stob. - DATA: lv_adt_link TYPE string. - DATA: lv_obj_name TYPE e071-obj_name. - DATA: li_object TYPE REF TO cl_wb_object. - DATA: li_adt TYPE REF TO object. - DATA: li_adt_uri_mapper TYPE REF TO object. - DATA: li_adt_objref TYPE REF TO object. + . DATA: lr_data TYPE REF TO data. DATA: li_ddl TYPE REF TO object. FIELD-SYMBOLS: TYPE STANDARD TABLE. @@ -226,8 +221,6 @@ CLASS lcl_object_ddls IMPLEMENTATION. FIELD-SYMBOLS: TYPE any. FIELD-SYMBOLS: TYPE any. FIELD-SYMBOLS: TYPE any. - FIELD-SYMBOLS: TYPE string. - TRY. CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_DDOBJ'). @@ -247,8 +240,6 @@ CLASS lcl_object_ddls IMPLEMENTATION. = iv_ddls_name. INSERT INTO TABLE . - - CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') RECEIVING handler = li_ddl. @@ -263,30 +254,8 @@ CLASS lcl_object_ddls IMPLEMENTATION. IF sy-subrc = 0. ASSIGN COMPONENT 'DDLNAME' OF STRUCTURE TO . - lv_obj_name = . - - li_object = cl_wb_object=>create_from_transport_key( p_object = 'DDLS' p_obj_name = lv_obj_name ). - - CALL METHOD ('CL_ADT_TOOLS_CORE_FACTORY')=>('GET_INSTANCE') - RECEIVING - result = li_adt. - - CALL METHOD LI_ADT->('IF_ADT_TOOLS_CORE_FACTORY~GET_URI_MAPPER') - RECEIVING - result = li_adt_uri_mapper. - - CALL METHOD li_adt_uri_mapper->('IF_ADT_URI_MAPPER~MAP_WB_OBJECT_TO_OBJREF') - EXPORTING - wb_object = li_object - RECEIVING - result = li_adt_objref. - - ASSIGN ('li_adt_objref->ref_data-uri') TO . - - CONCATENATE 'adt://' sy-sysid INTO lv_adt_link. - - cl_gui_frontend_services=>execute( EXPORTING document = lv_adt_link - EXCEPTIONS OTHERS = 1 ). + jump_adt( i_obj_name = + i_obj_type = 'DDLS' ). ENDIF. diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index 47eebaffb..ec63d358e 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -576,6 +576,10 @@ CLASS lcl_objects_super DEFINITION ABSTRACT. jump_se11 IMPORTING iv_radio TYPE string iv_field TYPE string + RAISING lcx_exception, + jump_adt + IMPORTING i_obj_name like ms_item-obj_name OPTIONAL + i_obj_type like ms_item-obj_type OPTIONAL RAISING lcx_exception. ENDCLASS. "lcl_objects_super DEFINITION @@ -1613,6 +1617,66 @@ CLASS lcl_objects_super IMPLEMENTATION. ENDMETHOD. "jump_se11 + METHOD jump_adt. + + DATA: adt_link TYPE string, + obj_type TYPE trobjtype, + obj_name TYPE trobj_name, + li_object TYPE REF TO cl_wb_object, + li_adt TYPE REF TO object, + li_adt_uri_mapper TYPE REF TO object, + li_adt_objref TYPE REF TO object. + + FIELD-SYMBOLS: TYPE string. + + IF i_obj_name IS SUPPLIED. + obj_name = i_obj_name. + ELSE. + obj_name = ms_item-obj_name. + ENDIF. + + IF i_obj_type IS SUPPLIED. + obj_type = i_obj_type. + ELSE. + obj_type = ms_item-obj_type. + ENDIF. + + TRY. + li_object = cl_wb_object=>create_from_transport_key( p_object = obj_type + p_obj_name = obj_name ). + + CALL METHOD ('CL_ADT_TOOLS_CORE_FACTORY')=>('GET_INSTANCE') + RECEIVING + result = li_adt. + + CALL METHOD li_adt->('IF_ADT_TOOLS_CORE_FACTORY~GET_URI_MAPPER') + RECEIVING + result = li_adt_uri_mapper. + + CALL METHOD li_adt_uri_mapper->('IF_ADT_URI_MAPPER~MAP_WB_OBJECT_TO_OBJREF') + EXPORTING + wb_object = li_object + RECEIVING + result = li_adt_objref. + + ASSIGN ('li_adt_objref->ref_data-uri') TO . + + CONCATENATE 'adt://' sy-sysid INTO adt_link. + + cl_gui_frontend_services=>execute( EXPORTING document = adt_link + EXCEPTIONS OTHERS = 1 ). + + IF sy-subrc <> 0. + lcx_exception=>raise( 'ADT Jump Error' ). + ENDIF. + + CATCH cx_root. + lcx_exception=>raise( 'ADT Jump Error' ). + ENDTRY. + + ENDMETHOD. + + METHOD get_metadata. rs_metadata-class = cl_abap_classdescr=>describe_by_object_ref( me )->get_relative_name( ). From 11ff761d14be784f5a36b6b5367ce12e03edd2a0 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sun, 23 Apr 2017 11:20:04 +0000 Subject: [PATCH 2/2] fixed linter errors strange, these errors weren't detected by abapOpenChecks, may I did something wrong --- src/zabapgit_object_ddls.prog.abap | 1 - src/zabapgit_objects.prog.abap | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/zabapgit_object_ddls.prog.abap b/src/zabapgit_object_ddls.prog.abap index 090122fb7..c5a665605 100644 --- a/src/zabapgit_object_ddls.prog.abap +++ b/src/zabapgit_object_ddls.prog.abap @@ -212,7 +212,6 @@ CLASS lcl_object_ddls IMPLEMENTATION. METHOD open_adt_stob. - . DATA: lr_data TYPE REF TO data. DATA: li_ddl TYPE REF TO object. FIELD-SYMBOLS: TYPE STANDARD TABLE. diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index ec63d358e..3e9b8b82e 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -1642,8 +1642,7 @@ CLASS lcl_objects_super IMPLEMENTATION. ENDIF. TRY. - li_object = cl_wb_object=>create_from_transport_key( p_object = obj_type - p_obj_name = obj_name ). + li_object = cl_wb_object=>create_from_transport_key( p_object = obj_type p_obj_name = obj_name ). CALL METHOD ('CL_ADT_TOOLS_CORE_FACTORY')=>('GET_INSTANCE') RECEIVING