mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
DDLS jump added ADT
Jump to DDLS in ADT if ADT Link Handling is enabled and ADT is connected to the SAP System
This commit is contained in:
parent
531481dbf3
commit
2e1b3fd623
|
@ -13,6 +13,11 @@ CLASS lcl_object_ddls DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
|||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS open_adt_stob
|
||||
IMPORTING iv_ddls_name TYPE tadir-obj_name
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -67,7 +72,26 @@ CLASS lcl_object_ddls IMPLEMENTATION.
|
|||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
lcx_exception=>raise( 'todo, DDLS jump' ).
|
||||
|
||||
DATA: lv_typename TYPE typename.
|
||||
DATA: lv_ddtypekind TYPE ddtypekind.
|
||||
|
||||
lv_typename = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_TYPEINFO_GET'
|
||||
EXPORTING
|
||||
typename = lv_typename
|
||||
IMPORTING
|
||||
typekind = lv_ddtypekind.
|
||||
|
||||
CASE lv_ddtypekind.
|
||||
WHEN 'STOB'.
|
||||
|
||||
me->open_adt_stob( iv_ddls_name = ms_item-obj_name ).
|
||||
WHEN OTHERS.
|
||||
lcx_exception=>raise( 'DDLS Jump Error' ).
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
@ -91,8 +115,8 @@ CLASS lcl_object_ddls IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: li_ddl TYPE REF TO object,
|
||||
lr_data TYPE REF TO data.
|
||||
DATA: li_ddl TYPE REF TO object,
|
||||
lr_data TYPE REF TO data.
|
||||
|
||||
FIELD-SYMBOLS: <ls_data> TYPE any,
|
||||
<lv_field> TYPE any.
|
||||
|
@ -186,4 +210,90 @@ CLASS lcl_object_ddls IMPLEMENTATION.
|
|||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD. "lif_object~compare_to_remote_version
|
||||
|
||||
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: <lt_ddnames> TYPE STANDARD TABLE.
|
||||
FIELD-SYMBOLS: <lt_entity_view> TYPE STANDARD TABLE.
|
||||
FIELD-SYMBOLS: <ls_ddnames> TYPE any.
|
||||
FIELD-SYMBOLS: <ls_entity_view> TYPE any.
|
||||
FIELD-SYMBOLS: <lv_ddname> TYPE any.
|
||||
FIELD-SYMBOLS: <lv_ddlname> TYPE any.
|
||||
FIELD-SYMBOLS: <ls_uri> TYPE string.
|
||||
|
||||
TRY.
|
||||
|
||||
CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_DDOBJ').
|
||||
ASSIGN lr_data->* TO <lt_ddnames>.
|
||||
|
||||
CREATE DATA lr_data LIKE LINE OF <lt_ddnames>.
|
||||
ASSIGN lr_data->* TO <ls_ddnames>.
|
||||
|
||||
CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_ENTITY_OF_VIEW').
|
||||
ASSIGN lr_data->* TO <lt_entity_view>.
|
||||
|
||||
CREATE DATA lr_data LIKE LINE OF <lt_entity_view>.
|
||||
ASSIGN lr_data->* TO <ls_entity_view>.
|
||||
|
||||
CLEAR <lt_ddnames>.
|
||||
ASSIGN COMPONENT 'NAME' OF STRUCTURE <ls_ddnames> TO <lv_ddname>.
|
||||
<lv_ddname> = iv_ddls_name.
|
||||
INSERT <ls_ddnames> INTO TABLE <lt_ddnames>.
|
||||
|
||||
|
||||
|
||||
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
|
||||
RECEIVING
|
||||
handler = li_ddl.
|
||||
|
||||
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~GET_VIEWNAME_FROM_ENTITYNAME')
|
||||
EXPORTING
|
||||
ddnames = <lt_ddnames>
|
||||
IMPORTING
|
||||
view_of_entity = <lt_entity_view>.
|
||||
|
||||
READ TABLE <lt_entity_view> ASSIGNING <ls_entity_view> INDEX 1.
|
||||
IF sy-subrc = 0.
|
||||
ASSIGN COMPONENT 'DDLNAME' OF STRUCTURE <ls_entity_view> TO <lv_ddlname>.
|
||||
|
||||
lv_obj_name = <lv_ddlname>.
|
||||
|
||||
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 <ls_uri>.
|
||||
|
||||
CONCATENATE 'adt://' sy-sysid <ls_uri> INTO lv_adt_link.
|
||||
|
||||
cl_gui_frontend_services=>execute( EXPORTING document = lv_adt_link
|
||||
EXCEPTIONS OTHERS = 1 ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
CATCH cx_root.
|
||||
lcx_exception=>raise( 'DDLS Jump Error' ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "open_adt_stob
|
||||
|
||||
ENDCLASS. "lcl_object_view IMPLEMENTATION
|
||||
|
|
Loading…
Reference in New Issue
Block a user