abapGit/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_upl.clas.abap
Christian Guenter 173351c13f downport 702
2018-08-07 13:46:58 +02:00

361 lines
8.9 KiB
ABAP

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: <lg_ecatt_vo> 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 <lg_ecatt_vo>.
ASSERT sy-subrc = 0.
lo_ecatt_vo = <lg_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: <lg_ecatt_vo> 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 <lg_ecatt_vo>.
ASSERT sy-subrc = 0.
lo_ecatt_vo = <lg_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: <lg_ecatt_vo> 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 <lg_ecatt_vo>.
ASSERT sy-subrc = 0.
lo_ecatt_vo = <lg_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: <lg_ecatt_vo> TYPE any,
<lg_params> TYPE data,
<lv_d_akh> TYPE data,
<lv_i_akh> TYPE data.
TRY.
ch_object-i_devclass = ch_object-d_devclass.
ASSIGN COMPONENT 'D_AKH' OF STRUCTURE ch_object
TO <lv_d_akh>. " doesn't exist in 702
ASSIGN COMPONENT 'I_AKH' OF STRUCTURE ch_object
TO <lv_i_akh>. " doesn't exist in 702
IF <lv_d_akh> IS ASSIGNED
AND <lv_i_akh> IS ASSIGNED.
<lv_i_akh> = <lv_d_akh>.
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 <lg_ecatt_vo>.
ASSERT sy-subrc = 0.
lo_ecatt_vo = <lg_ecatt_vo>.
ASSIGN lo_ecatt_vo->('PARAMS') TO <lg_params>.
ASSERT sy-subrc = 0.
lo_params = <lg_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.