*&---------------------------------------------------------------------* *& Include ZABAPGIT_OBJECT_VIEW *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * CLASS lcl_object_view DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_object_ddls DEFINITION INHERITING FROM lcl_objects_super FINAL. PUBLIC SECTION. 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 zcx_abapgit_exception. ENDCLASS. "lcl_object_dtel DEFINITION *----------------------------------------------------------------------* * CLASS lcl_object_view IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_object_ddls IMPLEMENTATION. METHOD lif_object~has_changed_since. rv_changed = abap_true. ENDMETHOD. "lif_object~has_changed_since METHOD lif_object~changed_by. DATA: lv_state TYPE objstate, li_ddl TYPE REF TO object, lr_data TYPE REF TO data. FIELD-SYMBOLS: TYPE any, TYPE any. CREATE DATA lr_data TYPE ('DDDDLSRCV'). ASSIGN lr_data->* TO . CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') RECEIVING handler = li_ddl. TRY. CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~READ') EXPORTING name = ms_item-obj_name get_state = 'A' IMPORTING ddddlsrcv_wa = . ASSIGN COMPONENT 'AS4USER' OF STRUCTURE TO . IF sy-subrc = 0. rv_user = . ENDIF. CATCH cx_root. ENDTRY. IF rv_user IS INITIAL. rv_user = c_user_unknown. ENDIF. ENDMETHOD. "lif_object~changed_by METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). rs_metadata-ddic = abap_true. rs_metadata-delete_tadir = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. DATA: lv_state TYPE objstate, li_ddl TYPE REF TO object. CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') RECEIVING handler = li_ddl. TRY. CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~READ') EXPORTING name = ms_item-obj_name get_state = 'A' IMPORTING got_state = lv_state. IF lv_state IS INITIAL. rv_bool = abap_false. ELSE. rv_bool = abap_true. ENDIF. CATCH cx_root. rv_bool = abap_false. ENDTRY. ENDMETHOD. "lif_object~exists METHOD lif_object~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. zcx_abapgit_exception=>raise( 'DDLS Jump Error' ). ENDCASE. ENDMETHOD. "jump METHOD lif_object~delete. DATA: li_ddl TYPE REF TO object. CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') RECEIVING handler = li_ddl. TRY. CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~DELETE') EXPORTING name = ms_item-obj_name. CATCH cx_root. zcx_abapgit_exception=>raise( 'DDLS error deleting' ). ENDTRY. ENDMETHOD. "delete METHOD lif_object~serialize. DATA: li_ddl TYPE REF TO object, lr_data TYPE REF TO data. FIELD-SYMBOLS: TYPE any, TYPE any. CREATE DATA lr_data TYPE ('DDDDLSRCV'). ASSIGN lr_data->* TO . CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') RECEIVING handler = li_ddl. TRY. CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~READ') EXPORTING name = ms_item-obj_name get_state = 'A' IMPORTING ddddlsrcv_wa = . CATCH cx_root. zcx_abapgit_exception=>raise( 'DDLS error reading' ). ENDTRY. ASSIGN COMPONENT 'AS4USER' OF STRUCTURE TO . ASSERT sy-subrc = 0. CLEAR . ASSIGN COMPONENT 'AS4DATE' OF STRUCTURE TO . ASSERT sy-subrc = 0. CLEAR . ASSIGN COMPONENT 'AS4TIME' OF STRUCTURE TO . ASSERT sy-subrc = 0. CLEAR . ASSIGN COMPONENT 'SOURCE' OF STRUCTURE TO . ASSERT sy-subrc = 0. mo_files->add_string( iv_ext = 'asddls' iv_string = ) ##no_text. CLEAR . io_xml->add( iv_name = 'DDLS' ig_data = ). ENDMETHOD. "serialize METHOD lif_object~deserialize. DATA: li_ddl TYPE REF TO object, lr_data TYPE REF TO data. FIELD-SYMBOLS: TYPE any, TYPE any. CREATE DATA lr_data TYPE ('DDDDLSRCV'). ASSIGN lr_data->* TO . io_xml->read( EXPORTING iv_name = 'DDLS' CHANGING cg_data = ). ASSIGN COMPONENT 'SOURCE' OF STRUCTURE TO . ASSERT sy-subrc = 0. = mo_files->read_string( 'asddls' ) ##no_text. CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') RECEIVING handler = li_ddl. TRY. CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~SAVE') EXPORTING name = ms_item-obj_name put_state = 'N' ddddlsrcv_wa = . CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~WRITE_TADIR') EXPORTING objectname = ms_item-obj_name devclass = iv_package prid = 0. CATCH cx_root. zcx_abapgit_exception=>raise( 'DDLS error writing TADIR' ). ENDTRY. lcl_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize METHOD lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null. ENDMETHOD. "lif_object~compare_to_remote_version METHOD open_adt_stob. 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. 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 . jump_adt( i_obj_name = i_obj_type = 'DDLS' ). ENDIF. CATCH cx_root. zcx_abapgit_exception=>raise( 'DDLS Jump Error' ). ENDTRY. ENDMETHOD. "open_adt_stob ENDCLASS. "lcl_object_view IMPLEMENTATION