anchor.diff:      INTERFACES zif_abapgit_object.
       ALIASES mo_files FOR zif_abapgit_object~mo_files.
   
  +  PROTECTED SECTION.
     PRIVATE SECTION.
   
  -    TYPES: tty_param_values TYPE STANDARD TABLE OF rsparam
  -                                 WITH NON-UNIQUE DEFAULT KEY.
  -
  -    CONSTANTS: c_oo_program(9)    VALUE '\PROGRAM=',
  -               c_oo_class(7)      VALUE '\CLASS=',
  -               c_oo_method(8)     VALUE '\METHOD=',
  -               c_oo_tcode         TYPE tcode VALUE 'OS_APPLICATION',
  -               c_oo_frclass(30)   VALUE 'CLASS',
  -               c_oo_frmethod(30)  VALUE 'METHOD',
  -               c_oo_frupdtask(30) VALUE 'UPDATE_MODE',
  -               c_oo_synchron      VALUE 'S',
  -               c_oo_asynchron     VALUE 'U',
  -               c_true             TYPE c VALUE 'X',
  -               c_false            TYPE c VALUE space.
  -
  -    METHODS:
  -      split_parameters
  -        CHANGING ct_rsparam TYPE s_param
  -                 cs_rsstcd  TYPE rsstcd
  -                 cs_tstcp   TYPE tstcp
  -                 cs_tstc    TYPE tstc,
  -
  -      split_parameters_comp
  -        IMPORTING ig_type  TYPE any
  -                  ig_param TYPE any
  -        CHANGING  cg_value TYPE any,
  -
  -      serialize_texts
  -        IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_output
  -        RAISING   zcx_abapgit_exception,
  -
  -      deserialize_texts
  -        IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_input
  -        RAISING   zcx_abapgit_exception,
  -
  -      deserialize_oo_transaction
  -        IMPORTING
  -          iv_package      TYPE devclass
  -          is_tstc         TYPE tstc
  -          is_tstcc        TYPE tstcc
  -          is_tstct        TYPE tstct
  -          is_tstcp        TYPE tstcp
  -          it_param_values TYPE zcl_abapgit_object_tran=>tty_param_values
  -          is_rsstcd       TYPE rsstcd
  -        RAISING
  -          zcx_abapgit_exception.
  -
  +    TYPES:
  +      tty_param_values TYPE STANDARD TABLE OF rsparam
  +                                   WITH NON-UNIQUE DEFAULT KEY .
  +
  +    CONSTANTS:
  +      c_oo_program(9) VALUE '\PROGRAM=' ##NO_TEXT.
  +    CONSTANTS:
  +      c_oo_class(7) VALUE '\CLASS=' ##NO_TEXT.
  +    CONSTANTS:
  +      c_oo_method(8) VALUE '\METHOD=' ##NO_TEXT.
  +    CONSTANTS c_oo_tcode TYPE tcode VALUE 'OS_APPLICATION' ##NO_TEXT.
  +    CONSTANTS:
  +      c_oo_frclass(30) VALUE 'CLASS' ##NO_TEXT.
  +    CONSTANTS:
  +      c_oo_frmethod(30) VALUE 'METHOD' ##NO_TEXT.
  +    CONSTANTS:
  +      c_oo_frupdtask(30) VALUE 'UPDATE_MODE' ##NO_TEXT.
  +    CONSTANTS c_oo_synchron TYPE c VALUE 'S' ##NO_TEXT.
  +    CONSTANTS c_oo_asynchron TYPE c VALUE 'U' ##NO_TEXT.
  +    CONSTANTS c_true TYPE c VALUE 'X' ##NO_TEXT.
  +    CONSTANTS c_false TYPE c VALUE space ##NO_TEXT.
  +    DATA:
  +      mt_bcdata TYPE STANDARD TABLE OF bdcdata .
  +
  +    METHODS add_data
  +      IMPORTING
  +        !iv_fnam TYPE bdcdata-fnam
  +        !iv_fval TYPE clike .
  +    METHODS call_se93
  +      RAISING
  +        zcx_abapgit_exception .
  +    METHODS set_oo_parameters
  +      IMPORTING
  +        !it_rsparam TYPE s_param
  +      CHANGING
  +        !cs_rsstcd  TYPE rsstcd .
  +    METHODS split_parameters
  +      CHANGING
  +        !ct_rsparam TYPE s_param
  +        !cs_rsstcd  TYPE rsstcd
  +        !cs_tstcp   TYPE tstcp
  +        !cs_tstc    TYPE tstc .
  +    METHODS split_parameters_comp
  +      IMPORTING
  +        !ig_type  TYPE any
  +        !ig_param TYPE any
  +      CHANGING
  +        !cg_value TYPE any .
  +    METHODS serialize_texts
  +      IMPORTING
  +        !io_xml TYPE REF TO zcl_abapgit_xml_output
  +      RAISING
  +        zcx_abapgit_exception .
  +    METHODS deserialize_texts
  +      IMPORTING
  +        !io_xml TYPE REF TO zcl_abapgit_xml_input
  +      RAISING
  +        zcx_abapgit_exception .
  +    METHODS deserialize_oo_transaction
  +      IMPORTING
  +        !iv_package      TYPE devclass
  +        !is_tstc         TYPE tstc
  +        !is_tstcc        TYPE tstcc
  +        !is_tstct        TYPE tstct
  +        !is_tstcp        TYPE tstcp
  +        !it_param_values TYPE zcl_abapgit_object_tran=>tty_param_values
  +        !is_rsstcd       TYPE rsstcd
  +      RAISING
  +        zcx_abapgit_exception .
   ENDCLASS.
   
   
   
  -CLASS zcl_abapgit_object_tran IMPLEMENTATION.
  -
  -
  -  METHOD deserialize_oo_transaction.
  -
  -    " You should remember that we don't use batch input just for fun,
  -    " but because FM RPY_TRANSACTION_INSERT doesn't support OO transactions.
  -
  -    DATA: ls_bcdata  TYPE bdcdata,
  -          lt_bcdata  TYPE STANDARD TABLE OF bdcdata,
  -          lt_message TYPE STANDARD TABLE OF bdcmsgcoll.
  +CLASS ZCL_ABAPGIT_OBJECT_TRAN IMPLEMENTATION.
  +
  +
  +  METHOD add_data.
  +
  +    DATA: ls_bcdata LIKE LINE OF mt_bcdata.
  +
  +    ls_bcdata-fnam = iv_fnam.
  +    ls_bcdata-fval = iv_fval.
  +    APPEND ls_bcdata TO mt_bcdata.
  +
  +  ENDMETHOD.
  +
  +
  +  METHOD call_se93.
  +
  +    DATA: lt_message TYPE STANDARD TABLE OF bdcmsgcoll.
   
       FIELD-SYMBOLS: <ls_message> TYPE bdcmsgcoll.
   
  -    ls_bcdata-program  = 'SAPLSEUK'.
  -    ls_bcdata-dynpro   = '0390'.
  -    ls_bcdata-dynbegin = 'X'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam     = 'TSTC-TCODE'.
  -    ls_bcdata-fval     = is_tstc-tcode.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    IF zif_abapgit_object~exists( ) = abap_true.
  -
  -      CLEAR ls_bcdata.
  -      ls_bcdata-fnam = 'BDC_OKCODE'.
  -      ls_bcdata-fval = '=CHNG'.
  -      APPEND ls_bcdata TO lt_bcdata.
  -
  -    ELSE.
  -
  -      CLEAR ls_bcdata.
  -      ls_bcdata-fnam = 'BDC_OKCODE'.
  -      ls_bcdata-fval = '=ADD'.
  -      APPEND ls_bcdata TO lt_bcdata.
  -
  -    ENDIF.
  -
  -    ls_bcdata-program  = 'SAPLSEUK'.
  -    ls_bcdata-dynpro   = '0300'.
  -    ls_bcdata-dynbegin = 'X'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam     = 'TSTCT-TTEXT'.
  -    ls_bcdata-fval     = is_tstct-ttext.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam     = 'RSSTCD-S_CLASS'.
  -    ls_bcdata-fval     = 'X'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam = 'BDC_OKCODE'.
  -    ls_bcdata-fval = '=ENTR'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    ls_bcdata-program  = 'SAPLSEUK'.
  -    ls_bcdata-dynpro   = '0360'.
  -    ls_bcdata-dynbegin = 'X'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam     = 'RSSTCD-S_TRFRAME'.
  -    ls_bcdata-fval     = is_rsstcd-s_trframe.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam     = 'RSSTCD-S_UPDTASK'.
  -    ls_bcdata-fval     = is_rsstcd-s_updtask.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam = 'BDC_OKCODE'.
  -    ls_bcdata-fval = '=TR_FRAMEWORK'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    ls_bcdata-program  = 'SAPLSEUK'.
  -    ls_bcdata-dynpro   = '0360'.
  -    ls_bcdata-dynbegin = 'X'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam     = 'RSSTCD-CLASSNAME'.
  -    ls_bcdata-fval     = is_rsstcd-classname.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam     = 'RSSTCD-METHOD'.
  -    ls_bcdata-fval     = is_rsstcd-method.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    IF is_rsstcd-s_local IS NOT INITIAL.
  -      CLEAR ls_bcdata.
  -      ls_bcdata-fnam     = 'RSSTCD-S_LOCAL'.
  -      ls_bcdata-fval     = is_rsstcd-s_local.
  -      APPEND ls_bcdata TO lt_bcdata.
  -    ENDIF.
  -
  -    IF is_rsstcd-s_updlok IS NOT INITIAL.
  -      CLEAR ls_bcdata.
  -      ls_bcdata-fnam     = 'RSSTCD-S_UPDLOK'.
  -      ls_bcdata-fval     = is_rsstcd-s_updlok.
  -      APPEND ls_bcdata TO lt_bcdata.
  -    ENDIF.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam     = 'TSTC-PGMNA'.
  -    ls_bcdata-fval     = is_tstc-pgmna.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    IF is_tstcc-s_webgui = '2'.
  -
  -      CLEAR ls_bcdata.
  -      ls_bcdata-fnam     = 'G_IAC_EWT'.
  -      ls_bcdata-fval     = abap_true.
  -      APPEND ls_bcdata TO lt_bcdata.
  -
  -      CLEAR ls_bcdata.
  -      ls_bcdata-fnam = 'BDC_OKCODE'.
  -      ls_bcdata-fval = 'MAKE_PROFI                                                            '.
  -      APPEND ls_bcdata TO lt_bcdata.
  -
  -      ls_bcdata-program  = 'SAPLSEUK'.
  -      ls_bcdata-dynpro   = '0360'.
  -      ls_bcdata-dynbegin = 'X'.
  -      APPEND ls_bcdata TO lt_bcdata.
  -
  -    ELSEIF is_tstcc-s_webgui IS NOT INITIAL.
  -
  -      CLEAR ls_bcdata.
  -      ls_bcdata-fnam     = 'TSTCC-S_WEBGUI'.
  -      ls_bcdata-fval     = is_tstcc-s_webgui.
  -      APPEND ls_bcdata TO lt_bcdata.
  -
  -    ENDIF.
  -
  -    IF is_tstcc-s_pervas IS NOT INITIAL.
  -      CLEAR ls_bcdata.
  -      ls_bcdata-fnam     = 'TSTCC-S_PERVAS'.
  -      ls_bcdata-fval     = is_tstcc-s_pervas.
  -      APPEND ls_bcdata TO lt_bcdata.
  -    ENDIF.
  -
  -    IF is_tstcc-s_service IS NOT INITIAL.
  -      CLEAR ls_bcdata.
  -      ls_bcdata-fnam     = 'TSTCC-S_SERVICE'.
  -      ls_bcdata-fval     = is_tstcc-s_service.
  -      APPEND ls_bcdata TO lt_bcdata.
  -    ENDIF.
  -
  -    IF is_tstcc-s_platin IS NOT INITIAL.
  -      CLEAR ls_bcdata.
  -      ls_bcdata-fnam     = 'TSTCC-S_PLATIN'.
  -      ls_bcdata-fval     = is_tstcc-s_platin.
  -      APPEND ls_bcdata TO lt_bcdata.
  -    ENDIF.
  -
  -    IF is_tstcc-s_win32 IS NOT INITIAL.
  -      CLEAR ls_bcdata.
  -      ls_bcdata-fnam     = 'TSTCC-S_WIN32'.
  -      ls_bcdata-fval     = is_tstcc-s_win32.
  -      APPEND ls_bcdata TO lt_bcdata.
  -    ENDIF.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam = 'BDC_OKCODE'.
  -    ls_bcdata-fval = '=WB_SAVE'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    ls_bcdata-program  = 'SAPLSTRD'.
  -    ls_bcdata-dynpro   = '0100'.
  -    ls_bcdata-dynbegin = 'X'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam     = 'KO007-L_DEVCLASS'.
  -    ls_bcdata-fval     = iv_package.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam = 'BDC_OKCODE'.
  -    ls_bcdata-fval = '=ADD'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    ls_bcdata-program  = 'BDC_OKCODE'.
  -    ls_bcdata-dynpro   = '0360'.
  -    ls_bcdata-dynbegin = 'X'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam = 'BDC_OKCODE'.
  -    ls_bcdata-fval = '=WB_BACK'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    ls_bcdata-program  = 'BDC_OKCODE'.
  -    ls_bcdata-dynpro   = '0360'.
  -    ls_bcdata-dynbegin = 'X'.
  -    APPEND ls_bcdata TO lt_bcdata.
  -
  -    CLEAR ls_bcdata.
  -    ls_bcdata-fnam = 'BDC_OKCODE'.
  -    ls_bcdata-fval = '=WB_BACK'.
  -    APPEND ls_bcdata TO lt_bcdata.
   
       CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
         EXPORTING
           tcode     = 'SE93'
           mode_val  = 'N'
         TABLES
  -        using_tab = lt_bcdata
  +        using_tab = mt_bcdata
           mess_tab  = lt_message
         EXCEPTIONS
           OTHERS    = 1.
  
