diff --git a/zabapgit.abap b/zabapgit.abap index e3b23c5d9..9e4a6b181 100644 --- a/zabapgit.abap +++ b/zabapgit.abap @@ -3,7 +3,7 @@ REPORT zabapgit. * See https://github.com/larshp/abapGit/ CONSTANTS: gc_xml_version TYPE string VALUE 'v0.2-alpha', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v0.37'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v0.38'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) @@ -376,7 +376,7 @@ CLASS lcl_xml DEFINITION FINAL. RAISING lcx_exception. METHODS table_add - IMPORTING it_table TYPE STANDARD TABLE + IMPORTING it_table TYPE ANY TABLE iv_name TYPE string OPTIONAL ii_root TYPE REF TO if_ixml_element OPTIONAL RAISING lcx_exception. @@ -3073,6 +3073,246 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDCLASS. "lcl_object_CLAS IMPLEMENTATION +CLASS lcl_object_sicf DEFINITION INHERITING FROM lcl_objects_common FINAL. + + PUBLIC SECTION. + CLASS-METHODS serialize + IMPORTING is_item TYPE st_item + RETURNING VALUE(rt_files) TYPE tt_files + RAISING lcx_exception. + + CLASS-METHODS deserialize + IMPORTING is_item TYPE st_item + it_files TYPE tt_files + iv_package TYPE devclass + RAISING lcx_exception ##needed. + + CLASS-METHODS delete + IMPORTING is_item TYPE st_item + RAISING lcx_exception. + + CLASS-METHODS jump + IMPORTING is_item TYPE st_item + RAISING lcx_exception. + + PRIVATE SECTION. + TYPES: BEGIN OF ty_sicf_key, + icf_name TYPE icfservice-icf_name, + icfparguid TYPE icfservice-icfparguid, + END OF ty_sicf_key. + + CLASS-METHODS read + IMPORTING is_item TYPE st_item + EXPORTING es_icfservice TYPE icfservice + es_icfdocu TYPE icfdocu + et_icfhandler TYPE icfhandtbl + RAISING lcx_exception. + +ENDCLASS. + +CLASS lcl_object_sicf IMPLEMENTATION. + + METHOD serialize. + + DATA: ls_icfservice TYPE icfservice, + ls_icfdocu TYPE icfdocu, + lo_xml TYPE REF TO lcl_xml, + ls_file LIKE LINE OF rt_files, + lt_icfhandler TYPE icfhandtbl. + + + read( EXPORTING is_item = is_item + IMPORTING es_icfservice = ls_icfservice + es_icfdocu = ls_icfdocu + et_icfhandler = lt_icfhandler ). + + CLEAR ls_icfservice-icfnodguid. + + CREATE OBJECT lo_xml. + lo_xml->structure_add( ls_icfservice ). + lo_xml->structure_add( ls_icfdocu ). + lo_xml->table_add( lt_icfhandler ). + + ls_file = xml_to_file( is_item = is_item + io_xml = lo_xml ). + APPEND ls_file TO rt_files. + + _raise 'todo, SICF'. + + ENDMETHOD. + + METHOD read. + + DATA: lt_serv_info TYPE icfservtbl, + ls_serv_info LIKE LINE OF lt_serv_info, + ls_key TYPE ty_sicf_key. + + + ls_key = is_item-obj_name. + + cl_icf_tree=>if_icf_tree~get_info_from_serv( + EXPORTING + icf_name = ls_key-icf_name + icfparguid = ls_key-icfparguid + icf_langu = gc_english + IMPORTING + serv_info = lt_serv_info + icfdocu = es_icfdocu + EXCEPTIONS + wrong_name = 1 + wrong_parguid = 2 + incorrect_service = 3 + no_authority = 4 + OTHERS = 5 ). + IF sy-subrc <> 0. + _raise 'error from get_info_from_serv'. + ENDIF. + + ASSERT lines( lt_serv_info ) = 1. + READ TABLE lt_serv_info INDEX 1 INTO ls_serv_info. + ASSERT sy-subrc = 0. + + MOVE-CORRESPONDING ls_serv_info-service TO es_icfservice. + CLEAR es_icfservice-icf_cuser. + CLEAR es_icfservice-icf_cdate. + CLEAR es_icfservice-icf_muser. + CLEAR es_icfservice-icf_mdate. + + APPEND LINES OF ls_serv_info-handlertbl TO et_icfhandler. + + ENDMETHOD. + + METHOD deserialize. + + DATA: ls_icfservice TYPE icfservice, + ls_icfdocu TYPE icfdocu, + lt_icfhandler TYPE icfhandtbl. + + + cl_icf_tree=>if_icf_tree~insert_node( + EXPORTING + icf_name = ls_icfservice-icf_name + icfparguid = ls_icfservice-icfparguid + icfdocu = ls_icfdocu + doculang = gc_english +* icfhandlst = lt_icfhandler todo + package = iv_package + application = space + EXCEPTIONS + empty_icf_name = 1 + no_new_virtual_host = 2 + special_service_error = 3 + parent_not_existing = 4 + enqueue_error = 5 + node_already_existing = 6 + empty_docu = 7 + doculang_not_installed = 8 + security_info_error = 9 + user_password_error = 10 + password_encryption_error = 11 + invalid_url = 12 + invalid_otr_concept = 13 + formflg401_error = 14 + handler_error = 15 + transport_error = 16 + tadir_error = 17 + package_not_found = 18 + wrong_application = 19 + not_allow_application = 20 + no_application = 21 + invalid_icfparguid = 22 + alt_name_invalid = 23 + alternate_name_exist = 24 + wrong_icf_name = 25 + no_authority = 26 + OTHERS = 27 ). + IF sy-subrc <> 0. + _raise 'error from insert_node'. + ENDIF. + + cl_icf_tree=>if_icf_tree~change_node( + EXPORTING + icf_name = ls_icfservice-icf_name + icfparguid = ls_icfservice-icfparguid + icfdocu = ls_icfdocu + doculang = gc_english +* icfhandlst = lt_icfhandler todo + package = iv_package + application = space + EXCEPTIONS + empty_icf_name = 1 + no_new_virtual_host = 2 + special_service_error = 3 + parent_not_existing = 4 + enqueue_error = 5 + node_already_existing = 6 + empty_docu = 7 + doculang_not_installed = 8 + security_info_error = 9 + user_password_error = 10 + password_encryption_error = 11 + invalid_url = 12 + invalid_otr_concept = 13 + formflg401_error = 14 + handler_error = 15 + transport_error = 16 + tadir_error = 17 + package_not_found = 18 + wrong_application = 19 + not_allow_application = 20 + no_application = 21 + invalid_icfparguid = 22 + alt_name_invalid = 23 + alternate_name_exist = 24 + wrong_icf_name = 25 + no_authority = 26 + OTHERS = 27 ). + IF sy-subrc <> 0. + _raise 'error from change_node'. + ENDIF. + + _raise 'todo, SICF'. + + ENDMETHOD. + + METHOD delete. + + DATA: ls_icfservice TYPE icfservice. + + + read( EXPORTING is_item = is_item + IMPORTING es_icfservice = ls_icfservice ). + + cl_icf_tree=>if_icf_tree~delete_node( + EXPORTING + icfparguid = ls_icfservice-icfnodguid + EXCEPTIONS + no_virtual_host_delete = 1 + special_service_error = 2 + enqueue_error = 3 + node_not_existing = 4 + node_has_childs = 5 + node_is_aliased = 6 + node_not_in_original_system = 7 + transport_error = 8 + tadir_error = 9 + db_error = 10 + no_authority = 11 + OTHERS = 12 ). + IF sy-subrc <> 0. + _raise 'error from delete_node'. + ENDIF. + + _raise 'todo, SICF'. + + ENDMETHOD. + + METHOD jump. + _raise 'todo, SICF'. + ENDMETHOD. + +ENDCLASS. + CLASS lcl_object_ssst DEFINITION INHERITING FROM lcl_objects_common FINAL. PUBLIC SECTION.