mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
361 lines
8.9 KiB
ABAP
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.
|