anchor.diff:  
   
     METHOD zif_abapgit_object~get_deserialize_steps.
  -    APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
  +    APPEND zif_abapgit_object=>gc_step_id-abap TO rt_steps.
     ENDMETHOD.
   
   
     METHOD zif_abapgit_object~get_metadata.
  -    rs_metadata = get_metadata( ).
  -
  -    rs_metadata-ddic         = abap_true.
  -    rs_metadata-delete_tadir = abap_true.
  +    rs_metadata              = get_metadata( ).
  +    rs_metadata-ddic         = is_ddic( ).
  +    rs_metadata-delete_tadir = is_delete_tadir( ).
     ENDMETHOD.
   
   
  
positive.code:   ENDMETHOD.
  
  
    METHOD zif_abapgit_object~deserialize.
  
      DATA:
        li_object_data_model TYPE REF TO if_wb_object_data_model,
        lx_error             TYPE REF TO cx_swb_exception.
  
      FIELD-SYMBOLS:
        <ls_service_definition> TYPE any,
        <lv_source>             TYPE data.
  
      ASSIGN mr_service_definition->* TO <ls_service_definition>.
      ASSERT sy-subrc = 0.
  
      io_xml->read(
        EXPORTING
          iv_name = 'SRVD'
        CHANGING
          cg_data = <ls_service_definition> ).
  
      ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE <ls_service_definition>
             TO <lv_source>.
      ASSERT sy-subrc = 0.
  
      <lv_source> = mo_files->read_string( 'assrvd' ).
  
      TRY.
          CREATE OBJECT li_object_data_model TYPE ('CL_SRVD_WB_OBJECT_DATA').
          li_object_data_model->set_data( <ls_service_definition> ).
          mi_persistence->save( li_object_data_model ).
  
          tadir_insert( iv_package ).
          corr_insert( iv_package ).
  
        CATCH cx_swb_exception INTO lx_error.
          zcx_abapgit_exception=>raise(
              iv_text     = lx_error->get_text( )
              ix_previous = lx_error ).
      ENDTRY.
  
    ENDMETHOD.
  
  
    METHOD zif_abapgit_object~exists.
  
      TRY.
          mi_persistence->get(
              p_object_key           = mv_service_definition_key
              p_version              = 'A'
              p_existence_check_only = abap_true ).
  
          rv_bool = abap_true.
  
        CATCH cx_swb_object_does_not_exist cx_swb_exception.
          rv_bool = abap_false.
      ENDTRY.
  
  
