diff --git a/src/zabapgit_object_ddls.prog.abap b/src/zabapgit_object_ddls.prog.abap index 6fc72a498..288280bcd 100644 --- a/src/zabapgit_object_ddls.prog.abap +++ b/src/zabapgit_object_ddls.prog.abap @@ -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: TYPE any, 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: TYPE STANDARD TABLE. + FIELD-SYMBOLS: TYPE STANDARD TABLE. + FIELD-SYMBOLS: TYPE any. + 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'). + ASSIGN lr_data->* TO . + + CREATE DATA lr_data LIKE LINE OF . + ASSIGN lr_data->* TO . + + CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_ENTITY_OF_VIEW'). + ASSIGN lr_data->* TO . + + CREATE DATA lr_data LIKE LINE OF . + ASSIGN lr_data->* TO . + + CLEAR . + ASSIGN COMPONENT 'NAME' OF STRUCTURE TO . + = iv_ddls_name. + INSERT INTO TABLE . + + + + 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 = + IMPORTING + view_of_entity = . + + READ TABLE ASSIGNING INDEX 1. + 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 ). + + ENDIF. + + CATCH cx_root. + lcx_exception=>raise( 'DDLS Jump Error' ). + ENDTRY. + + ENDMETHOD. "open_adt_stob + ENDCLASS. "lcl_object_view IMPLEMENTATION