positive.code:     serialize_texts( io_xml ).
  
    ENDMETHOD.
  
  
    METHOD zif_abapgit_object~is_active.
      rv_active = is_active( ).
    ENDMETHOD.
  ENDCLASS.
  
negative.code:       SORT lt_tpool_i18n BY sprsl ASCENDING.
        io_xml->add( iv_name = 'I18N_TPOOL'
                     ig_data = lt_tpool_i18n ).
      ENDIF.
  
    ENDMETHOD.
  
  
    METHOD set_oo_parameters.
  
      DATA: ls_param LIKE LINE OF it_rsparam.
  
      IF cs_rsstcd-call_tcode = c_oo_tcode.
        cs_rsstcd-s_trframe = c_true.
        LOOP AT it_rsparam INTO ls_param.
          CASE ls_param-field.
            WHEN c_oo_frclass.
              cs_rsstcd-classname = ls_param-value.
            WHEN c_oo_frmethod.
              cs_rsstcd-method   = ls_param-value.
            WHEN c_oo_frupdtask.
              IF ls_param-value = c_oo_synchron.
                cs_rsstcd-s_upddir  = c_true.
                cs_rsstcd-s_updtask = c_false.
                cs_rsstcd-s_updlok  = c_false.
              ELSEIF ls_param-value = c_oo_asynchron.
                cs_rsstcd-s_upddir  = c_false.
                cs_rsstcd-s_updtask = c_true.
                cs_rsstcd-s_updlok  = c_false.
              ELSE.
                cs_rsstcd-s_upddir  = c_false.
                cs_rsstcd-s_updtask = c_false.
                cs_rsstcd-s_updlok  = c_true.
              ENDIF.
          ENDCASE.
        ENDLOOP.
      ENDIF.
  
    ENDMETHOD.
  