negative.code:   METHOD zif_abapgit_object~serialize.
  
      DATA:
        li_object_data_model  TYPE REF TO if_wb_object_data_model,
        li_wb_object_operator TYPE REF TO object,
        lx_error              TYPE REF TO cx_root,
        lv_source             TYPE string.
  
      FIELD-SYMBOLS:
        <ls_service_definition> TYPE any,
        <lv_metadata>           TYPE any,
        <lv_source>             TYPE string.
  
      ASSIGN mr_service_definition->* TO <ls_service_definition>.
      ASSERT sy-subrc = 0.
  
      TRY.
          li_wb_object_operator = get_wb_object_operator( ).
  
          CALL METHOD li_wb_object_operator->('IF_WB_OBJECT_OPERATOR~READ')
            EXPORTING
              version        = 'A'
              data_selection = 'AL'
            IMPORTING
              "data           = <ls_service_definition>
              eo_object_data = li_object_data_model.
  
          CALL METHOD li_object_data_model->('GET_DATA')
            IMPORTING
              p_data = <ls_service_definition>.
  
          ASSIGN COMPONENT 'METADATA' OF STRUCTURE <ls_service_definition> TO <lv_metadata>.
          ASSERT sy-subrc = 0.
          clear_fields( CHANGING cs_metadata = <lv_metadata> ).
  
          ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE <ls_service_definition> TO <lv_source>.
          ASSERT sy-subrc = 0.
          lv_source = <lv_source>.
  
          io_xml->add(
             iv_name = mc_xml_parent_name
             ig_data = <lv_metadata> ).
  
          mo_files->add_string(
              iv_ext    = mc_source_file
              iv_string = lv_source ).
  
  
        CATCH cx_root INTO lx_error.
          zcx_abapgit_exception=>raise(
              iv_text     = lx_error->get_text( )
              ix_previous = lx_error ).
      ENDTRY.
  
    ENDMETHOD.
  
  
    METHOD merge_object_data.
  
      DATA:
        lo_object_data        TYPE REF TO object,
        lo_object_data_old    TYPE REF TO if_wb_object_data_model,
        lr_new                TYPE REF TO data,
        lr_old                TYPE REF TO data,
        lo_wb_object_operator TYPE REF TO object.
  
      FIELD-SYMBOLS:
        <ls_new>       TYPE any,
        <ls_old>       TYPE any,
        <lv_field_old> TYPE any,
        <lv_field_new> TYPE any.
  
      CREATE OBJECT lo_object_data TYPE ('CL_SRVD_WB_OBJECT_DATA').
      lo_object_data = io_object_data.
  
      CREATE DATA lr_new TYPE ('CL_SRVD_WB_OBJECT_DATA=>TY_SRVD_OBJECT_DATA').
      ASSIGN lr_new->* TO <ls_new>.
      ASSERT sy-subrc = 0.
  
      CREATE DATA lr_old TYPE ('CL_SRVD_WB_OBJECT_DATA=>TY_SRVD_OBJECT_DATA').
      ASSIGN lr_old->* TO <ls_old>.
      ASSERT sy-subrc = 0.
  
      CALL METHOD lo_object_data->('IF_WB_OBJECT_DATA_MODEL~GET_DATA')
        EXPORTING
          p_metadata_only  = abap_false
          p_data_selection = 'AL'
        IMPORTING
          p_data           = <ls_new>.
  
      lo_wb_object_operator = get_wb_object_operator( ).
  
      CALL METHOD lo_wb_object_operator->('IF_WB_OBJECT_OPERATOR~READ')
        EXPORTING
          data_selection = 'AL' " if_wb_object_data_selection_co=>c_all_data
        IMPORTING
          eo_object_data = lo_object_data_old.
  
      CALL METHOD lo_object_data_old->('GET_DATA')
        EXPORTING
          p_metadata_only  = abap_false
          p_data_selection = 'AL' " if_wb_object_data_selection_co=>c_all_data
        IMPORTING
          p_data           = <ls_old>.
  
      ASSIGN COMPONENT 'METADATA-DESCRIPTION' OF STRUCTURE <ls_old> TO <lv_field_old>.
      ASSIGN COMPONENT 'METADATA-DESCRIPTION' OF STRUCTURE <ls_new> TO <lv_field_new>.
      <lv_field_old> = <lv_field_new>.
  
      ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE <ls_old> TO <lv_field_old>.
      ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE <ls_new> TO <lv_field_new>.
      <lv_field_old> = <lv_field_new>.
  
      CREATE OBJECT ro_object_data_merged TYPE ('CL_SRVD_WB_OBJECT_DATA').
  
      CALL METHOD ro_object_data_merged->('SET_DATA')
        EXPORTING
          p_data = <ls_old>.
  
    ENDMETHOD.
  
  
    METHOD is_delete_tadir.
      rv_delete_tadir = abap_true.
    ENDMETHOD.
  
  
    METHOD is_ddic.
      rv_ddic = abap_false.
    ENDMETHOD.
  
  
    METHOD get_wb_object_operator.
  
      DATA:
        ls_object_type TYPE wbobjtype,
        lx_error       TYPE REF TO cx_root.
  
      IF mo_object_operator IS BOUND.
        ro_object_operator = mo_object_operator.
      ENDIF.
  
      ls_object_type-objtype_tr = 'SRVD'.
      ls_object_type-subtype_wb = 'SRV'.
  
      TRY.
          CALL METHOD ('CL_WB_OBJECT_OPERATOR')=>('CREATE_INSTANCE')
            EXPORTING
              object_type = ls_object_type
              object_key  = mv_service_definition_key
            RECEIVING
              result      = mo_object_operator.
  
        CATCH cx_root INTO lx_error.
          zcx_abapgit_exception=>raise(
              iv_text     = lx_error->get_text( )
              ix_previous = lx_error ).
      ENDTRY.
  
      ro_object_operator = mo_object_operator.
  
    ENDMETHOD.
  
  
    METHOD get_transport_req_if_needed.
  
      DATA: li_sap_package TYPE REF TO zif_abapgit_sap_package.
  
      li_sap_package = zcl_abapgit_factory=>get_sap_package( iv_package ).
  
      IF li_sap_package->are_changes_recorded_in_tr_req( ) = abap_true.
        rv_transport_request = zcl_abapgit_default_transport=>get_instance( )->get( )-ordernum.
      ENDIF.
  
    ENDMETHOD.
  
  
    METHOD get_object_data.
  
      DATA:
        lr_metadata TYPE REF TO data,
        lr_data     TYPE REF TO data.
  
      FIELD-SYMBOLS:
        <lv_metadata_node> TYPE any,
        <ls_metadata>      TYPE any,
        <lv_source>        TYPE any,
        <lg_data>          TYPE any.
  
      CREATE DATA lr_data TYPE ('CL_SRVD_WB_OBJECT_DATA=>TY_SRVD_OBJECT_DATA').
      ASSIGN lr_data->* TO <lg_data>.
      ASSERT sy-subrc = 0.
  
      ASSIGN COMPONENT 'METADATA' OF STRUCTURE <lg_data> TO <lv_metadata_node>.
      ASSERT sy-subrc = 0.
  
      CREATE DATA lr_metadata  TYPE ('CL_SRVD_WB_OBJECT_DATA=>TY_METADATA_EXTENDED').
      ASSIGN lr_metadata->* TO <ls_metadata>.
      ASSERT sy-subrc = 0.
  
      io_xml->read(
        EXPORTING
          iv_name = mc_xml_parent_name
        CHANGING
          cg_data = <ls_metadata> ).
  
      <lv_metadata_node> = <ls_metadata>.
  
      ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE <lg_data> TO <lv_source>.
      ASSERT sy-subrc = 0.
  
      <lv_source> = mo_files->read_string( mc_source_file ).
      IF <lv_source> IS INITIAL.
        <lv_source> = mo_files->read_string( 'assrvd' ).
      ENDIF.
  
      CREATE OBJECT ro_object_data TYPE ('CL_SRVD_WB_OBJECT_DATA').
      ro_object_data->set_data( p_data = <lg_data>  ).
  
    ENDMETHOD.
  
  
    METHOD clear_fields.
  
      FIELD-SYMBOLS: <lv_links> TYPE ANY TABLE.
      FIELD-SYMBOLS: <lv_value> TYPE data.
      FIELD-SYMBOLS <ls_item> TYPE any.
  
      clear_field(
        EXPORTING
          iv_fieldname          = 'VERSION'
        CHANGING
          cs_metadata = cs_metadata ).
  
      clear_field(
        EXPORTING
          iv_fieldname          = 'CREATED_AT'
        CHANGING
          cs_metadata = cs_metadata ).
  
      clear_field(
        EXPORTING
          iv_fieldname          = 'CREATED_BY'
        CHANGING
          cs_metadata = cs_metadata ).
  
      clear_field(
        EXPORTING
          iv_fieldname          = 'CHANGED_AT'
        CHANGING
          cs_metadata = cs_metadata ).
  
      clear_field(
        EXPORTING
          iv_fieldname          = 'CHANGED_BY'
        CHANGING
          cs_metadata = cs_metadata ).
  
      clear_field(
        EXPORTING
          iv_fieldname          = 'RESPONSIBLE'
        CHANGING
          cs_metadata = cs_metadata ).
  
      clear_field(
        EXPORTING
        iv_fieldname          = 'PACKAGE_REF'
        CHANGING
        cs_metadata = cs_metadata ).
  
      clear_field(
        EXPORTING
        iv_fieldname          = 'MASTER_SYSTEM'
        CHANGING
        cs_metadata = cs_metadata ).
  
      clear_field(
        EXPORTING
        iv_fieldname          = 'DT_UUID'
        CHANGING
        cs_metadata = cs_metadata ).
  
      clear_field(
        EXPORTING
        iv_fieldname          = 'ABAP_LANGUAGE_VERSION'
        CHANGING
        cs_metadata = cs_metadata ).
  
      clear_field(
        EXPORTING
        iv_fieldname          = 'LINKS'
        CHANGING
        cs_metadata = cs_metadata ).
  
    ENDMETHOD.
  
  
    METHOD clear_field.
  
      FIELD-SYMBOLS: <lv_value> TYPE data.
  
      ASSIGN COMPONENT iv_fieldname OF STRUCTURE cs_metadata
             TO <lv_value>.
      ASSERT sy-subrc = 0.
  
      CLEAR: <lv_value>.
  
    ENDMETHOD.
  ENDCLASS.
  