CLASS zcl_abapgit_ecatt_val_obj_upl DEFINITION PUBLIC INHERITING FROM cl_apl_ecatt_upload FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS: z_set_stream_for_upload IMPORTING iv_xml TYPE xstring, upload REDEFINITION. PROTECTED SECTION. METHODS: upload_data_from_stream REDEFINITION, get_business_msgs_from_dom RAISING cx_ecatt_apl, get_impl_detail_from_dom RAISING cx_ecatt_apl, get_vo_flags_from_dom RAISING cx_ecatt_apl. PRIVATE SECTION. DATA: mv_external_xml TYPE xstring. ENDCLASS. CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION. METHOD get_business_msgs_from_dom. " downport from CL_APL_ECATT_VO_UPLOAD DATA: li_section TYPE REF TO if_ixml_element, lt_buss_msg_ref TYPE zif_abapgit_ecatt=>etvo_bus_msg_tabtype, lv_exception_occurred TYPE etonoff, lo_ecatt_vo TYPE REF TO object. FIELD-SYMBOLS: TYPE any. li_section = template_over_all->find_from_name_ns( 'ETVO_MSG' ). IF NOT li_section IS INITIAL. CALL FUNCTION 'SDIXML_DOM_TO_DATA' EXPORTING data_as_dom = li_section IMPORTING dataobject = lt_buss_msg_ref EXCEPTIONS illegal_object = 1 OTHERS = 2. IF sy-subrc <> 0. CLEAR lt_buss_msg_ref. ENDIF. ENDIF. ASSIGN ('ECATT_OBJECT') TO . ASSERT sy-subrc = 0. lo_ecatt_vo = . TRY. CALL METHOD lo_ecatt_vo->('SET_BUSSINESS_MSG') EXPORTING im_buss_msg_ref = lt_buss_msg_ref. CATCH cx_ecatt_apl INTO exception_to_raise. lv_exception_occurred = 'X'. ENDTRY. IF lv_exception_occurred = 'X'. raise_upload_exception( previous = exception_to_raise ). ENDIF. ENDMETHOD. METHOD get_impl_detail_from_dom. " downport from CL_APL_ECATT_VO_UPLOAD DATA: li_section TYPE REF TO if_ixml_element, ls_impl_details TYPE zif_abapgit_ecatt=>etvoimpl_det, lv_exception_occurred TYPE etonoff, lo_ecatt_vo TYPE REF TO object. FIELD-SYMBOLS: TYPE any. li_section = template_over_all->find_from_name_ns( 'IMPL_DET' ). IF NOT li_section IS INITIAL. CALL FUNCTION 'SDIXML_DOM_TO_DATA' EXPORTING data_as_dom = li_section IMPORTING dataobject = ls_impl_details EXCEPTIONS illegal_object = 1 OTHERS = 2. IF sy-subrc <> 0. CLEAR ls_impl_details. ENDIF. ENDIF. ASSIGN ('ECATT_OBJECT') TO . ASSERT sy-subrc = 0. lo_ecatt_vo = . TRY. CALL METHOD lo_ecatt_vo->('SET_IMPL_DETAILS') EXPORTING im_impl_details = ls_impl_details. CATCH cx_ecatt_apl INTO exception_to_raise. lv_exception_occurred = 'X'. ENDTRY. IF lv_exception_occurred = 'X'. raise_upload_exception( previous = exception_to_raise ). ENDIF. ENDMETHOD. METHOD get_vo_flags_from_dom. " downport from CL_APL_ECATT_VO_UPLOAD DATA: li_section TYPE REF TO if_ixml_element, lv_error_prio TYPE zif_abapgit_ecatt=>etvo_error_prio, lv_invert_validation TYPE zif_abapgit_ecatt=>etvo_invert_validation, lv_exception_occurred TYPE etonoff, lo_ecatt_vo TYPE REF TO object. FIELD-SYMBOLS: TYPE any. li_section = template_over_all->find_from_name_ns( 'INVERT_VALIDATION' ). IF NOT li_section IS INITIAL. CALL FUNCTION 'SDIXML_DOM_TO_DATA' EXPORTING data_as_dom = li_section IMPORTING dataobject = lv_invert_validation EXCEPTIONS illegal_object = 1 OTHERS = 2. IF sy-subrc <> 0. CLEAR lv_invert_validation. ENDIF. ENDIF. ASSIGN ('ECATT_OBJECT') TO . ASSERT sy-subrc = 0. lo_ecatt_vo = . TRY. CALL METHOD lo_ecatt_vo->('SET_INVERT_VALIDATION_FLAG') EXPORTING im_invert_validation = lv_invert_validation. CATCH cx_ecatt_apl INTO exception_to_raise. lv_exception_occurred = 'X'. ENDTRY. li_section = template_over_all->find_from_name_ns( 'ERROR_PRIORITY' ). IF NOT li_section IS INITIAL. CALL FUNCTION 'SDIXML_DOM_TO_DATA' EXPORTING data_as_dom = li_section IMPORTING dataobject = lv_error_prio EXCEPTIONS illegal_object = 1 OTHERS = 2. IF sy-subrc <> 0. CLEAR lv_invert_validation. ENDIF. ENDIF. TRY. CALL METHOD lo_ecatt_vo->('SET_ERROR_PRIORITY') EXPORTING im_error_prio = lv_error_prio. CATCH cx_ecatt_apl INTO exception_to_raise. lv_exception_occurred = 'X'. ENDTRY. IF lv_exception_occurred = 'X'. raise_upload_exception( previous = exception_to_raise ). ENDIF. ENDMETHOD. METHOD upload. " We inherit from CL_APL_ECATT_UPLOAD because CL_APL_ECATT_VO_UPLOAD " doesn't exist in 702 " downport from CL_APL_ECATT_VO_UPLOAD DATA: lx_ex TYPE REF TO cx_ecatt_apl, lv_exists TYPE etonoff, lv_exc_occ TYPE etonoff, ls_tadir TYPE tadir, lo_ecatt_vo TYPE REF TO object, lo_params TYPE REF TO cl_apl_ecatt_params. FIELD-SYMBOLS: TYPE any, TYPE data, TYPE data, TYPE data. TRY. ch_object-i_devclass = ch_object-d_devclass. ASSIGN COMPONENT 'D_AKH' OF STRUCTURE ch_object TO . " doesn't exist in 702 ASSIGN COMPONENT 'I_AKH' OF STRUCTURE ch_object TO . " doesn't exist in 702 IF IS ASSIGNED AND IS ASSIGNED. = . ENDIF. super->upload( CHANGING ch_object = ch_object ). upload_data_from_stream( ch_object-filename ). CATCH cx_ecatt_apl INTO lx_ex. IF template_over_all IS INITIAL. RAISE EXCEPTION lx_ex. ELSE. lv_exc_occ = 'X'. ENDIF. ENDTRY. TRY. CALL METHOD ('GET_ATTRIBUTES_FROM_DOM_NEW') " doesn't exit in 702 CHANGING ch_object = ch_object. CATCH cx_ecatt_apl INTO lx_ex. lv_exc_occ = 'X'. ENDTRY. ASSIGN ('ECATT_OBJECT') TO . ASSERT sy-subrc = 0. lo_ecatt_vo = . ASSIGN lo_ecatt_vo->('PARAMS') TO . ASSERT sy-subrc = 0. lo_params = . TRY. get_impl_detail_from_dom( ). CATCH cx_ecatt_apl INTO lx_ex. lv_exc_occ = 'X'. ENDTRY. TRY. get_vo_flags_from_dom( ). CATCH cx_ecatt_apl INTO lx_ex. lv_exc_occ = 'X'. ENDTRY. TRY. get_business_msgs_from_dom( ). CATCH cx_ecatt_apl INTO lx_ex. lv_exc_occ = 'X'. ENDTRY. TRY. CALL METHOD ('GET_PARAMS_FROM_DOM_NEW') " doesn't exist in 702 EXPORTING im_params = lo_params. CATCH cx_ecatt_apl INTO lx_ex. lv_exc_occ = 'X'. ENDTRY. TRY. get_variants_from_dom( lo_params ). CATCH cx_ecatt_apl INTO lx_ex. lv_exc_occ = 'X'. ENDTRY. TRY. lv_exists = cl_apl_ecatt_object=>existence_check_object( im_name = ch_object-d_obj_name im_version = ch_object-d_obj_ver im_obj_type = ch_object-s_obj_type im_exists_any_version = 'X' ). IF lv_exists EQ space. CALL METHOD lo_ecatt_vo->('SET_TADIR_FOR_NEW_OBJECT') EXPORTING im_tadir_for_new_object = tadir_preset. ENDIF. CATCH cx_ecatt. CLEAR lv_exists. ENDTRY. TRY. CALL METHOD lo_ecatt_vo->('SAVE') EXPORTING im_do_commit = 'X'. CATCH cx_ecatt_apl INTO lx_ex. lv_exc_occ = 'X'. ENDTRY. * get devclass from existing object TRY. cl_apl_ecatt_object=>get_tadir_entry( EXPORTING im_obj_name = ch_object-d_obj_name im_obj_type = ch_object-s_obj_type IMPORTING ex_tadir = ls_tadir ). ch_object-d_devclass = ls_tadir-devclass. CATCH cx_ecatt. CLEAR ls_tadir. ENDTRY. IF lv_exc_occ = 'X'. raise_upload_exception( previous = lx_ex ). ENDIF. ENDMETHOD. METHOD upload_data_from_stream. " Downport template_over_all = zcl_abapgit_ecatt_helper=>upload_data_from_stream( mv_external_xml ). ENDMETHOD. METHOD z_set_stream_for_upload. " downport from CL_ABAPGIT_ECATT_DATA_UPLOAD SET_STREAM_FOR_UPLOAD mv_external_xml = iv_xml. ENDMETHOD. ENDCLASS.