*&---------------------------------------------------------------------* *& Include ZABAPGIT_OBJECT_TOBJ *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * CLASS lcl_object_tobj DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_object_tobj DEFINITION INHERITING FROM lcl_objects_super FINAL. PUBLIC SECTION. INTERFACES lif_object. ALIASES mo_files FOR lif_object~mo_files. ENDCLASS. "lcl_object_tobj DEFINITION *----------------------------------------------------------------------* * CLASS lcl_object_tobj IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_object_tobj IMPLEMENTATION. METHOD lif_object~has_changed_since. rv_changed = abap_true. ENDMETHOD. "lif_object~has_changed_since METHOD lif_object~changed_by. DATA: lv_type_pos TYPE i. lv_type_pos = strlen( ms_item-obj_name ) - 1. SELECT SINGLE luser FROM objh INTO rv_user WHERE objectname = ms_item-obj_name(lv_type_pos) AND objecttype = ms_item-obj_name+lv_type_pos. "#EC CI_GENBUFF IF sy-subrc <> 0. rv_user = c_user_unknown. ENDIF. ENDMETHOD. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). rs_metadata-late_deser = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. DATA: lv_objectname TYPE objh-objectname, lv_type_pos TYPE i. lv_type_pos = strlen( ms_item-obj_name ) - 1. SELECT SINGLE objectname FROM objh INTO lv_objectname WHERE objectname = ms_item-obj_name(lv_type_pos) AND objecttype = ms_item-obj_name+lv_type_pos. "#EC CI_GENBUFF rv_bool = boolc( sy-subrc = 0 ). ENDMETHOD. "lif_object~exists METHOD lif_object~serialize. DATA: ls_objh TYPE objh, ls_objt TYPE objt, lt_objs TYPE tt_objs, lt_objsl TYPE tt_objsl, lt_objm TYPE tt_objm, lv_type_pos TYPE i. lv_type_pos = strlen( ms_item-obj_name ) - 1. ls_objh-objectname = ms_item-obj_name(lv_type_pos). ls_objh-objecttype = ms_item-obj_name+lv_type_pos. CALL FUNCTION 'CTO_OBJECT_GET' EXPORTING iv_objectname = ls_objh-objectname iv_objecttype = ls_objh-objecttype iv_language = mv_language iv_sel_objt = abap_true iv_sel_objs = abap_true iv_sel_objsl = abap_true iv_sel_objm = abap_true IMPORTING es_objh = ls_objh es_objt = ls_objt TABLES tt_objs = lt_objs tt_objsl = lt_objsl tt_objm = lt_objm EXCEPTIONS object_not_defined = 1 OTHERS = 2. IF sy-subrc = 1. RETURN. ELSEIF sy-subrc <> 0. lcx_exception=>raise( 'error from CTO_OBJECT_GET' ). ENDIF. CLEAR: ls_objh-luser, ls_objh-ldate. io_xml->add( iv_name = 'OBJH' ig_data = ls_objh ). io_xml->add( iv_name = 'OBJT' ig_data = ls_objt ). io_xml->add( iv_name = 'OBJS' ig_data = lt_objs ). io_xml->add( iv_name = 'OBJSL' ig_data = lt_objsl ). io_xml->add( iv_name = 'OBJM' ig_data = lt_objm ). ENDMETHOD. "serialize METHOD lif_object~deserialize. DATA: ls_objh TYPE objh, ls_objt TYPE objt, lt_objs TYPE tt_objs, lt_objsl TYPE tt_objsl, lt_objm TYPE tt_objm. io_xml->read( EXPORTING iv_name = 'OBJH' CHANGING cg_data = ls_objh ). io_xml->read( EXPORTING iv_name = 'OBJT' CHANGING cg_data = ls_objt ). io_xml->read( EXPORTING iv_name = 'OBJS' CHANGING cg_data = lt_objs ). io_xml->read( EXPORTING iv_name = 'OBJSL' CHANGING cg_data = lt_objsl ). io_xml->read( EXPORTING iv_name = 'OBJM' CHANGING cg_data = lt_objm ). CALL FUNCTION 'OBJ_GENERATE' EXPORTING iv_objectname = ls_objh-objectname iv_objecttype = ls_objh-objecttype iv_maint_mode = 'I' iv_objecttext = ls_objt-ddtext iv_objcateg = ls_objh-objcateg iv_objtransp = ls_objh-objtransp iv_devclass = iv_package TABLES tt_v_obj_s = lt_objs tt_objm = lt_objm EXCEPTIONS illegal_call = 1 object_not_found = 2 generate_error = 3 transport_error = 4 object_enqueue_failed = 5 OTHERS = 6. IF sy-subrc <> 0. * TOBJ has to be saved/generated after the DDIC tables have been * activated - fixed with late deserialization lcx_exception=>raise( 'error from OBJ_GENERATE' ). ENDIF. ENDMETHOD. "deserialize METHOD lif_object~delete. DATA: ls_objh TYPE objh, lv_type_pos TYPE i. lv_type_pos = strlen( ms_item-obj_name ) - 1. ls_objh-objectname = ms_item-obj_name(lv_type_pos). ls_objh-objecttype = ms_item-obj_name+lv_type_pos. CALL FUNCTION 'OBJ_GENERATE' EXPORTING iv_objectname = ls_objh-objectname iv_objecttype = ls_objh-objecttype iv_maint_mode = 'D' EXCEPTIONS illegal_call = 1 object_not_found = 2 generate_error = 3 transport_error = 4 object_enqueue_failed = 5 OTHERS = 6. IF sy-subrc <> 0. lcx_exception=>raise( 'error from OBJ_GENERATE' ). ENDIF. ENDMETHOD. "delete METHOD lif_object~jump. lcx_exception=>raise( 'todo, TOBJ jump' ). ENDMETHOD. "jump METHOD lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. ENDMETHOD. ENDCLASS. "lcl_object_tobj IMPLEMENTATION