diff --git a/src/objects/zcl_abapgit_object_sqsc.clas.abap b/src/objects/zcl_abapgit_object_sqsc.clas.abap new file mode 100644 index 000000000..7838dcb21 --- /dev/null +++ b/src/objects/zcl_abapgit_object_sqsc.clas.abap @@ -0,0 +1,305 @@ +CLASS zcl_abapgit_object_sqsc DEFINITION + PUBLIC + INHERITING FROM zcl_abapgit_objects_super + CREATE PUBLIC . + + PUBLIC SECTION. + INTERFACES: + zif_abapgit_object. + + METHODS: + constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras + RAISING + zcx_abapgit_exception. + + PRIVATE SECTION. + " Downport original structures from + " - IF_DBPROC_PROXY_UI + " - IF_DBPROC_PROXY_BASIC_TYPES + + TYPES: + ty_db_name TYPE c LENGTH 256, + ty_abap_name TYPE c LENGTH 30, + ty_param_direction TYPE c LENGTH 10, + ty_param_kind TYPE c LENGTH 10, + ty_ddic_name TYPE ddobjname, + + BEGIN OF ty_db_simple_type_s, + name TYPE ty_db_name, + length TYPE i, + decs TYPE i, + END OF ty_db_simple_type_s, + + BEGIN OF ty_abap_simple_type_s, + name TYPE ty_abap_name, + length TYPE i, + decs TYPE i, + END OF ty_abap_simple_type_s, + + BEGIN OF ty_abap_simple_type_ui_s, + typ TYPE ty_abap_simple_type_s, + text TYPE string, + END OF ty_abap_simple_type_ui_s, + + BEGIN OF ty_header_ui_s, + db_repository_package TYPE ty_db_name, + db_repository_proc_name TYPE ty_db_name, + db_catalog_schema TYPE ty_db_name, + db_catalog_proc_name TYPE ty_db_name, + read_only TYPE abap_bool, + interface_pool TYPE ty_abap_name, + END OF ty_header_ui_s, + + BEGIN OF ty_param_ui_s, + position TYPE i, + db_name TYPE ty_db_name, + direction TYPE ty_param_direction, + kind TYPE ty_param_kind, + db_table_type_schema TYPE ty_db_name, + db_table_type_name TYPE ty_db_name, + db_table_type_is_ddic TYPE abap_bool, + transfer_table_schema TYPE ty_db_name, + transfer_table_name TYPE ty_db_name, + abap_name TYPE ty_abap_name, + abap_name_is_ro TYPE abap_bool, + ddic_table TYPE ty_ddic_name, + ddic_table_is_ro TYPE abap_bool, + END OF ty_param_ui_s, + ty_param_ui_t TYPE STANDARD TABLE OF ty_param_ui_s WITH KEY position, + + ty_abap_simple_type_ui_t TYPE STANDARD TABLE OF ty_abap_simple_type_ui_s WITH DEFAULT KEY, + + BEGIN OF ty_param_type_ui_s, + param_position TYPE i, + comp_index TYPE i, + db_comp_name TYPE ty_db_name, + abap_comp_name TYPE ty_abap_name, + abap_comp_name_is_ro TYPE abap_bool, + db_type TYPE ty_db_simple_type_s, + db_type_text TYPE string, + abap_type TYPE ty_abap_simple_type_ui_s, + abap_type_is_ro TYPE abap_bool, + abap_type_selection TYPE ty_abap_simple_type_ui_t, + ddic_type TYPE ty_ddic_name, + ddic_type_is_ro TYPE abap_bool, + END OF ty_param_type_ui_s , + ty_param_type_ui_t TYPE STANDARD TABLE OF ty_param_type_ui_s WITH KEY param_position comp_index, + + BEGIN OF ty_proxy, + description TYPE ddtext, + header TYPE ty_header_ui_s, + parameters TYPE ty_param_ui_t, + parameter_types TYPE ty_param_type_ui_t, + END OF ty_proxy. + + DATA: + mo_proxy TYPE REF TO object, + mv_transport TYPE e070use-ordernum. + + METHODS: + delete_interface_if_it_exists + IMPORTING + iv_interface TYPE ty_abap_name + RAISING + zcx_abapgit_exception. + +ENDCLASS. + + + +CLASS zcl_abapgit_object_sqsc IMPLEMENTATION. + + METHOD constructor. + + FIELD-SYMBOLS: TYPE ty_abap_name. + + super->constructor( is_item = is_item + iv_language = iv_language ). + + TRY. + CREATE OBJECT mo_proxy + TYPE ('CL_DDIC_WB_DBPROC_PROXY'). + + ASSIGN ('MO_PROXY->IF_DDIC_WB_DBPROC_PROXY~DBPROXYNAME') + TO . + ASSERT sy-subrc = 0. + + CATCH cx_root. + zcx_abapgit_exception=>raise( |SQSC not supported| ). + ENDTRY. + + = ms_item-obj_name. + + mv_transport = zcl_abapgit_default_transport=>get_instance( + )->get( + )-ordernum. + + ENDMETHOD. + + METHOD zif_abapgit_object~changed_by. + rv_user = c_user_unknown. + ENDMETHOD. + + METHOD zif_abapgit_object~compare_to_remote_version. + CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. + ENDMETHOD. + + METHOD zif_abapgit_object~delete. + + DATA: lx_error TYPE REF TO cx_root. + + TRY. + CALL METHOD mo_proxy->('IF_DBPROC_PROXY_UI~DELETE') + EXPORTING + if_transport_req = mv_transport. + + CATCH cx_root INTO lx_error. + zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( ) + ix_previous = lx_error ). + ENDTRY. + + ENDMETHOD. + + METHOD zif_abapgit_object~deserialize. + + DATA: ls_proxy TYPE ty_proxy, + lx_error TYPE REF TO cx_root. + + io_xml->read( + EXPORTING + iv_name = 'SQSC' + CHANGING + cg_data = ls_proxy ). + + IF zif_abapgit_object~exists( ) = abap_false. + + delete_interface_if_it_exists( ls_proxy-header-interface_pool ). + + CALL METHOD mo_proxy->('IF_DBPROC_PROXY_UI~CREATE') + EXPORTING + if_interface_pool = ls_proxy-header-interface_pool + if_transport_req = mv_transport + if_package = iv_package + if_langu = mv_language. + + ENDIF. + + TRY. + CALL METHOD mo_proxy->('IF_DBPROC_PROXY_UI~WRITE_TO_SOURCE') + EXPORTING + if_transport_req = mv_transport + is_header = ls_proxy-header + it_parameter = ls_proxy-parameters + it_parameter_type = ls_proxy-parameter_types. + + CALL METHOD mo_proxy->('IF_DBPROC_PROXY_UI~WRITE_DESCR') + EXPORTING + if_langu = mv_language + if_descr = ls_proxy-description. + + CALL METHOD mo_proxy->('IF_DBPROC_PROXY_UI~ACTIVATE'). + + tadir_insert( iv_package ). + + CATCH cx_root INTO lx_error. + zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( ) + ix_previous = lx_error ). + ENDTRY. + + ENDMETHOD. + + METHOD zif_abapgit_object~exists. + + CALL METHOD mo_proxy->('IF_DBPROC_PROXY_UI~EXISTS') + RECEIVING + ef_exists = rv_bool. + + ENDMETHOD. + + METHOD zif_abapgit_object~get_metadata. + rs_metadata = get_metadata( ). + + rs_metadata-delete_tadir = abap_true. + ENDMETHOD. + + METHOD zif_abapgit_object~has_changed_since. + rv_changed = abap_true. + ENDMETHOD. + + METHOD zif_abapgit_object~is_active. + rv_active = is_active( ). + ENDMETHOD. + + METHOD zif_abapgit_object~is_locked. + rv_is_locked = abap_false. + ENDMETHOD. + + METHOD zif_abapgit_object~jump. + + zcl_abapgit_objects_super=>jump_adt( + iv_obj_name = ms_item-obj_name + iv_obj_type = ms_item-obj_type ). + + ENDMETHOD. + + METHOD zif_abapgit_object~serialize. + + DATA: ls_proxy TYPE ty_proxy, + lx_error TYPE REF TO cx_root. + + TRY. + CALL METHOD mo_proxy->('IF_DBPROC_PROXY_UI~READ_FROM_SOURCE') + EXPORTING + if_version = 'A' + IMPORTING + es_header = ls_proxy-header + et_parameter = ls_proxy-parameters + et_parameter_type = ls_proxy-parameter_types. + + CALL METHOD mo_proxy->('IF_DBPROC_PROXY_UI~READ_DESCR') + EXPORTING + if_langu = mv_language + if_version = 'A' + IMPORTING + ef_descr = ls_proxy-description. + + CATCH cx_root INTO lx_error. + zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( ) + ix_previous = lx_error ). + ENDTRY. + + io_xml->add( iv_name = 'SQSC' + ig_data = ls_proxy ). + + ENDMETHOD. + + + METHOD delete_interface_if_it_exists. + + DATA: ls_item TYPE zif_abapgit_definitions=>ty_item, + lo_interface TYPE REF TO zcl_abapgit_object_intf. + + " The interface is managed by the proxy. If abapGit + " has created it before we have to delete it. Otherwise + " if_dbproc_proxy_ui~create will throw errors. + + ls_item-obj_name = iv_interface. + ls_item-obj_type = 'INTF'. + + IF zcl_abapgit_objects=>exists( ls_item ) = abap_true. + + CREATE OBJECT lo_interface + EXPORTING + is_item = ls_item + iv_language = mv_language. + + lo_interface->zif_abapgit_object~delete( ). + + ENDIF. + + ENDMETHOD. + +ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_sqsc.clas.xml b/src/objects/zcl_abapgit_object_sqsc.clas.xml new file mode 100644 index 000000000..9edd89f14 --- /dev/null +++ b/src/objects/zcl_abapgit_object_sqsc.clas.xml @@ -0,0 +1,17 @@ + + + + + + ZCL_ABAPGIT_OBJECT_SQSC + 1 + E + SOSC + 1 + X + X + X + + + + diff --git a/src/zcl_abapgit_default_transport.clas.abap b/src/zcl_abapgit_default_transport.clas.abap index 4ac0c4b71..a92c39b4c 100644 --- a/src/zcl_abapgit_default_transport.clas.abap +++ b/src/zcl_abapgit_default_transport.clas.abap @@ -23,7 +23,12 @@ CLASS zcl_abapgit_default_transport DEFINITION reset RAISING - zcx_abapgit_exception. + zcx_abapgit_exception, + get + RETURNING + VALUE(rs_default_task) TYPE e070use + RAISING + zcx_abapgit_exception . PRIVATE SECTION. @@ -38,11 +43,6 @@ CLASS zcl_abapgit_default_transport DEFINITION METHODS restore RAISING zcx_abapgit_exception . - METHODS get - RETURNING - VALUE(rs_default_task) TYPE e070use - RAISING - zcx_abapgit_exception . METHODS set_internal IMPORTING !iv_transport TYPE trkorr @@ -57,7 +57,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION. +CLASS zcl_abapgit_default_transport IMPLEMENTATION. METHOD clear. @@ -203,7 +203,6 @@ CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION. CALL FUNCTION 'TR_TASK_SET' EXPORTING iv_order = iv_transport -* iv_task = iv_task EXCEPTIONS invalid_username = 1 invalid_category = 2