From 377f4b987d8f46f14739762136a8f4a3da43395c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Mon, 9 Oct 2017 21:53:09 +0000 Subject: [PATCH 1/4] Implement SRFC --- src/zabapgit_object_serializing.prog.abap | 1 + src/zabapgit_object_srfc.prog.abap | 166 ++++++++++++++++++++++ src/zabapgit_object_srfc.prog.xml | 25 ++++ 3 files changed, 192 insertions(+) create mode 100644 src/zabapgit_object_srfc.prog.abap create mode 100644 src/zabapgit_object_srfc.prog.xml diff --git a/src/zabapgit_object_serializing.prog.abap b/src/zabapgit_object_serializing.prog.abap index 186572f60..9ac695489 100644 --- a/src/zabapgit_object_serializing.prog.abap +++ b/src/zabapgit_object_serializing.prog.abap @@ -48,6 +48,7 @@ INCLUDE zabapgit_object_shma. INCLUDE zabapgit_object_sicf. INCLUDE zabapgit_object_smim. INCLUDE zabapgit_object_splo. +INCLUDE zabapgit_object_srfc. INCLUDE zabapgit_object_ssfo. INCLUDE zabapgit_object_ssst. INCLUDE zabapgit_object_styl. diff --git a/src/zabapgit_object_srfc.prog.abap b/src/zabapgit_object_srfc.prog.abap new file mode 100644 index 000000000..89639cc9b --- /dev/null +++ b/src/zabapgit_object_srfc.prog.abap @@ -0,0 +1,166 @@ +*&---------------------------------------------------------------------* +*& Include zabapgit_object_srfc +*&---------------------------------------------------------------------* + + +CLASS lcl_object_srfc DEFINITION INHERITING FROM lcl_objects_super FINAL. + + PUBLIC SECTION. + INTERFACES lif_object. + +ENDCLASS. + +CLASS lcl_object_srfc IMPLEMENTATION. + + METHOD lif_object~has_changed_since. + + rv_changed = abap_true. + + ENDMETHOD. + + METHOD lif_object~changed_by. + + rv_user = c_user_unknown. + + ENDMETHOD. + + METHOD lif_object~get_metadata. + + rs_metadata = get_metadata( ). + rs_metadata-delete_tadir = abap_true. + + ENDMETHOD. + + METHOD lif_object~exists. + + DATA: lo_object_data TYPE REF TO if_wb_object_data_model, + lo_srfc_persist TYPE REF TO if_wb_object_persist. + + CREATE OBJECT lo_srfc_persist TYPE cl_uconrfc_object_persist. + + TRY. + lo_srfc_persist->get( + EXPORTING + p_object_key = |{ ms_item-obj_name }| + p_version = 'A' + CHANGING + p_object_data = lo_object_data ). + + CATCH cx_swb_object_does_not_exist cx_swb_exception. + rv_bool = abap_false. + RETURN. + ENDTRY. + + rv_bool = abap_true. + + ENDMETHOD. + + METHOD lif_object~serialize. + + DATA: lo_object_data TYPE REF TO if_wb_object_data_model, + lo_srfc_persist TYPE REF TO if_wb_object_persist, + ls_srfc_data TYPE uconrfcserv_complete, + lx_error TYPE REF TO cx_swb_exception, + lv_text TYPE string. + + CREATE OBJECT lo_srfc_persist TYPE cl_uconrfc_object_persist. + + TRY. + lo_srfc_persist->get( + EXPORTING + p_object_key = |{ ms_item-obj_name }| + p_version = 'A' + CHANGING + p_object_data = lo_object_data ). + + lo_object_data->get_data( + IMPORTING + p_data = ls_srfc_data ). + + CATCH cx_swb_object_does_not_exist cx_swb_exception INTO lx_error. + lv_text = lx_error->get_text( ). + zcx_abapgit_exception=>raise( lv_text ). + ENDTRY. + + io_xml->add( iv_name = 'SRFC' + ig_data = ls_srfc_data ). + + ENDMETHOD. + + METHOD lif_object~deserialize. + + DATA: lo_srfc_persist TYPE REF TO if_wb_object_persist, + lo_object_data TYPE REF TO if_wb_object_data_model, + lv_text TYPE string, + ls_srfc_data TYPE uconrfcserv_complete, + lx_error TYPE REF TO cx_swb_exception. + + io_xml->read( + EXPORTING + iv_name = 'SRFC' + CHANGING + cg_data = ls_srfc_data ). + + TRY. + CREATE OBJECT lo_srfc_persist TYPE cl_uconrfc_object_persist. + CREATE OBJECT lo_object_data TYPE cl_uconrfc_object_data. + + lo_object_data->set_data( p_data = ls_srfc_data ). + + lo_srfc_persist->save( lo_object_data ). + + tadir_insert( iv_package ). + + CATCH cx_swb_object_does_not_exist cx_swb_exception INTO lx_error. + lv_text = lx_error->get_text( ). + zcx_abapgit_exception=>raise( lv_text ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~delete. + + DATA: lo_srfc_persist TYPE REF TO if_wb_object_persist, + lx_error TYPE REF TO cx_swb_exception, + lv_text TYPE string. + + CREATE OBJECT lo_srfc_persist TYPE cl_uconrfc_object_persist. + + TRY. + lo_srfc_persist->delete( p_object_key = |{ ms_item-obj_name }| + p_version = 'A' ). + + CATCH cx_swb_object_does_not_exist cx_swb_exception INTO lx_error. + lv_text = lx_error->get_text( ). + zcx_abapgit_exception=>raise( lv_text ). + ENDTRY. + + ENDMETHOD. + + + METHOD lif_object~jump. + + CALL FUNCTION 'RS_TOOL_ACCESS' + EXPORTING + operation = 'SHOW' + object_name = ms_item-obj_name " Object Name + object_type = ms_item-obj_type " Object Type + in_new_window = abap_true + EXCEPTIONS + not_executed = 1 + invalid_object_type = 2 + OTHERS = 3. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'error from RS_TOOL_ACCESS' ). + ENDIF. + + ENDMETHOD. + + METHOD lif_object~compare_to_remote_version. + + CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null. + + ENDMETHOD. + +ENDCLASS. diff --git a/src/zabapgit_object_srfc.prog.xml b/src/zabapgit_object_srfc.prog.xml new file mode 100644 index 000000000..d6857bb18 --- /dev/null +++ b/src/zabapgit_object_srfc.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZABAPGIT_OBJECT_SRFC + A + X + S + D$ + I + X + D$S + X + + + + R + ZABAPGIT_OBJECT_SRFC + 20 + + + + + From abd39f9ace643dd89cbfd2b00dd6c99aeeeff0a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Mon, 9 Oct 2017 22:03:09 +0000 Subject: [PATCH 2/4] downport --- src/zabapgit_object_srfc.prog.abap | 51 +++++++++++++++++++----------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/src/zabapgit_object_srfc.prog.abap b/src/zabapgit_object_srfc.prog.abap index 89639cc9b..42a2657d6 100644 --- a/src/zabapgit_object_srfc.prog.abap +++ b/src/zabapgit_object_srfc.prog.abap @@ -59,13 +59,20 @@ CLASS lcl_object_srfc IMPLEMENTATION. DATA: lo_object_data TYPE REF TO if_wb_object_data_model, lo_srfc_persist TYPE REF TO if_wb_object_persist, - ls_srfc_data TYPE uconrfcserv_complete, - lx_error TYPE REF TO cx_swb_exception, + lr_srfc_data TYPE REF TO data, + lx_error TYPE REF TO cx_root, lv_text TYPE string. - CREATE OBJECT lo_srfc_persist TYPE cl_uconrfc_object_persist. + FIELD-SYMBOLS: TYPE uconrfcserv_complete. + TRY. + CREATE DATA lr_srfc_data TYPE ('UCONRFCSERV_COMPLETE'). + ASSIGN lr_srfc_data->* TO . + ASSERT sy-subrc = 0. + + CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). + lo_srfc_persist->get( EXPORTING p_object_key = |{ ms_item-obj_name }| @@ -75,15 +82,15 @@ CLASS lcl_object_srfc IMPLEMENTATION. lo_object_data->get_data( IMPORTING - p_data = ls_srfc_data ). + p_data = ). - CATCH cx_swb_object_does_not_exist cx_swb_exception INTO lx_error. + CATCH cx_root INTO lx_error. lv_text = lx_error->get_text( ). zcx_abapgit_exception=>raise( lv_text ). ENDTRY. io_xml->add( iv_name = 'SRFC' - ig_data = ls_srfc_data ). + ig_data = ). ENDMETHOD. @@ -92,26 +99,34 @@ CLASS lcl_object_srfc IMPLEMENTATION. DATA: lo_srfc_persist TYPE REF TO if_wb_object_persist, lo_object_data TYPE REF TO if_wb_object_data_model, lv_text TYPE string, - ls_srfc_data TYPE uconrfcserv_complete, - lx_error TYPE REF TO cx_swb_exception. + lr_srfc_data TYPE REF TO data, + lx_error TYPE REF TO cx_root. + + FIELD-SYMBOLS: TYPE uconrfcserv_complete. - io_xml->read( - EXPORTING - iv_name = 'SRFC' - CHANGING - cg_data = ls_srfc_data ). TRY. - CREATE OBJECT lo_srfc_persist TYPE cl_uconrfc_object_persist. - CREATE OBJECT lo_object_data TYPE cl_uconrfc_object_data. - lo_object_data->set_data( p_data = ls_srfc_data ). + CREATE DATA lr_srfc_data TYPE ('UCONRFCSERV_COMPLETE'). + ASSIGN lr_srfc_data->* TO . + ASSERT sy-subrc = 0. + + io_xml->read( + EXPORTING + iv_name = 'SRFC' + CHANGING + cg_data = ). + + CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). + CREATE OBJECT lo_object_data TYPE ('CL_UCONRFC_OBJECT_DATA'). + + lo_object_data->set_data( p_data = ). lo_srfc_persist->save( lo_object_data ). tadir_insert( iv_package ). - CATCH cx_swb_object_does_not_exist cx_swb_exception INTO lx_error. + CATCH cx_root INTO lx_error. lv_text = lx_error->get_text( ). zcx_abapgit_exception=>raise( lv_text ). ENDTRY. @@ -124,7 +139,7 @@ CLASS lcl_object_srfc IMPLEMENTATION. lx_error TYPE REF TO cx_swb_exception, lv_text TYPE string. - CREATE OBJECT lo_srfc_persist TYPE cl_uconrfc_object_persist. + CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). TRY. lo_srfc_persist->delete( p_object_key = |{ ms_item-obj_name }| From 8efe6ee5d07bda69df4b9d934680c993eff910a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Mon, 9 Oct 2017 22:06:27 +0000 Subject: [PATCH 3/4] downport --- src/zabapgit_object_srfc.prog.abap | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/zabapgit_object_srfc.prog.abap b/src/zabapgit_object_srfc.prog.abap index 42a2657d6..50606fdee 100644 --- a/src/zabapgit_object_srfc.prog.abap +++ b/src/zabapgit_object_srfc.prog.abap @@ -36,7 +36,7 @@ CLASS lcl_object_srfc IMPLEMENTATION. DATA: lo_object_data TYPE REF TO if_wb_object_data_model, lo_srfc_persist TYPE REF TO if_wb_object_persist. - CREATE OBJECT lo_srfc_persist TYPE cl_uconrfc_object_persist. + CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). TRY. lo_srfc_persist->get( @@ -63,7 +63,7 @@ CLASS lcl_object_srfc IMPLEMENTATION. lx_error TYPE REF TO cx_root, lv_text TYPE string. - FIELD-SYMBOLS: TYPE uconrfcserv_complete. + FIELD-SYMBOLS: TYPE any. TRY. @@ -102,7 +102,7 @@ CLASS lcl_object_srfc IMPLEMENTATION. lr_srfc_data TYPE REF TO data, lx_error TYPE REF TO cx_root. - FIELD-SYMBOLS: TYPE uconrfcserv_complete. + FIELD-SYMBOLS: TYPE any. TRY. From fef62a95efbbf76df5a37c382a20aaf8e4d5c061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Mon, 9 Oct 2017 22:14:38 +0000 Subject: [PATCH 4/4] Unify exception handling --- src/zabapgit_object_srfc.prog.abap | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/zabapgit_object_srfc.prog.abap b/src/zabapgit_object_srfc.prog.abap index 50606fdee..1fa5a3401 100644 --- a/src/zabapgit_object_srfc.prog.abap +++ b/src/zabapgit_object_srfc.prog.abap @@ -36,9 +36,9 @@ CLASS lcl_object_srfc IMPLEMENTATION. DATA: lo_object_data TYPE REF TO if_wb_object_data_model, lo_srfc_persist TYPE REF TO if_wb_object_persist. - CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). - TRY. + CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). + lo_srfc_persist->get( EXPORTING p_object_key = |{ ms_item-obj_name }| @@ -46,7 +46,7 @@ CLASS lcl_object_srfc IMPLEMENTATION. CHANGING p_object_data = lo_object_data ). - CATCH cx_swb_object_does_not_exist cx_swb_exception. + CATCH cx_root. rv_bool = abap_false. RETURN. ENDTRY. @@ -65,7 +65,6 @@ CLASS lcl_object_srfc IMPLEMENTATION. FIELD-SYMBOLS: TYPE any. - TRY. CREATE DATA lr_srfc_data TYPE ('UCONRFCSERV_COMPLETE'). ASSIGN lr_srfc_data->* TO . @@ -104,9 +103,7 @@ CLASS lcl_object_srfc IMPLEMENTATION. FIELD-SYMBOLS: TYPE any. - TRY. - CREATE DATA lr_srfc_data TYPE ('UCONRFCSERV_COMPLETE'). ASSIGN lr_srfc_data->* TO . ASSERT sy-subrc = 0. @@ -136,16 +133,16 @@ CLASS lcl_object_srfc IMPLEMENTATION. METHOD lif_object~delete. DATA: lo_srfc_persist TYPE REF TO if_wb_object_persist, - lx_error TYPE REF TO cx_swb_exception, + lx_error TYPE REF TO cx_root, lv_text TYPE string. - CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). - TRY. + CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). + lo_srfc_persist->delete( p_object_key = |{ ms_item-obj_name }| p_version = 'A' ). - CATCH cx_swb_object_does_not_exist cx_swb_exception INTO lx_error. + CATCH cx_root INTO lx_error. lv_text = lx_error->get_text( ). zcx_abapgit_exception=>raise( lv_text ). ENDTRY.