REPORT zabapgit_standalone LINE-SIZE 100. * See http://www.abapgit.org ******************************************************************************** * The MIT License (MIT) * * Copyright (c) 2014 abapGit Contributors * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. ******************************************************************************** INTERFACE zif_abapgit_version DEFERRED. INTERFACE zif_abapgit_definitions DEFERRED. INTERFACE zif_abapgit_xml_output DEFERRED. INTERFACE zif_abapgit_xml_input DEFERRED. INTERFACE zif_abapgit_log DEFERRED. INTERFACE zif_abapgit_popups DEFERRED. INTERFACE zif_abapgit_frontend_services DEFERRED. INTERFACE zif_abapgit_services_repo DEFERRED. INTERFACE zif_abapgit_services_git DEFERRED. INTERFACE zif_abapgit_progress DEFERRED. INTERFACE zif_abapgit_html_table DEFERRED. INTERFACE zif_abapgit_html_popup DEFERRED. INTERFACE zif_abapgit_html_form DEFERRED. INTERFACE zif_abapgit_gui_render_item DEFERRED. INTERFACE zif_abapgit_gui_page_title DEFERRED. INTERFACE zif_abapgit_gui_menu_provider DEFERRED. INTERFACE zif_abapgit_gui_page_flow DEFERRED. INTERFACE zif_abapgit_flow_exit DEFERRED. INTERFACE zif_abapgit_html_viewer DEFERRED. INTERFACE zif_abapgit_html DEFERRED. INTERFACE zif_abapgit_gui_services DEFERRED. INTERFACE zif_abapgit_gui_renderable DEFERRED. INTERFACE zif_abapgit_gui_modal DEFERRED. INTERFACE zif_abapgit_gui_html_processor DEFERRED. INTERFACE zif_abapgit_gui_hotkeys DEFERRED. INTERFACE zif_abapgit_gui_hotkey_ctl DEFERRED. INTERFACE zif_abapgit_gui_event_handler DEFERRED. INTERFACE zif_abapgit_gui_event DEFERRED. INTERFACE zif_abapgit_gui_error_handler DEFERRED. INTERFACE zif_abapgit_gui_asset_manager DEFERRED. INTERFACE zif_abapgit_repo_srv DEFERRED. INTERFACE zif_abapgit_repo_online DEFERRED. INTERFACE zif_abapgit_repo_listener DEFERRED. INTERFACE zif_abapgit_repo_checksums DEFERRED. INTERFACE zif_abapgit_repo DEFERRED. INTERFACE zif_abapgit_dot_abapgit DEFERRED. INTERFACE zif_abapgit_stage_logic DEFERRED. INTERFACE zif_abapgit_merge DEFERRED. INTERFACE zif_abapgit_object_filter DEFERRED. INTERFACE zif_abapgit_persistence DEFERRED. INTERFACE zif_abapgit_persist_user DEFERRED. INTERFACE zif_abapgit_persist_settings DEFERRED. INTERFACE zif_abapgit_persist_repo_cs DEFERRED. INTERFACE zif_abapgit_persist_repo DEFERRED. INTERFACE zif_abapgit_objects DEFERRED. INTERFACE zif_abapgit_object DEFERRED. INTERFACE zif_abapgit_comparator DEFERRED. INTERFACE zif_abapgit_lxe_texts DEFERRED. INTERFACE zif_abapgit_longtexts DEFERRED. INTERFACE zif_abapgit_lang_definitions DEFERRED. INTERFACE zif_abapgit_i18n_file DEFERRED. INTERFACE zif_abapgit_object_tabl DEFERRED. INTERFACE zif_abapgit_sap_report DEFERRED. INTERFACE zif_abapgit_sap_package DEFERRED. INTERFACE zif_abapgit_sap_namespace DEFERRED. INTERFACE zif_abapgit_function_module DEFERRED. INTERFACE zif_abapgit_field_rules DEFERRED. INTERFACE zif_abapgit_oo_object_fnc DEFERRED. INTERFACE zif_abapgit_gui_jumper DEFERRED. INTERFACE zif_abapgit_object_enhs DEFERRED. INTERFACE zif_abapgit_object_enho DEFERRED. INTERFACE zif_abapgit_ecatt_upload DEFERRED. INTERFACE zif_abapgit_ecatt_download DEFERRED. INTERFACE zif_abapgit_ecatt DEFERRED. INTERFACE zif_abapgit_tadir DEFERRED. INTERFACE zif_abapgit_aff_types_v1 DEFERRED. INTERFACE zif_abapgit_aff_oo_types_v1 DEFERRED. INTERFACE zif_abapgit_aff_intf_v1 DEFERRED. INTERFACE zif_abapgit_aff_type_mapping DEFERRED. INTERFACE zif_abapgit_aff_registry DEFERRED. INTERFACE zif_abapgit_ajson_types DEFERRED. INTERFACE zif_abapgit_ajson_mapping DEFERRED. INTERFACE zif_abapgit_ajson_filter DEFERRED. INTERFACE zif_abapgit_ajson DEFERRED. INTERFACE zif_abapgit_code_inspector DEFERRED. INTERFACE zif_abapgit_http_response DEFERRED. INTERFACE zif_abapgit_http_agent DEFERRED. INTERFACE zif_abapgit_pr_enum_provider DEFERRED. INTERFACE zif_abapgit_git_transport DEFERRED. INTERFACE zif_abapgit_git_definitions DEFERRED. INTERFACE zif_abapgit_gitv2_porcelain DEFERRED. INTERFACE zif_abapgit_exit DEFERRED. INTERFACE zif_abapgit_auth DEFERRED. INTERFACE zif_abapgit_environment DEFERRED. INTERFACE zif_abapgit_data_supporter DEFERRED. INTERFACE zif_abapgit_data_serializer DEFERRED. INTERFACE zif_abapgit_data_deserializer DEFERRED. INTERFACE zif_abapgit_data_config DEFERRED. INTERFACE zif_abapgit_default_transport DEFERRED. INTERFACE zif_abapgit_cts_api DEFERRED. INTERFACE zif_abapgit_background DEFERRED. INTERFACE zif_abapgit_apack_definitions DEFERRED. CLASS zcl_abapgit_factory DEFINITION DEFERRED. CLASS zcl_abapgit_xml_pretty DEFINITION DEFERRED. CLASS zcl_abapgit_xml_output DEFINITION DEFERRED. CLASS zcl_abapgit_xml_input DEFINITION DEFERRED. CLASS zcl_abapgit_xml DEFINITION DEFERRED. CLASS zcl_abapgit_utils DEFINITION DEFERRED. CLASS zcl_abapgit_timer DEFINITION DEFERRED. CLASS zcl_abapgit_string_map DEFINITION DEFERRED. CLASS zcl_abapgit_string_buffer DEFINITION DEFERRED. CLASS zcl_abapgit_path DEFINITION DEFERRED. CLASS zcl_abapgit_log DEFINITION DEFERRED. CLASS zcl_abapgit_diff DEFINITION DEFERRED. CLASS zcl_abapgit_convert DEFINITION DEFERRED. CLASS zcl_abapgit_ui_factory DEFINITION DEFERRED. CLASS zcl_abapgit_popups DEFINITION DEFERRED. CLASS zcl_abapgit_password_dialog DEFINITION DEFERRED. CLASS zcl_abapgit_frontend_services DEFINITION DEFERRED. CLASS zcl_abapgit_frontend_no_gui DEFINITION DEFERRED. CLASS zcl_abapgit_services_repo DEFINITION DEFERRED. CLASS zcl_abapgit_services_git DEFINITION DEFERRED. CLASS zcl_abapgit_services_abapgit DEFINITION DEFERRED. CLASS zcl_abapgit_gui_router DEFINITION DEFERRED. CLASS zcl_abapgit_progress DEFINITION DEFERRED. CLASS zcl_abapgit_popup_tag_list DEFINITION DEFERRED. CLASS zcl_abapgit_popup_pull_request DEFINITION DEFERRED. CLASS zcl_abapgit_popup_code_insp DEFINITION DEFERRED. CLASS zcl_abapgit_popup_branch_list DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_tutorial DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_tags DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_stage DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_run_bckg DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_repo_view DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_repo_over DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_pull DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_patch DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_merge_sel DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_merge_res DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_merge DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_ex_pckage DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_ex_object DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_diff_base DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_diff DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_debuginfo DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_data DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_commit DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_sett_repo DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_sett_remo DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_sett_pers DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_sett_locl DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_sett_info DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_sett_glob DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_sett_bckg DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_addonline DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_addofflin DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_db_entry DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_db DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_whereused DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_syntax DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_runit DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_codi_base DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_code_insp DEFINITION DEFERRED. CLASS zcl_abapgit_log_viewer DEFINITION DEFERRED. CLASS zcl_abapgit_html_toolbar DEFINITION DEFERRED. CLASS zcl_abapgit_html_table DEFINITION DEFERRED. CLASS zcl_abapgit_html_form_utils DEFINITION DEFERRED. CLASS zcl_abapgit_html_form DEFINITION DEFERRED. CLASS zcl_abapgit_html_action_utils DEFINITION DEFERRED. CLASS zcl_abapgit_gui_picklist DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_hoc DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page DEFINITION DEFERRED. CLASS zcl_abapgit_gui_menus DEFINITION DEFERRED. CLASS zcl_abapgit_gui_in_page_modal DEFINITION DEFERRED. CLASS zcl_abapgit_gui_component DEFINITION DEFERRED. CLASS zcl_abapgit_gui_chunk_lib DEFINITION DEFERRED. CLASS zcl_abapgit_gui_buttons DEFINITION DEFERRED. CLASS zcl_abapgit_exception_viewer DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_flow DEFINITION DEFERRED. CLASS zcl_abapgit_flow_exit DEFINITION DEFERRED. CLASS zcl_abapgit_html_viewer_gui DEFINITION DEFERRED. CLASS zcl_abapgit_html_parts DEFINITION DEFERRED. CLASS zcl_abapgit_html DEFINITION DEFERRED. CLASS zcl_abapgit_gui_utils DEFINITION DEFERRED. CLASS zcl_abapgit_gui_html_processor DEFINITION DEFERRED. CLASS zcl_abapgit_gui_hotkey_ctl DEFINITION DEFERRED. CLASS zcl_abapgit_gui_event DEFINITION DEFERRED. CLASS zcl_abapgit_gui_css_processor DEFINITION DEFERRED. CLASS zcl_abapgit_gui_asset_manager DEFINITION DEFERRED. CLASS zcl_abapgit_gui DEFINITION DEFERRED. CLASS zcl_abapgit_gui_page_template DEFINITION DEFERRED. CLASS zcl_abapgit_syntax_xml DEFINITION DEFERRED. CLASS zcl_abapgit_syntax_txt DEFINITION DEFERRED. CLASS zcl_abapgit_syntax_json DEFINITION DEFERRED. CLASS zcl_abapgit_syntax_js DEFINITION DEFERRED. CLASS zcl_abapgit_syntax_highlighter DEFINITION DEFERRED. CLASS zcl_abapgit_syntax_factory DEFINITION DEFERRED. CLASS zcl_abapgit_syntax_css DEFINITION DEFERRED. CLASS zcl_abapgit_syntax_abap DEFINITION DEFERRED. CLASS zcl_abapgit_repo_status DEFINITION DEFERRED. CLASS zcl_abapgit_repo_srv DEFINITION DEFERRED. CLASS zcl_abapgit_repo_online DEFINITION DEFERRED. CLASS zcl_abapgit_repo_offline DEFINITION DEFERRED. CLASS zcl_abapgit_repo_cs_migration DEFINITION DEFERRED. CLASS zcl_abapgit_repo_content_list DEFINITION DEFERRED. CLASS zcl_abapgit_repo_checksums DEFINITION DEFERRED. CLASS zcl_abapgit_repo DEFINITION DEFERRED. CLASS zcl_abapgit_dot_abapgit DEFINITION DEFERRED. CLASS zcl_abapgit_zip DEFINITION DEFERRED. CLASS zcl_abapgit_version DEFINITION DEFERRED. CLASS zcl_abapgit_repo_requirements DEFINITION DEFERRED. CLASS zcl_abapgit_repo_news DEFINITION DEFERRED. CLASS zcl_abapgit_repo_labels DEFINITION DEFERRED. CLASS zcl_abapgit_repo_item_state DEFINITION DEFERRED. CLASS zcl_abapgit_stage_logic DEFINITION DEFERRED. CLASS zcl_abapgit_stage DEFINITION DEFERRED. CLASS zcl_abapgit_merge DEFINITION DEFERRED. CLASS zcl_abapgit_repo_filter DEFINITION DEFERRED. CLASS zcl_abapgit_object_filter_tran DEFINITION DEFERRED. CLASS zcl_abapgit_persistence_user DEFINITION DEFERRED. CLASS zcl_abapgit_persistence_repo DEFINITION DEFERRED. CLASS zcl_abapgit_persistence_db DEFINITION DEFERRED. CLASS zcl_abapgit_persist_settings DEFINITION DEFERRED. CLASS zcl_abapgit_persist_packages DEFINITION DEFERRED. CLASS zcl_abapgit_persist_migrate DEFINITION DEFERRED. CLASS zcl_abapgit_persist_factory DEFINITION DEFERRED. CLASS zcl_abapgit_persist_background DEFINITION DEFERRED. CLASS zcl_abapgit_migrations DEFINITION DEFERRED. CLASS zcl_abapgit_objects_super DEFINITION DEFERRED. CLASS zcl_abapgit_objects_program DEFINITION DEFERRED. CLASS zcl_abapgit_objects_generic DEFINITION DEFERRED. CLASS zcl_abapgit_objects_factory DEFINITION DEFERRED. CLASS zcl_abapgit_objects_bridge DEFINITION DEFERRED. CLASS zcl_abapgit_objects DEFINITION DEFERRED. CLASS zcl_abapgit_object_xslt DEFINITION DEFERRED. CLASS zcl_abapgit_object_xinx DEFINITION DEFERRED. CLASS zcl_abapgit_object_webi DEFINITION DEFERRED. CLASS zcl_abapgit_object_wdyn DEFINITION DEFERRED. CLASS zcl_abapgit_object_wdya DEFINITION DEFERRED. CLASS zcl_abapgit_object_wdcc DEFINITION DEFERRED. CLASS zcl_abapgit_object_wdca DEFINITION DEFERRED. CLASS zcl_abapgit_object_wapa DEFINITION DEFERRED. CLASS zcl_abapgit_object_w3xx_super DEFINITION DEFERRED. CLASS zcl_abapgit_object_w3mi DEFINITION DEFERRED. CLASS zcl_abapgit_object_w3ht DEFINITION DEFERRED. CLASS zcl_abapgit_object_view DEFINITION DEFERRED. CLASS zcl_abapgit_object_vcls DEFINITION DEFERRED. CLASS zcl_abapgit_object_ueno DEFINITION DEFERRED. CLASS zcl_abapgit_object_udmo DEFINITION DEFERRED. CLASS zcl_abapgit_object_ucsa DEFINITION DEFERRED. CLASS zcl_abapgit_object_type DEFINITION DEFERRED. CLASS zcl_abapgit_object_ttyp DEFINITION DEFERRED. CLASS zcl_abapgit_object_tran DEFINITION DEFERRED. CLASS zcl_abapgit_object_tobj DEFINITION DEFERRED. CLASS zcl_abapgit_object_sxsd DEFINITION DEFERRED. CLASS zcl_abapgit_object_sxci DEFINITION DEFERRED. CLASS zcl_abapgit_object_suso DEFINITION DEFERRED. CLASS zcl_abapgit_object_sush DEFINITION DEFERRED. CLASS zcl_abapgit_object_susc DEFINITION DEFERRED. CLASS zcl_abapgit_object_sucu DEFINITION DEFERRED. CLASS zcl_abapgit_object_styl DEFINITION DEFERRED. CLASS zcl_abapgit_object_stvi DEFINITION DEFERRED. CLASS zcl_abapgit_object_ssst DEFINITION DEFERRED. CLASS zcl_abapgit_object_ssfo DEFINITION DEFERRED. CLASS zcl_abapgit_object_srvd DEFINITION DEFERRED. CLASS zcl_abapgit_object_srvb DEFINITION DEFERRED. CLASS zcl_abapgit_object_srfc DEFINITION DEFERRED. CLASS zcl_abapgit_object_sqsc DEFINITION DEFERRED. CLASS zcl_abapgit_object_sprx DEFINITION DEFERRED. CLASS zcl_abapgit_object_sppf DEFINITION DEFERRED. CLASS zcl_abapgit_object_splo DEFINITION DEFERRED. CLASS zcl_abapgit_object_sots DEFINITION DEFERRED. CLASS zcl_abapgit_object_sod2 DEFINITION DEFERRED. CLASS zcl_abapgit_object_sod1 DEFINITION DEFERRED. CLASS zcl_abapgit_object_sobj DEFINITION DEFERRED. CLASS zcl_abapgit_object_smtg DEFINITION DEFERRED. CLASS zcl_abapgit_object_smim DEFINITION DEFERRED. CLASS zcl_abapgit_object_sktd DEFINITION DEFERRED. CLASS zcl_abapgit_object_sicf DEFINITION DEFERRED. CLASS zcl_abapgit_object_shma DEFINITION DEFERRED. CLASS zcl_abapgit_object_shlp DEFINITION DEFERRED. CLASS zcl_abapgit_object_shi8 DEFINITION DEFERRED. CLASS zcl_abapgit_object_shi5 DEFINITION DEFERRED. CLASS zcl_abapgit_object_shi3 DEFINITION DEFERRED. CLASS zcl_abapgit_object_sfsw DEFINITION DEFERRED. CLASS zcl_abapgit_object_sfpi DEFINITION DEFERRED. CLASS zcl_abapgit_object_sfpf DEFINITION DEFERRED. CLASS zcl_abapgit_object_sfbs DEFINITION DEFERRED. CLASS zcl_abapgit_object_sfbf DEFINITION DEFERRED. CLASS zcl_abapgit_object_scvi DEFINITION DEFERRED. CLASS zcl_abapgit_object_scp1 DEFINITION DEFERRED. CLASS zcl_abapgit_object_saxx_super DEFINITION DEFERRED. CLASS zcl_abapgit_object_sapc DEFINITION DEFERRED. CLASS zcl_abapgit_object_samc DEFINITION DEFERRED. CLASS zcl_abapgit_object_prog DEFINITION DEFERRED. CLASS zcl_abapgit_object_prag DEFINITION DEFERRED. CLASS zcl_abapgit_object_pinf DEFINITION DEFERRED. CLASS zcl_abapgit_object_pers DEFINITION DEFERRED. CLASS zcl_abapgit_object_pdxx_super DEFINITION DEFERRED. CLASS zcl_abapgit_object_pdts DEFINITION DEFERRED. CLASS zcl_abapgit_object_para DEFINITION DEFERRED. CLASS zcl_abapgit_object_otgr DEFINITION DEFERRED. CLASS zcl_abapgit_object_odso DEFINITION DEFERRED. CLASS zcl_abapgit_object_oa2p DEFINITION DEFERRED. CLASS zcl_abapgit_object_nspc DEFINITION DEFERRED. CLASS zcl_abapgit_object_nrob DEFINITION DEFERRED. CLASS zcl_abapgit_object_msag DEFINITION DEFERRED. CLASS zcl_abapgit_object_jobd DEFINITION DEFERRED. CLASS zcl_abapgit_object_iwvb DEFINITION DEFERRED. CLASS zcl_abapgit_object_iwsv DEFINITION DEFERRED. CLASS zcl_abapgit_object_iwsg DEFINITION DEFERRED. CLASS zcl_abapgit_object_iwpr DEFINITION DEFERRED. CLASS zcl_abapgit_object_iwom DEFINITION DEFERRED. CLASS zcl_abapgit_object_iwmo DEFINITION DEFERRED. CLASS zcl_abapgit_object_iobj DEFINITION DEFERRED. CLASS zcl_abapgit_object_intf DEFINITION DEFERRED. CLASS zcl_abapgit_object_iext DEFINITION DEFERRED. CLASS zcl_abapgit_object_idoc DEFINITION DEFERRED. CLASS zcl_abapgit_object_iaxu DEFINITION DEFERRED. CLASS zcl_abapgit_object_iatu DEFINITION DEFERRED. CLASS zcl_abapgit_object_iasp DEFINITION DEFERRED. CLASS zcl_abapgit_object_iarp DEFINITION DEFERRED. CLASS zcl_abapgit_object_iamu DEFINITION DEFERRED. CLASS zcl_abapgit_object_g4bs DEFINITION DEFERRED. CLASS zcl_abapgit_object_g4ba DEFINITION DEFERRED. CLASS zcl_abapgit_object_fugs DEFINITION DEFERRED. CLASS zcl_abapgit_object_fugr DEFINITION DEFERRED. CLASS zcl_abapgit_object_ftgl DEFINITION DEFERRED. CLASS zcl_abapgit_object_form DEFINITION DEFERRED. CLASS zcl_abapgit_object_fdt0 DEFINITION DEFERRED. CLASS zcl_abapgit_object_ensc DEFINITION DEFERRED. CLASS zcl_abapgit_object_enqu DEFINITION DEFERRED. CLASS zcl_abapgit_object_enhs DEFINITION DEFERRED. CLASS zcl_abapgit_object_enho DEFINITION DEFERRED. CLASS zcl_abapgit_object_enhc DEFINITION DEFERRED. CLASS zcl_abapgit_object_ecvo DEFINITION DEFERRED. CLASS zcl_abapgit_object_ectd DEFINITION DEFERRED. CLASS zcl_abapgit_object_ectc DEFINITION DEFERRED. CLASS zcl_abapgit_object_ecsp DEFINITION DEFERRED. CLASS zcl_abapgit_object_ecsd DEFINITION DEFERRED. CLASS zcl_abapgit_object_ecatt_super DEFINITION DEFERRED. CLASS zcl_abapgit_object_ecat DEFINITION DEFERRED. CLASS zcl_abapgit_object_dtel DEFINITION DEFERRED. CLASS zcl_abapgit_object_dtdc DEFINITION DEFERRED. CLASS zcl_abapgit_object_dsys DEFINITION DEFERRED. CLASS zcl_abapgit_object_drul DEFINITION DEFERRED. CLASS zcl_abapgit_object_doma DEFINITION DEFERRED. CLASS zcl_abapgit_object_docv DEFINITION DEFERRED. CLASS zcl_abapgit_object_doct DEFINITION DEFERRED. CLASS zcl_abapgit_object_dial DEFINITION DEFERRED. CLASS zcl_abapgit_object_devc DEFINITION DEFERRED. CLASS zcl_abapgit_object_ddlx DEFINITION DEFERRED. CLASS zcl_abapgit_object_ddls DEFINITION DEFERRED. CLASS zcl_abapgit_object_dcls DEFINITION DEFERRED. CLASS zcl_abapgit_object_cus2 DEFINITION DEFERRED. CLASS zcl_abapgit_object_cus1 DEFINITION DEFERRED. CLASS zcl_abapgit_object_cus0 DEFINITION DEFERRED. CLASS zcl_abapgit_object_cmpt DEFINITION DEFERRED. CLASS zcl_abapgit_object_cmod DEFINITION DEFERRED. CLASS zcl_abapgit_object_clas DEFINITION DEFERRED. CLASS zcl_abapgit_object_chdo DEFINITION DEFERRED. CLASS zcl_abapgit_object_char DEFINITION DEFERRED. CLASS zcl_abapgit_object_bdef DEFINITION DEFERRED. CLASS zcl_abapgit_object_avas DEFINITION DEFERRED. CLASS zcl_abapgit_object_avar DEFINITION DEFERRED. CLASS zcl_abapgit_object_auth DEFINITION DEFERRED. CLASS zcl_abapgit_object_asfc DEFINITION DEFERRED. CLASS zcl_abapgit_object_area DEFINITION DEFERRED. CLASS zcl_abapgit_object_aqsg DEFINITION DEFERRED. CLASS zcl_abapgit_object_aqqu DEFINITION DEFERRED. CLASS zcl_abapgit_object_aqbg DEFINITION DEFERRED. CLASS zcl_abapgit_object_apis DEFINITION DEFERRED. CLASS zcl_abapgit_object_amsd DEFINITION DEFERRED. CLASS zcl_abapgit_object_aifc DEFINITION DEFERRED. CLASS zcl_abapgit_object_acid DEFINITION DEFERRED. CLASS zcl_abapgit_sots_handler DEFINITION DEFERRED. CLASS zcl_abapgit_sotr_handler DEFINITION DEFERRED. CLASS zcl_abapgit_properties_file DEFINITION DEFERRED. CLASS zcl_abapgit_po_file DEFINITION DEFERRED. CLASS zcl_abapgit_lxe_texts DEFINITION DEFERRED. CLASS zcl_abapgit_longtexts DEFINITION DEFERRED. CLASS zcl_abapgit_i18n_params DEFINITION DEFERRED. CLASS zcl_abapgit_object_tabl_ddl DEFINITION DEFERRED. CLASS zcl_abapgit_object_tabl_compar DEFINITION DEFERRED. CLASS zcl_abapgit_object_tabl DEFINITION DEFERRED. CLASS zcl_abapgit_sap_report DEFINITION DEFERRED. CLASS zcl_abapgit_sap_package DEFINITION DEFERRED. CLASS zcl_abapgit_sap_namespace DEFINITION DEFERRED. CLASS zcl_abapgit_function_module DEFINITION DEFERRED. CLASS zcl_abapgit_field_rules DEFINITION DEFERRED. CLASS zcl_abapgit_oo_serializer DEFINITION DEFERRED. CLASS zcl_abapgit_oo_interface DEFINITION DEFERRED. CLASS zcl_abapgit_oo_factory DEFINITION DEFERRED. CLASS zcl_abapgit_oo_class DEFINITION DEFERRED. CLASS zcl_abapgit_oo_base DEFINITION DEFERRED. CLASS zcl_abapgit_gui_jumper DEFINITION DEFERRED. CLASS zcl_abapgit_adt_link DEFINITION DEFERRED. CLASS zcl_abapgit_object_enhs_hook_d DEFINITION DEFERRED. CLASS zcl_abapgit_object_enhs_badi_d DEFINITION DEFERRED. CLASS zcl_abapgit_object_enho_wdyn DEFINITION DEFERRED. CLASS zcl_abapgit_object_enho_wdyc DEFINITION DEFERRED. CLASS zcl_abapgit_object_enho_intf DEFINITION DEFERRED. CLASS zcl_abapgit_object_enho_hook DEFINITION DEFERRED. CLASS zcl_abapgit_object_enho_fugr DEFINITION DEFERRED. CLASS zcl_abapgit_object_enho_clif DEFINITION DEFERRED. CLASS zcl_abapgit_object_enho_class DEFINITION DEFERRED. CLASS zcl_abapgit_object_enho_badi DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_val_obj_upl DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_val_obj_down DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_system_upl DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_system_downl DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_sp_upload DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_sp_download DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_script_upl DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_script_downl DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_helper DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_data_upload DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_data_downl DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_config_upl DEFINITION DEFERRED. CLASS zcl_abapgit_ecatt_config_downl DEFINITION DEFERRED. CLASS zcl_abapgit_tadir DEFINITION DEFERRED. CLASS zcl_abapgit_serialize DEFINITION DEFERRED. CLASS zcl_abapgit_objects_files DEFINITION DEFERRED. CLASS zcl_abapgit_objects_check DEFINITION DEFERRED. CLASS zcl_abapgit_objects_activation DEFINITION DEFERRED. CLASS zcl_abapgit_item_graph DEFINITION DEFERRED. CLASS zcl_abapgit_folder_logic DEFINITION DEFERRED. CLASS zcl_abapgit_filename_logic DEFINITION DEFERRED. CLASS zcl_abapgit_file_deserialize DEFINITION DEFERRED. CLASS zcl_abapgit_dependencies DEFINITION DEFERRED. CLASS zcl_abapgit_object_uist DEFINITION DEFERRED. CLASS zcl_abapgit_object_uipg DEFINITION DEFERRED. CLASS zcl_abapgit_object_uiad DEFINITION DEFERRED. CLASS zcl_abapgit_object_swcr DEFINITION DEFERRED. CLASS zcl_abapgit_object_smbc DEFINITION DEFERRED. CLASS zcl_abapgit_object_sajt DEFINITION DEFERRED. CLASS zcl_abapgit_object_sajc DEFINITION DEFERRED. CLASS zcl_abapgit_object_ront DEFINITION DEFERRED. CLASS zcl_abapgit_object_nont DEFINITION DEFERRED. CLASS zcl_abapgit_object_gsmp DEFINITION DEFERRED. CLASS zcl_abapgit_object_evtb DEFINITION DEFERRED. CLASS zcl_abapgit_object_eeec DEFINITION DEFERRED. CLASS zcl_abapgit_object_dteb DEFINITION DEFERRED. CLASS zcl_abapgit_object_dsfi DEFINITION DEFERRED. CLASS zcl_abapgit_object_dsfd DEFINITION DEFERRED. CLASS zcl_abapgit_object_drty DEFINITION DEFERRED. CLASS zcl_abapgit_object_dras DEFINITION DEFERRED. CLASS zcl_abapgit_object_common_aff DEFINITION DEFERRED. CLASS zcl_abapgit_object_chkv DEFINITION DEFERRED. CLASS zcl_abapgit_object_chko DEFINITION DEFERRED. CLASS zcl_abapgit_object_chkc DEFINITION DEFERRED. CLASS zcl_abapgit_object_cdbo DEFINITION DEFERRED. CLASS zcl_abapgit_object_bgqc DEFINITION DEFERRED. CLASS zcl_abapgit_object_aplo DEFINITION DEFERRED. CLASS zcl_abapgit_json_path DEFINITION DEFERRED. CLASS zcl_abapgit_json_handler DEFINITION DEFERRED. CLASS zcl_abapgit_aff_registry DEFINITION DEFERRED. CLASS zcl_abapgit_ajson_utilities DEFINITION DEFERRED. CLASS zcl_abapgit_ajson_mapping DEFINITION DEFERRED. CLASS zcl_abapgit_ajson_filter_lib DEFINITION DEFERRED. CLASS zcl_abapgit_ajson DEFINITION DEFERRED. CLASS zcl_abapgit_where_used_tools DEFINITION DEFERRED. CLASS zcl_abapgit_code_inspector DEFINITION DEFERRED. CLASS zcl_abapgit_url DEFINITION DEFERRED. CLASS zcl_abapgit_proxy_config DEFINITION DEFERRED. CLASS zcl_abapgit_proxy_auth DEFINITION DEFERRED. CLASS zcl_abapgit_login_manager DEFINITION DEFERRED. CLASS zcl_abapgit_http_digest DEFINITION DEFERRED. CLASS zcl_abapgit_http_client DEFINITION DEFERRED. CLASS zcl_abapgit_http_agent DEFINITION DEFERRED. CLASS zcl_abapgit_http DEFINITION DEFERRED. CLASS zcl_abapgit_pr_enumerator DEFINITION DEFERRED. CLASS zcl_abapgit_pr_enum_github DEFINITION DEFERRED. CLASS zcl_abapgit_git_url DEFINITION DEFERRED. CLASS zcl_abapgit_zlib_stream DEFINITION DEFERRED. CLASS zcl_abapgit_zlib_huffman DEFINITION DEFERRED. CLASS zcl_abapgit_zlib_convert DEFINITION DEFERRED. CLASS zcl_abapgit_zlib DEFINITION DEFERRED. CLASS zcl_abapgit_hash DEFINITION DEFERRED. CLASS zcl_abapgit_git_utils DEFINITION DEFERRED. CLASS zcl_abapgit_git_transport DEFINITION DEFERRED. CLASS zcl_abapgit_git_time DEFINITION DEFERRED. CLASS zcl_abapgit_git_tag DEFINITION DEFERRED. CLASS zcl_abapgit_git_porcelain DEFINITION DEFERRED. CLASS zcl_abapgit_git_pack DEFINITION DEFERRED. CLASS zcl_abapgit_git_factory DEFINITION DEFERRED. CLASS zcl_abapgit_git_commit DEFINITION DEFERRED. CLASS zcl_abapgit_git_branch_list DEFINITION DEFERRED. CLASS zcl_abapgit_git_add_patch DEFINITION DEFERRED. CLASS zcl_abapgit_gitv2_porcelain DEFINITION DEFERRED. CLASS zcl_abapgit_exit DEFINITION DEFERRED. CLASS zcl_abapgit_auth DEFINITION DEFERRED. CLASS zcl_abapgit_user_record DEFINITION DEFERRED. CLASS zcl_abapgit_settings DEFINITION DEFERRED. CLASS zcl_abapgit_language DEFINITION DEFERRED. CLASS zcl_abapgit_feature DEFINITION DEFERRED. CLASS zcl_abapgit_environment DEFINITION DEFERRED. CLASS zcl_abapgit_abap_language_vers DEFINITION DEFERRED. CLASS zcl_abapgit_data_utils DEFINITION DEFERRED. CLASS zcl_abapgit_data_supporter DEFINITION DEFERRED. CLASS zcl_abapgit_data_serializer DEFINITION DEFERRED. CLASS zcl_abapgit_data_factory DEFINITION DEFERRED. CLASS zcl_abapgit_data_deserializer DEFINITION DEFERRED. CLASS zcl_abapgit_data_config DEFINITION DEFERRED. CLASS zcl_abapgit_transport_objects DEFINITION DEFERRED. CLASS zcl_abapgit_transport_mass DEFINITION DEFERRED. CLASS zcl_abapgit_transport_2_branch DEFINITION DEFERRED. CLASS zcl_abapgit_transport DEFINITION DEFERRED. CLASS zcl_abapgit_default_transport DEFINITION DEFERRED. CLASS zcl_abapgit_cts_api DEFINITION DEFERRED. CLASS zcl_abapgit_background_push_fi DEFINITION DEFERRED. CLASS zcl_abapgit_background_push_au DEFINITION DEFERRED. CLASS zcl_abapgit_background_pull DEFINITION DEFERRED. CLASS zcl_abapgit_background DEFINITION DEFERRED. CLASS zcl_abapgit_apack_writer DEFINITION DEFERRED. CLASS zcl_abapgit_apack_reader DEFINITION DEFERRED. CLASS zcl_abapgit_apack_migration DEFINITION DEFERRED. CLASS zcl_abapgit_apack_helper DEFINITION DEFERRED. CLASS zcx_abapgit_ajson_error DEFINITION inheriting from CX_STATIC_CHECK final create public . public section. interfaces IF_T100_MESSAGE . types: ty_rc type c length 4 . constants: begin of ZCX_AJSON_ERROR, msgid type symsgid value '00', msgno type symsgno value '001', attr1 type scx_attrname value 'A1', attr2 type scx_attrname value 'A2', attr3 type scx_attrname value 'A3', attr4 type scx_attrname value 'A4', end of ZCX_AJSON_ERROR . data RC type TY_RC read-only . data MESSAGE type STRING read-only . data LOCATION type STRING read-only . data A1 type SYMSGV read-only . data A2 type SYMSGV read-only . data A3 type SYMSGV read-only . data A4 type SYMSGV read-only . methods CONSTRUCTOR importing !TEXTID like IF_T100_MESSAGE=>T100KEY optional !PREVIOUS like PREVIOUS optional !RC type TY_RC optional !MESSAGE type STRING optional !LOCATION type STRING optional !A1 type SYMSGV optional !A2 type SYMSGV optional !A3 type SYMSGV optional !A4 type SYMSGV optional . class-methods RAISE importing !IV_MSG type STRING !IV_LOCATION type STRING optional !IS_NODE type ANY optional raising zcx_abapgit_ajson_error . methods SET_LOCATION importing !IV_LOCATION type STRING optional !IS_NODE type ANY optional preferred parameter IV_LOCATION . protected section. private section. types: begin of ty_message_parts, a1 like a1, a2 like a1, a3 like a1, a4 like a1, end of ty_message_parts. ENDCLASS. CLASS zcx_abapgit_ajson_error IMPLEMENTATION. method CONSTRUCTOR. CALL METHOD SUPER->CONSTRUCTOR EXPORTING PREVIOUS = PREVIOUS . me->RC = RC . me->MESSAGE = MESSAGE . me->LOCATION = LOCATION . me->A1 = A1 . me->A2 = A2 . me->A3 = A3 . me->A4 = A4 . clear me->textid. if textid is initial. IF_T100_MESSAGE~T100KEY = ZCX_AJSON_ERROR . else. IF_T100_MESSAGE~T100KEY = TEXTID. endif. endmethod. method raise. data lx type ref to zcx_abapgit_ajson_error. create object lx exporting message = iv_msg. lx->set_location( iv_location = iv_location is_node = is_node ). raise exception lx. endmethod. method set_location. data ls_msg type ty_message_parts. data lv_location type string. data lv_tmp type string. field-symbols type string. field-symbols type string. if iv_location is not initial. lv_location = iv_location. elseif is_node is not initial. assign component 'PATH' of structure is_node to . assign component 'NAME' of structure is_node to . if is assigned and is assigned. lv_location = && . endif. endif. if lv_location is not initial. lv_tmp = message && | @{ lv_location }|. else. lv_tmp = message. endif. ls_msg = lv_tmp. location = lv_location. a1 = ls_msg-a1. a2 = ls_msg-a2. a3 = ls_msg-a3. a4 = ls_msg-a4. endmethod. ENDCLASS. "! abapGit general error CLASS zcx_abapgit_exception DEFINITION INHERITING FROM cx_static_check CREATE PUBLIC . PUBLIC SECTION. INTERFACES if_t100_message . CONSTANTS: BEGIN OF c_section_text, cause TYPE string VALUE `Cause`, system_response TYPE string VALUE `System response`, what_to_do TYPE string VALUE `Procedure`, sys_admin TYPE string VALUE `System administration`, END OF c_section_text . CONSTANTS: BEGIN OF c_section_token, cause TYPE string VALUE `&CAUSE&`, system_response TYPE string VALUE `&SYSTEM_RESPONSE&`, what_to_do TYPE string VALUE `&WHAT_TO_DO&`, sys_admin TYPE string VALUE `&SYS_ADMIN&`, END OF c_section_token . CLASS-DATA null TYPE string. DATA msgv1 TYPE symsgv READ-ONLY . DATA msgv2 TYPE symsgv READ-ONLY . DATA msgv3 TYPE symsgv READ-ONLY . DATA msgv4 TYPE symsgv READ-ONLY . DATA mv_longtext TYPE string READ-ONLY. DATA mt_callstack TYPE abap_callstack READ-ONLY. DATA mi_log TYPE REF TO zif_abapgit_log READ-ONLY. "! Raise exception with text "! @parameter iv_text | Text "! @parameter ix_previous | Previous exception "! @parameter ii_log | Log "! @parameter iv_longtext | Longtext "! @raising zcx_abapgit_exception | Exception CLASS-METHODS raise IMPORTING !iv_text TYPE clike !ix_previous TYPE REF TO cx_root OPTIONAL !ii_log TYPE REF TO zif_abapgit_log OPTIONAL !iv_longtext TYPE csequence OPTIONAL RAISING zcx_abapgit_exception . "! Raise exception with T100 message "!

"! Will default to sy-msg* variables. These need to be set right before calling this method. "!

"! @parameter iv_msgid | Message ID "! @parameter iv_msgno | Message number "! @parameter iv_msgv1 | Message variable 1 "! @parameter iv_msgv2 | Message variable 2 "! @parameter iv_msgv3 | Message variable 3 "! @parameter iv_msgv4 | Message variable 4 "! @parameter ii_log | Log "! @parameter ix_previous | Previous exception "! @parameter iv_longtext | Longtext "! @raising zcx_abapgit_exception | Exception CLASS-METHODS raise_t100 IMPORTING !iv_msgid TYPE symsgid DEFAULT sy-msgid !iv_msgno TYPE symsgno DEFAULT sy-msgno !iv_msgv1 TYPE symsgv DEFAULT sy-msgv1 !iv_msgv2 TYPE symsgv DEFAULT sy-msgv2 !iv_msgv3 TYPE symsgv DEFAULT sy-msgv3 !iv_msgv4 TYPE symsgv DEFAULT sy-msgv4 !ii_log TYPE REF TO zif_abapgit_log OPTIONAL !ix_previous TYPE REF TO cx_root OPTIONAL !iv_longtext TYPE csequence OPTIONAL RAISING zcx_abapgit_exception . "! Raise with text from previous exception "! @parameter ix_previous | Previous exception "! @parameter iv_longtext | Longtext "! @raising zcx_abapgit_exception | Exception CLASS-METHODS raise_with_text IMPORTING !ix_previous TYPE REF TO cx_root !iv_longtext TYPE csequence OPTIONAL RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !textid LIKE if_t100_message=>t100key OPTIONAL !previous LIKE previous OPTIONAL !log TYPE REF TO zif_abapgit_log OPTIONAL !msgv1 TYPE symsgv OPTIONAL !msgv2 TYPE symsgv OPTIONAL !msgv3 TYPE symsgv OPTIONAL !msgv4 TYPE symsgv OPTIONAL !longtext TYPE csequence OPTIONAL . METHODS get_source_position REDEFINITION . METHODS if_message~get_longtext REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_generic_error_msg TYPE string VALUE `An error occurred (ZCX_ABAPGIT_EXCEPTION)`. CLASS-METHODS split_text_to_symsg IMPORTING !iv_text TYPE string RETURNING VALUE(rs_msg) TYPE symsg . METHODS save_callstack . METHODS itf_to_string IMPORTING !it_itf TYPE tline_tab RETURNING VALUE(rv_result) TYPE string . METHODS get_t100_longtext_itf RETURNING VALUE(rt_itf) TYPE tline_tab . METHODS remove_empty_section IMPORTING !iv_tabix_from TYPE i !iv_tabix_to TYPE i CHANGING !ct_itf TYPE tline_tab . METHODS replace_section_head_with_text CHANGING !cs_itf TYPE tline . CLASS-METHODS remove_newlines_from_string IMPORTING iv_string TYPE string RETURNING VALUE(rv_result) TYPE string. ENDCLASS. CLASS zcx_abapgit_exception IMPLEMENTATION. METHOD constructor ##ADT_SUPPRESS_GENERATION. super->constructor( previous = previous ). me->msgv1 = msgv1. me->msgv2 = msgv2. me->msgv3 = msgv3. me->msgv4 = msgv4. mi_log = log. mv_longtext = longtext. CLEAR me->textid. IF textid IS INITIAL. if_t100_message~t100key = if_t100_message=>default_textid. ELSE. if_t100_message~t100key = textid. ENDIF. save_callstack( ). ENDMETHOD. METHOD get_source_position. FIELD-SYMBOLS: LIKE LINE OF mt_callstack. READ TABLE mt_callstack ASSIGNING INDEX 1. IF sy-subrc = 0. program_name = -mainprogram. include_name = -include. source_line = -line. ELSE. super->get_source_position( IMPORTING program_name = program_name include_name = include_name source_line = source_line ). ENDIF. ENDMETHOD. METHOD get_t100_longtext_itf. DATA: lv_docu_key TYPE doku_obj. FIELD-SYMBOLS TYPE any. lv_docu_key = if_t100_message~t100key-msgid && if_t100_message~t100key-msgno. CALL FUNCTION 'DOCU_GET' EXPORTING id = 'NA' langu = sy-langu object = lv_docu_key typ = 'E' TABLES line = rt_itf EXCEPTIONS OTHERS = 1. IF sy-subrc = 0. ASSIGN me->(if_t100_message~t100key-attr1) TO . IF sy-subrc = 0. REPLACE ALL OCCURRENCES OF '&V1&' IN TABLE rt_itf WITH . ENDIF. ASSIGN me->(if_t100_message~t100key-attr2) TO . IF sy-subrc = 0. REPLACE ALL OCCURRENCES OF '&V2&' IN TABLE rt_itf WITH . ENDIF. ASSIGN me->(if_t100_message~t100key-attr3) TO . IF sy-subrc = 0. REPLACE ALL OCCURRENCES OF '&V3&' IN TABLE rt_itf WITH . ENDIF. ASSIGN me->(if_t100_message~t100key-attr4) TO . IF sy-subrc = 0. REPLACE ALL OCCURRENCES OF '&V4&' IN TABLE rt_itf WITH . ENDIF. ENDIF. ENDMETHOD. METHOD if_message~get_longtext. DATA: lv_preserve_newlines_handled TYPE abap_bool VALUE abap_false. IF mv_longtext IS NOT INITIAL. result = mv_longtext. ELSEIF if_t100_message~t100key IS NOT INITIAL. result = itf_to_string( get_t100_longtext_itf( ) ). ELSE. result = super->get_longtext( preserve_newlines ). lv_preserve_newlines_handled = abap_true. ENDIF. IF lv_preserve_newlines_handled = abap_false AND preserve_newlines = abap_false. result = remove_newlines_from_string( result ). ENDIF. ENDMETHOD. METHOD itf_to_string. CONSTANTS: lc_format_section TYPE string VALUE 'U1'. DATA: lt_stream TYPE TABLE OF tdline, lt_string TYPE TABLE OF string, lv_string LIKE LINE OF lt_string, lt_itf TYPE tline_tab, lv_has_content TYPE abap_bool, lv_tabix_from TYPE syst-tabix, lv_tabix_to TYPE syst-tabix. FIELD-SYMBOLS: TYPE tline, TYPE tline. lt_itf = it_itf. " You should remember that we replace the U1 format because " that preserves the section header of longtexts. LOOP AT lt_itf ASSIGNING WHERE tdformat = lc_format_section. CLEAR: lv_has_content, lv_tabix_to. lv_tabix_from = sy-tabix. LOOP AT lt_itf ASSIGNING FROM sy-tabix + 1. IF -tdformat = lc_format_section. lv_tabix_to = sy-tabix. EXIT. ELSEIF -tdline IS NOT INITIAL. lv_has_content = abap_true. ENDIF. ENDLOOP. IF lv_has_content = abap_false. remove_empty_section( EXPORTING iv_tabix_from = lv_tabix_from iv_tabix_to = lv_tabix_to CHANGING ct_itf = lt_itf ). CONTINUE. ENDIF. replace_section_head_with_text( CHANGING cs_itf = ). ENDLOOP. CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT' EXPORTING lf = 'X' IMPORTING stream_lines = lt_string TABLES itf_text = lt_itf text_stream = lt_stream. LOOP AT lt_string INTO lv_string. IF sy-tabix = 1. rv_result = lv_string. ELSE. CONCATENATE rv_result lv_string INTO rv_result SEPARATED BY cl_abap_char_utilities=>newline. ENDIF. ENDLOOP. ENDMETHOD. METHOD raise. DATA lv_text TYPE string. IF iv_text IS INITIAL. lv_text = c_generic_error_msg. ELSE. lv_text = iv_text. ENDIF. split_text_to_symsg( lv_text ). raise_t100( ii_log = ii_log ix_previous = ix_previous iv_longtext = iv_longtext ). ENDMETHOD. METHOD raise_t100. DATA: ls_t100_key TYPE scx_t100key. ls_t100_key-msgid = iv_msgid. ls_t100_key-msgno = iv_msgno. ls_t100_key-attr1 = 'MSGV1'. ls_t100_key-attr2 = 'MSGV2'. ls_t100_key-attr3 = 'MSGV3'. ls_t100_key-attr4 = 'MSGV4'. IF iv_msgid IS INITIAL. CLEAR ls_t100_key. ENDIF. RAISE EXCEPTION TYPE zcx_abapgit_exception EXPORTING textid = ls_t100_key log = ii_log msgv1 = iv_msgv1 msgv2 = iv_msgv2 msgv3 = iv_msgv3 msgv4 = iv_msgv4 previous = ix_previous longtext = iv_longtext. ENDMETHOD. METHOD raise_with_text. raise( iv_text = ix_previous->get_text( ) ix_previous = ix_previous iv_longtext = iv_longtext ). ENDMETHOD. METHOD remove_empty_section. IF iv_tabix_to BETWEEN iv_tabix_from AND lines( ct_itf ). DELETE ct_itf FROM iv_tabix_from TO iv_tabix_to. ELSE. DELETE ct_itf FROM iv_tabix_from. ENDIF. ENDMETHOD. METHOD remove_newlines_from_string. rv_result = iv_string. REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `. REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `. REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>newline IN rv_result WITH ` `. REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>newline IN rv_result WITH ` `. ENDMETHOD. METHOD replace_section_head_with_text. CASE cs_itf-tdline. WHEN c_section_token-cause. cs_itf-tdline = c_section_text-cause. WHEN c_section_token-system_response. cs_itf-tdline = c_section_text-system_response. WHEN c_section_token-what_to_do. cs_itf-tdline = c_section_text-what_to_do. WHEN c_section_token-sys_admin. cs_itf-tdline = c_section_text-sys_admin. ENDCASE. ENDMETHOD. METHOD save_callstack. FIELD-SYMBOLS: LIKE LINE OF mt_callstack. CALL FUNCTION 'SYSTEM_CALLSTACK' IMPORTING callstack = mt_callstack. " You should remember that the first lines are from zcx_abapgit_exception " and are removed so that highest level in the callstack is the position where " the exception is raised. " " For the merged report it's hard to do that, because zcx_abapgit_exception " isn't visible in the callstack. Therefore we have to check the Events. LOOP AT mt_callstack ASSIGNING . IF -mainprogram CP |ZCX_ABAPGIT_EXCEPTION*| " full OR -blockname = `SAVE_CALLSTACK` " merged OR -blockname = `CONSTRUCTOR` " merged OR -blockname CP `RAISE*`. "merged DELETE TABLE mt_callstack FROM . ELSE. EXIT. ENDIF. ENDLOOP. ENDMETHOD. METHOD split_text_to_symsg. DATA ls_msg TYPE symsg. cl_message_helper=>set_msg_vars_for_clike( iv_text ). ls_msg-msgv1 = sy-msgv1. ls_msg-msgv2 = sy-msgv2. ls_msg-msgv3 = sy-msgv3. ls_msg-msgv4 = sy-msgv4. " Set syst using generic error message MESSAGE e001(00) WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO null. rs_msg = ls_msg. ENDMETHOD. ENDCLASS. CLASS zcx_abapgit_cancel DEFINITION INHERITING FROM zcx_abapgit_exception FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS constructor IMPORTING !textid LIKE if_t100_message=>t100key OPTIONAL !previous LIKE previous OPTIONAL !log TYPE REF TO zif_abapgit_log OPTIONAL !msgv1 TYPE symsgv OPTIONAL !msgv2 TYPE symsgv OPTIONAL !msgv3 TYPE symsgv OPTIONAL !msgv4 TYPE symsgv OPTIONAL !longtext TYPE csequence OPTIONAL. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcx_abapgit_cancel IMPLEMENTATION. METHOD constructor ##ADT_SUPPRESS_GENERATION. super->constructor( previous = previous log = log msgv1 = msgv1 msgv2 = msgv2 msgv3 = msgv3 msgv4 = msgv4 longtext = longtext ). CLEAR me->textid. IF textid IS INITIAL. if_t100_message~t100key = if_t100_message=>default_textid. ELSE. if_t100_message~t100key = textid. ENDIF. ENDMETHOD. ENDCLASS. CLASS zcx_abapgit_not_found DEFINITION INHERITING FROM cx_static_check FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS constructor IMPORTING !textid LIKE textid OPTIONAL !previous LIKE previous OPTIONAL. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcx_abapgit_not_found IMPLEMENTATION. METHOD constructor ##ADT_SUPPRESS_GENERATION. super->constructor( textid = textid previous = previous ). ENDMETHOD. ENDCLASS. INTERFACE zif_abapgit_background . TYPES: BEGIN OF ty_settings, key TYPE string, value TYPE string, END OF ty_settings . TYPES: ty_settings_tt TYPE STANDARD TABLE OF ty_settings WITH DEFAULT KEY . CLASS-METHODS get_description RETURNING VALUE(rv_description) TYPE string . CLASS-METHODS get_settings CHANGING ct_settings TYPE ty_settings_tt . METHODS run IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online !ii_log TYPE REF TO zif_abapgit_log !it_settings TYPE ty_settings_tt OPTIONAL RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_default_transport. TYPES: BEGIN OF ty_get, trfunction TYPE c LENGTH 1, ordernum TYPE trkorr, END OF ty_get. METHODS set IMPORTING iv_transport TYPE trkorr RAISING zcx_abapgit_exception. METHODS reset RAISING zcx_abapgit_exception. METHODS get RETURNING VALUE(rs_default_task) TYPE ty_get RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_environment. TYPES: BEGIN OF ty_release_sp, release TYPE c LENGTH 10, sp TYPE c LENGTH 10, END OF ty_release_sp, ty_system_language_filter TYPE RANGE OF spras. METHODS is_sap_cloud_platform RETURNING VALUE(rv_result) TYPE abap_bool. METHODS is_merged RETURNING VALUE(rv_result) TYPE abap_bool. METHODS is_repo_object_changes_allowed RETURNING VALUE(rv_result) TYPE abap_bool. METHODS compare_with_inactive RETURNING VALUE(rv_result) TYPE abap_bool. METHODS is_restart_required RETURNING VALUE(rv_result) TYPE abap_bool. METHODS is_sap_object_allowed RETURNING VALUE(rv_allowed) TYPE abap_bool. METHODS get_basis_release RETURNING VALUE(rs_result) TYPE ty_release_sp. METHODS get_system_language_filter RETURNING VALUE(rt_system_language_filter) TYPE ty_system_language_filter. METHODS is_variant_maintenance RETURNING VALUE(rv_is_variant_maintenance) TYPE abap_bool. METHODS init_parallel_processing IMPORTING iv_group TYPE clike RETURNING VALUE(rv_free_work_processes) TYPE i. ENDINTERFACE. INTERFACE zif_abapgit_auth. TYPES: ty_authorization TYPE string. CONSTANTS: BEGIN OF c_authorization, startup TYPE ty_authorization VALUE 'STARTUP', uninstall TYPE ty_authorization VALUE 'UNINSTALL', create_repo TYPE ty_authorization VALUE 'CREATE_REPO', transport_to_branch TYPE ty_authorization VALUE 'TRANSPORT_TO_BRANCH', update_local_checksum TYPE ty_authorization VALUE 'UPDATE_LOCAL_CHECKSUM', END OF c_authorization. METHODS: is_allowed IMPORTING iv_authorization TYPE ty_authorization iv_param TYPE string OPTIONAL RETURNING VALUE(rv_allowed) TYPE abap_bool. ENDINTERFACE. INTERFACE zif_abapgit_git_definitions . * this interface is self contained * only references to built in types * git does not know the concept of TADIR objects, only knows files TYPES: ty_type TYPE c LENGTH 6 . TYPES: ty_bitbyte TYPE c LENGTH 8 . TYPES: ty_sha1 TYPE c LENGTH 40 . TYPES: ty_sha1_tt TYPE STANDARD TABLE OF ty_sha1 WITH DEFAULT KEY . TYPES: ty_adler32 TYPE x LENGTH 4 . TYPES ty_item_state TYPE c LENGTH 1. TYPES: BEGIN OF ty_file_signature, path TYPE string, filename TYPE string, sha1 TYPE ty_sha1, END OF ty_file_signature . TYPES: ty_file_signatures_tt TYPE STANDARD TABLE OF ty_file_signature WITH DEFAULT KEY . TYPES: ty_file_signatures_ts TYPE SORTED TABLE OF ty_file_signature WITH UNIQUE KEY path filename . TYPES: BEGIN OF ty_file. INCLUDE TYPE ty_file_signature. TYPES: data TYPE xstring, END OF ty_file . TYPES: ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY WITH UNIQUE SORTED KEY file_path COMPONENTS path filename WITH NON-UNIQUE SORTED KEY file COMPONENTS filename. TYPES ty_git_branch_type TYPE c LENGTH 2 . TYPES: BEGIN OF ty_git_branch, sha1 TYPE ty_sha1, name TYPE string, type TYPE ty_git_branch_type, is_head TYPE abap_bool, display_name TYPE string, END OF ty_git_branch . TYPES: ty_git_branch_list_tt TYPE STANDARD TABLE OF ty_git_branch WITH DEFAULT KEY WITH NON-UNIQUE SORTED KEY name_key COMPONENTS name. TYPES: BEGIN OF ty_git_tag, sha1 TYPE ty_sha1, object TYPE ty_sha1, name TYPE string, type TYPE ty_git_branch_type, display_name TYPE string, tagger_name TYPE string, tagger_email TYPE string, message TYPE string, body TYPE string, END OF ty_git_tag . TYPES: BEGIN OF ty_git_user, name TYPE string, email TYPE string, END OF ty_git_user . TYPES: BEGIN OF ty_comment, committer TYPE ty_git_user, author TYPE ty_git_user, comment TYPE string, END OF ty_comment . TYPES: ty_chmod TYPE c LENGTH 6 . CONSTANTS: BEGIN OF c_chmod, file TYPE ty_chmod VALUE '100644', executable TYPE ty_chmod VALUE '100755', dir TYPE ty_chmod VALUE '40000 ', submodule TYPE ty_chmod VALUE '160000', symbolic_link TYPE ty_chmod VALUE '120000', END OF c_chmod . TYPES: BEGIN OF ty_expanded, path TYPE string, name TYPE string, sha1 TYPE ty_sha1, chmod TYPE ty_chmod, END OF ty_expanded . TYPES: ty_expanded_tt TYPE STANDARD TABLE OF ty_expanded WITH DEFAULT KEY WITH NON-UNIQUE SORTED KEY path_name COMPONENTS path name. TYPES: BEGIN OF ty_create, name TYPE string, parent TYPE string, END OF ty_create . TYPES: BEGIN OF ty_commit, sha1 TYPE ty_sha1, parent1 TYPE ty_sha1, parent2 TYPE ty_sha1, author TYPE string, email TYPE string, time TYPE string, message TYPE string, body TYPE STANDARD TABLE OF string WITH DEFAULT KEY, branch TYPE string, merge TYPE string, tags TYPE STANDARD TABLE OF string WITH DEFAULT KEY, create TYPE STANDARD TABLE OF ty_create WITH DEFAULT KEY, compressed TYPE abap_bool, END OF ty_commit . TYPES: ty_commit_tt TYPE STANDARD TABLE OF ty_commit WITH DEFAULT KEY . CONSTANTS: BEGIN OF c_type, commit TYPE ty_type VALUE 'commit', "#EC NOTEXT tree TYPE ty_type VALUE 'tree', "#EC NOTEXT ref_d TYPE ty_type VALUE 'ref_d', "#EC NOTEXT tag TYPE ty_type VALUE 'tag', "#EC NOTEXT blob TYPE ty_type VALUE 'blob', "#EC NOTEXT END OF c_type . CONSTANTS: BEGIN OF c_git_branch_type, branch TYPE ty_git_branch_type VALUE 'HD', lightweight_tag TYPE ty_git_branch_type VALUE 'TG', annotated_tag TYPE ty_git_branch_type VALUE 'AT', other TYPE ty_git_branch_type VALUE 'ZZ', END OF c_git_branch_type . CONSTANTS c_head_name TYPE string VALUE 'HEAD' ##NO_TEXT. CONSTANTS: BEGIN OF c_git_branch, main TYPE string VALUE 'refs/heads/main', prefix TYPE string VALUE 'refs/', heads_prefix TYPE string VALUE 'refs/heads/', heads TYPE string VALUE 'refs/heads/*', tags_prefix TYPE string VALUE 'refs/tags/', tags TYPE string VALUE 'refs/tags/*', peel TYPE string VALUE '^{}', END OF c_git_branch. ENDINTERFACE. INTERFACE zif_abapgit_data_config . TYPES: ty_data_type TYPE c LENGTH 4 . TYPES: BEGIN OF ty_config, type TYPE ty_data_type, name TYPE tadir-obj_name, skip_initial TYPE abap_bool, where TYPE string_table, END OF ty_config . TYPES: ty_config_tt TYPE SORTED TABLE OF ty_config WITH UNIQUE KEY type name . CONSTANTS c_default_path TYPE string VALUE '/data/' ##NO_TEXT. CONSTANTS c_default_format TYPE string VALUE 'json' ##NO_TEXT. CONSTANTS c_config TYPE string VALUE 'conf' ##NO_TEXT. CONSTANTS: BEGIN OF c_data_type, tabu TYPE ty_data_type VALUE 'TABU', vdat TYPE ty_data_type VALUE 'VDAT', cdat TYPE ty_data_type VALUE 'CDAT', tdat TYPE ty_data_type VALUE 'TDAT', END OF c_data_type . METHODS add_config IMPORTING !is_config TYPE ty_config RAISING zcx_abapgit_exception . METHODS from_json IMPORTING !it_files TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception . METHODS get_configs RETURNING VALUE(rt_configs) TYPE ty_config_tt . METHODS remove_config IMPORTING !is_config TYPE ty_config RAISING zcx_abapgit_exception . METHODS to_json RETURNING VALUE(rt_files) TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception . METHODS update_config IMPORTING !is_config TYPE ty_config RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_data_serializer . METHODS serialize IMPORTING !ii_config TYPE REF TO zif_abapgit_data_config RETURNING VALUE(rt_files) TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_data_supporter. TYPES: BEGIN OF ty_object, type TYPE zif_abapgit_data_config=>ty_config-type, name TYPE zif_abapgit_data_config=>ty_config-name, END OF ty_object. TYPES: ty_objects TYPE SORTED TABLE OF ty_object WITH UNIQUE KEY type name. METHODS is_object_supported IMPORTING !iv_type TYPE ty_object-type !iv_name TYPE ty_object-name RETURNING VALUE(rv_supported) TYPE abap_bool. ENDINTERFACE. INTERFACE zif_abapgit_git_transport . METHODS branches IMPORTING iv_url TYPE string RETURNING VALUE(ro_branch_list) TYPE REF TO zcl_abapgit_git_branch_list RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_pr_enum_provider . TYPES: BEGIN OF ty_pull_request, base_url TYPE string, number TYPE string, title TYPE string, user TYPE string, head_url TYPE string, head_branch TYPE string, created_at TYPE string, " TODO change to D after date parsing fixed is_for_upstream TYPE abap_bool, draft TYPE abap_bool, html_url TYPE string, END OF ty_pull_request. TYPES: ty_pull_requests TYPE STANDARD TABLE OF ty_pull_request WITH KEY base_url number. METHODS list_pull_requests RETURNING VALUE(rt_pulls) TYPE ty_pull_requests RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_http_agent . CONSTANTS: BEGIN OF c_methods, get TYPE string VALUE 'GET', post TYPE string VALUE 'POST', put TYPE string VALUE 'PUT', delete TYPE string VALUE 'DELETE', patch TYPE string VALUE 'PATCH', END OF c_methods. METHODS global_headers RETURNING VALUE(ro_global_headers) TYPE REF TO zcl_abapgit_string_map. METHODS request IMPORTING !iv_url TYPE string !iv_method TYPE string DEFAULT c_methods-get !io_query TYPE REF TO zcl_abapgit_string_map OPTIONAL !io_headers TYPE REF TO zcl_abapgit_string_map OPTIONAL !iv_payload TYPE any OPTIONAL " can be string, xstring RETURNING VALUE(ri_response) TYPE REF TO zif_abapgit_http_response RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_http_response . METHODS data RETURNING VALUE(rv_data) TYPE xstring . METHODS cdata RETURNING VALUE(rv_data) TYPE string . METHODS json RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error . METHODS is_ok RETURNING VALUE(rv_yes) TYPE abap_bool . METHODS code RETURNING VALUE(rv_code) TYPE i . METHODS error RETURNING VALUE(rv_message) TYPE string . METHODS headers RETURNING VALUE(ro_headers) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . METHODS close . ENDINTERFACE. INTERFACE zif_abapgit_code_inspector . TYPES: BEGIN OF ty_result, objtype TYPE tadir-object, objname TYPE tadir-obj_name, sobjtype TYPE c LENGTH 4, sobjname TYPE c LENGTH 40, kind TYPE c LENGTH 1, line TYPE n LENGTH 6, col TYPE n LENGTH 4, code TYPE c LENGTH 10, test TYPE c LENGTH 30, text TYPE string, param1 TYPE c LENGTH 80, END OF ty_result. TYPES ty_results TYPE STANDARD TABLE OF ty_result WITH DEFAULT KEY. TYPES: BEGIN OF ty_variant, name TYPE sci_chkv, description TYPE string, END OF ty_variant. TYPES ty_variants TYPE STANDARD TABLE OF ty_variant WITH DEFAULT KEY. METHODS run IMPORTING !iv_variant TYPE sci_chkv !iv_save TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rt_list) TYPE ty_results RAISING zcx_abapgit_exception . METHODS is_successful RETURNING VALUE(rv_success) TYPE abap_bool . METHODS get_summary RETURNING VALUE(rv_summary) TYPE string. METHODS validate_check_variant IMPORTING !iv_check_variant_name TYPE sci_chkv RAISING zcx_abapgit_exception. METHODS list_global_variants RETURNING VALUE(rt_list) TYPE ty_variants. ENDINTERFACE. INTERFACE zif_abapgit_ajson_types. TYPES: ty_node_type TYPE string. CONSTANTS: BEGIN OF node_type, boolean TYPE ty_node_type VALUE 'bool', string TYPE ty_node_type VALUE 'str', number TYPE ty_node_type VALUE 'num', null TYPE ty_node_type VALUE 'null', array TYPE ty_node_type VALUE 'array', object TYPE ty_node_type VALUE 'object', END OF node_type. TYPES: BEGIN OF ty_node, path TYPE string, name TYPE string, type TYPE ty_node_type, value TYPE string, index TYPE i, order TYPE i, children TYPE i, END OF ty_node. TYPES: ty_nodes_tt TYPE STANDARD TABLE OF ty_node WITH KEY path name. TYPES: ty_nodes_ts TYPE SORTED TABLE OF ty_node WITH UNIQUE KEY path name WITH NON-UNIQUE SORTED KEY array_index COMPONENTS path index WITH NON-UNIQUE SORTED KEY item_order COMPONENTS path order. TYPES: BEGIN OF ty_path_name, path TYPE string, name TYPE string, END OF ty_path_name. ENDINTERFACE. INTERFACE zif_abapgit_ajson. CONSTANTS version TYPE string VALUE 'v1.1.10'. "#EC NOTEXT CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT TYPES: BEGIN OF ty_opts, read_only TYPE abap_bool, keep_item_order TYPE abap_bool, format_datetime TYPE abap_bool, to_abap_corresponding_only TYPE abap_bool, END OF ty_opts. " DATA DATA mt_json_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts READ-ONLY. " CLONING METHODS clone RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS filter IMPORTING ii_filter TYPE REF TO zif_abapgit_ajson_filter RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS map IMPORTING ii_mapper TYPE REF TO zif_abapgit_ajson_mapping RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. " METHODS METHODS freeze. METHODS keep_item_order RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson. METHODS format_datetime IMPORTING iv_use_iso TYPE abap_bool DEFAULT abap_true RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson. METHODS to_abap_corresponding_only IMPORTING iv_enable TYPE abap_bool DEFAULT abap_true RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson. METHODS opts RETURNING VALUE(rs_opts) TYPE ty_opts. " METHODS ex.reader METHODS is_empty RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS exists IMPORTING iv_path TYPE string RETURNING VALUE(rv_exists) TYPE abap_bool. METHODS members IMPORTING iv_path TYPE string RETURNING VALUE(rt_members) TYPE string_table. METHODS get IMPORTING iv_path TYPE string RETURNING VALUE(rv_value) TYPE string. METHODS get_node_type IMPORTING iv_path TYPE string RETURNING VALUE(rv_node_type) TYPE zif_abapgit_ajson_types=>ty_node_type. METHODS get_boolean IMPORTING iv_path TYPE string RETURNING VALUE(rv_value) TYPE abap_bool. METHODS get_integer IMPORTING iv_path TYPE string RETURNING VALUE(rv_value) TYPE i. METHODS get_number IMPORTING iv_path TYPE string RETURNING VALUE(rv_value) TYPE f. METHODS get_date IMPORTING iv_path TYPE string RETURNING VALUE(rv_value) TYPE d. METHODS get_timestamp IMPORTING iv_path TYPE string RETURNING VALUE(rv_value) TYPE timestamp. METHODS get_string IMPORTING iv_path TYPE string RETURNING VALUE(rv_value) TYPE string. METHODS slice IMPORTING iv_path TYPE string RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson. METHODS to_abap IMPORTING iv_corresponding TYPE abap_bool DEFAULT abap_false EXPORTING ev_container TYPE any RAISING zcx_abapgit_ajson_error. METHODS array_to_string_table IMPORTING iv_path TYPE string RETURNING VALUE(rt_string_table) TYPE string_table RAISING zcx_abapgit_ajson_error. " METHODS ex.writer METHODS clear RAISING zcx_abapgit_ajson_error. METHODS set IMPORTING iv_path TYPE string iv_val TYPE any iv_ignore_empty TYPE abap_bool DEFAULT abap_true iv_node_type TYPE zif_abapgit_ajson_types=>ty_node_type OPTIONAL RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS setx IMPORTING iv_param TYPE string RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS set_boolean IMPORTING iv_path TYPE string iv_val TYPE any RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS set_string IMPORTING iv_path TYPE string iv_val TYPE clike RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS set_integer IMPORTING iv_path TYPE string iv_val TYPE i RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS set_date IMPORTING iv_path TYPE string iv_val TYPE d RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS set_timestamp IMPORTING iv_path TYPE string iv_val TYPE timestamp RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS set_null IMPORTING iv_path TYPE string RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS delete IMPORTING iv_path TYPE string RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS touch_array IMPORTING iv_path TYPE string iv_clear TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS push IMPORTING iv_path TYPE string iv_val TYPE any RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. METHODS stringify IMPORTING iv_indent TYPE i DEFAULT 0 RETURNING VALUE(rv_json) TYPE string RAISING zcx_abapgit_ajson_error. ENDINTERFACE. INTERFACE zif_abapgit_ajson_filter. TYPES ty_filter_tab TYPE STANDARD TABLE OF REF TO zif_abapgit_ajson_filter WITH KEY table_line. TYPES ty_visit_type TYPE i. CONSTANTS: BEGIN OF visit_type, value TYPE ty_visit_type VALUE 0, open TYPE ty_visit_type VALUE 1, close TYPE ty_visit_type VALUE 2, END OF visit_type. METHODS keep_node IMPORTING is_node TYPE zif_abapgit_ajson_types=>ty_node iv_visit TYPE ty_visit_type DEFAULT visit_type-value RETURNING VALUE(rv_keep) TYPE abap_bool RAISING zcx_abapgit_ajson_error. ENDINTERFACE. INTERFACE zif_abapgit_ajson_mapping. TYPES: BEGIN OF ty_mapping_field, " deprecated, will be removed abap TYPE string, json TYPE string, END OF ty_mapping_field, ty_mapping_fields TYPE STANDARD TABLE OF ty_mapping_field WITH UNIQUE SORTED KEY abap COMPONENTS abap WITH UNIQUE SORTED KEY json COMPONENTS json. TYPES: BEGIN OF ty_rename, from TYPE string, to TYPE string, END OF ty_rename, tty_rename_map TYPE STANDARD TABLE OF ty_rename WITH UNIQUE SORTED KEY by_name COMPONENTS from. TYPES: ty_table_of TYPE STANDARD TABLE OF REF TO zif_abapgit_ajson_mapping. METHODS to_abap " deprecated, will be removed IMPORTING !iv_path TYPE string !iv_name TYPE string RETURNING VALUE(rv_result) TYPE string. METHODS to_json " deprecated, will be removed IMPORTING !iv_path TYPE string !iv_name TYPE string RETURNING VALUE(rv_result) TYPE string. METHODS rename_node IMPORTING !is_node TYPE zif_abapgit_ajson_types=>ty_node CHANGING !cv_name TYPE zif_abapgit_ajson_types=>ty_node-name. ENDINTERFACE. INTERFACE zif_abapgit_aff_registry . METHODS: "! Returns TRUE if the object type is supported by ABAP file formats (AFF) in abapGit.
"! Either there is a (standalone AFF capable) object handler, "! or object handler calls the AFF framework in newer ABAP systems. is_supported_object_type IMPORTING iv_obj_type TYPE tadir-object RETURNING VALUE(rv_result) TYPE abap_bool. ENDINTERFACE. INTERFACE zif_abapgit_aff_type_mapping . METHODS: "! Convert from AFF to abapGit data "! "! @parameter iv_data | ABAP data as AFF type "! @parameter iv_object_name | Name of object "! @parameter es_data | ABAP data as abapGit type to_abapgit IMPORTING iv_data TYPE data iv_object_name TYPE sobj_name EXPORTING es_data TYPE data, "! Converts to AFF specific meta data "! "! @parameter iv_data | (meta-)data of the object "! @parameter es_data | aff data of the object, e.g. zif_abapgit_aff_intf_v1=>ty_main to_aff IMPORTING iv_data TYPE data EXPORTING es_data TYPE data. ENDINTERFACE. INTERFACE zif_abapgit_aff_types_v1. TYPES ty_format_version TYPE string. TYPES ty_abap_language_version TYPE c LENGTH 1. TYPES ty_abap_language_version_cloud TYPE c LENGTH 1. TYPES ty_abap_language_version_src TYPE c LENGTH 1. CONSTANTS: BEGIN OF co_abap_language_version_src, standard TYPE ty_abap_language_version_src VALUE 'X', key_user TYPE ty_abap_language_version_src VALUE '2', cloud_development TYPE ty_abap_language_version_src VALUE '5', END OF co_abap_language_version_src. CONSTANTS: BEGIN OF co_abap_language_version, standard TYPE ty_abap_language_version VALUE space, key_user TYPE ty_abap_language_version VALUE '2', cloud_development TYPE ty_abap_language_version VALUE '5', END OF co_abap_language_version. CONSTANTS: BEGIN OF co_abap_language_version_cloud, standard TYPE ty_abap_language_version_cloud VALUE space, cloud_development TYPE ty_abap_language_version_cloud VALUE '5', END OF co_abap_language_version_cloud. TYPES ty_description_60 TYPE c LENGTH 60. TYPES ty_description_100 TYPE c LENGTH 100. TYPES ty_object_name_30 TYPE c LENGTH 30. TYPES ty_original_language TYPE sy-langu. TYPES: BEGIN OF ty_header_60_src, description TYPE ty_description_60, original_language TYPE ty_original_language, abap_language_version TYPE ty_abap_language_version_src, END OF ty_header_60_src. TYPES: BEGIN OF ty_header_60_cloud, description TYPE ty_description_60, original_language TYPE ty_original_language, abap_language_version TYPE ty_abap_language_version_cloud, END OF ty_header_60_cloud. TYPES: BEGIN OF ty_header_60, description TYPE ty_description_60, original_language TYPE ty_original_language, abap_language_version TYPE ty_abap_language_version, END OF ty_header_60. TYPES: BEGIN OF ty_header_60_no_abap_lv, description TYPE ty_description_60, original_language TYPE ty_original_language, END OF ty_header_60_no_abap_lv. TYPES: BEGIN OF ty_header_100, description TYPE ty_description_100, original_language TYPE ty_original_language, abap_language_version TYPE ty_abap_language_version, END OF ty_header_100. TYPES: BEGIN OF ty_header_only_description, description TYPE ty_description_60, END OF ty_header_only_description. TYPES ty_option TYPE c LENGTH 2. CONSTANTS: BEGIN OF co_option, equals TYPE ty_option VALUE 'EQ', between TYPE ty_option VALUE 'BT', greater_than TYPE ty_option VALUE 'GT', contains_pattern TYPE ty_option VALUE 'CP', not_equal TYPE ty_option VALUE 'NE', not_between TYPE ty_option VALUE 'NB', not_contains_pattern TYPE ty_option VALUE 'NP', greater_equal TYPE ty_option VALUE 'GE', less_than TYPE ty_option VALUE 'LT', less_equal TYPE ty_option VALUE 'LE', END OF co_option. TYPES ty_sign TYPE c LENGTH 1. CONSTANTS: BEGIN OF co_sign, include TYPE ty_sign VALUE 'I', exclude TYPE ty_sign VALUE 'E', END OF co_sign. ENDINTERFACE. INTERFACE zif_abapgit_aff_oo_types_v1. TYPES: BEGIN OF ty_component_description, name TYPE zif_abapgit_aff_types_v1=>ty_object_name_30, description TYPE zif_abapgit_aff_types_v1=>ty_description_60, END OF ty_component_description, ty_component_descriptions TYPE SORTED TABLE OF ty_component_description WITH UNIQUE KEY name. TYPES: BEGIN OF ty_method, name TYPE zif_abapgit_aff_types_v1=>ty_object_name_30, description TYPE zif_abapgit_aff_types_v1=>ty_description_60, parameters TYPE ty_component_descriptions, exceptions TYPE ty_component_descriptions, END OF ty_method, ty_methods TYPE SORTED TABLE OF ty_method WITH UNIQUE KEY name. TYPES: BEGIN OF ty_event, name TYPE zif_abapgit_aff_types_v1=>ty_object_name_30, description TYPE zif_abapgit_aff_types_v1=>ty_description_60, parameters TYPE ty_component_descriptions, END OF ty_event, ty_events TYPE SORTED TABLE OF ty_event WITH UNIQUE KEY name. TYPES: BEGIN OF ty_descriptions, types TYPE ty_component_descriptions, attributes TYPE ty_component_descriptions, events TYPE ty_events, methods TYPE ty_methods, END OF ty_descriptions. ENDINTERFACE. INTERFACE zif_abapgit_aff_intf_v1. TYPES ty_category TYPE n LENGTH 2. CONSTANTS: BEGIN OF co_category, general TYPE ty_category VALUE '00', classic_badi TYPE ty_category VALUE '01', business_static_components TYPE ty_category VALUE '51', business_instance_components TYPE ty_category VALUE '52', db_procedure_proxy TYPE ty_category VALUE '65', web_dynpro_runtime TYPE ty_category VALUE '80', enterprise_service TYPE ty_category VALUE '90', END OF co_category. TYPES: BEGIN OF ty_main, format_version TYPE zif_abapgit_aff_types_v1=>ty_format_version, header TYPE zif_abapgit_aff_types_v1=>ty_header_60_src, category TYPE ty_category, proxy TYPE abap_bool, descriptions TYPE zif_abapgit_aff_oo_types_v1=>ty_descriptions, END OF ty_main. ENDINTERFACE. INTERFACE zif_abapgit_ecatt . " downport missing types TYPES: ty_invert_validation TYPE c LENGTH 1, ty_error_prio TYPE n LENGTH 1, ty_impl_name TYPE c LENGTH 30, ty_impl_type TYPE c LENGTH 1, ty_impl_subtype TYPE c LENGTH 4, ty_package TYPE c LENGTH 255, BEGIN OF ty_impl_det, impl_name TYPE ty_impl_name, impl_type TYPE ty_impl_type, impl_subtype TYPE ty_impl_subtype, impl_package TYPE ty_package, END OF ty_impl_det. TYPES: BEGIN OF ty_bus_msg. INCLUDE TYPE etobj_key. TYPES: bus_msg_no TYPE c LENGTH 1, " ty_msg_no arbgb TYPE arbgb, msgnr TYPE msgnr, bus_msg_text TYPE string, "ty_bus_msg_text otr_key TYPE sotr_conc, msg_type TYPE c LENGTH 4, "ty_msg_type END OF ty_bus_msg, ty_bus_msgs TYPE STANDARD TABLE OF ty_bus_msg. ENDINTERFACE. INTERFACE zif_abapgit_ecatt_download . METHODS: get_xml_stream RETURNING VALUE(rv_xml_stream) TYPE xstring. ENDINTERFACE. INTERFACE zif_abapgit_ecatt_upload . METHODS: set_stream_for_upload IMPORTING iv_xml TYPE xstring. ENDINTERFACE. INTERFACE zif_abapgit_object_enho. METHODS: deserialize IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input iv_package TYPE devclass RAISING zcx_abapgit_exception, serialize IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_output ii_enh_tool TYPE REF TO if_enh_tool RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_object_enhs. METHODS: deserialize IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input iv_package TYPE devclass ii_enh_spot_tool TYPE REF TO if_enh_spot_tool RAISING zcx_abapgit_exception, serialize IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_output ii_enh_spot_tool TYPE REF TO if_enh_spot_tool RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_field_rules . TYPES ty_fill_rule TYPE c LENGTH 2. CONSTANTS: BEGIN OF c_fill_rule, date TYPE ty_fill_rule VALUE 'DT', time TYPE ty_fill_rule VALUE 'TM', timestamp TYPE ty_fill_rule VALUE 'TS', user TYPE ty_fill_rule VALUE 'UR', client TYPE ty_fill_rule VALUE 'CT', package TYPE ty_fill_rule VALUE 'PK', END OF c_fill_rule. METHODS add IMPORTING iv_table TYPE tabname iv_field TYPE fieldname iv_fill_rule TYPE ty_fill_rule RETURNING VALUE(ro_self) TYPE REF TO zif_abapgit_field_rules. METHODS apply_clear_logic IMPORTING iv_table TYPE tabname CHANGING ct_data TYPE STANDARD TABLE. METHODS apply_fill_logic IMPORTING iv_table TYPE tabname iv_package TYPE devclass CHANGING ct_data TYPE STANDARD TABLE. ENDINTERFACE. INTERFACE zif_abapgit_function_module. METHODS: function_exists IMPORTING iv_function_module_name TYPE clike RETURNING VALUE(rv_exists) TYPE abap_bool. ENDINTERFACE. INTERFACE zif_abapgit_lxe_texts . * type LXE_PCX_S1 inlined to be compatible with open-abap and ABAP Cloud TYPES: BEGIN OF ty_text_pair, textkey TYPE c LENGTH 32, s_text TYPE c LENGTH 255, t_text TYPE c LENGTH 255, unitmlt TYPE i, uppcase TYPE c LENGTH 4, texttype TYPE c LENGTH 1, END OF ty_text_pair. TYPES ty_text_pairs TYPE STANDARD TABLE OF ty_text_pair WITH DEFAULT KEY. METHODS serialize IMPORTING !iv_object_type TYPE tadir-object !iv_object_name TYPE tadir-obj_name !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params !ii_xml TYPE REF TO zif_abapgit_xml_output !io_files TYPE REF TO zcl_abapgit_objects_files RAISING zcx_abapgit_exception . METHODS deserialize IMPORTING !iv_object_type TYPE tadir-object OPTIONAL !iv_object_name TYPE tadir-obj_name OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params !ii_xml TYPE REF TO zif_abapgit_xml_input !io_files TYPE REF TO zcl_abapgit_objects_files RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_i18n_file. TYPES ty_table_of TYPE STANDARD TABLE OF REF TO zif_abapgit_i18n_file WITH DEFAULT KEY. METHODS render RETURNING VALUE(rv_data) TYPE xstring RAISING zcx_abapgit_exception. METHODS translate CHANGING ct_text_pairs TYPE zif_abapgit_lxe_texts=>ty_text_pairs RAISING zcx_abapgit_exception. METHODS ext RETURNING VALUE(rv_ext) TYPE string. METHODS lang RETURNING VALUE(rv_lang) TYPE laiso. ENDINTERFACE. INTERFACE zif_abapgit_comparator . TYPES: BEGIN OF ty_result, text TYPE string, END OF ty_result . METHODS compare IMPORTING !ii_remote TYPE REF TO zif_abapgit_xml_input !ii_log TYPE REF TO zif_abapgit_log RETURNING VALUE(rs_result) TYPE ty_result RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_persist_settings. METHODS modify IMPORTING !io_settings TYPE REF TO zcl_abapgit_settings RAISING zcx_abapgit_exception . METHODS read RETURNING VALUE(ro_settings) TYPE REF TO zcl_abapgit_settings . ENDINTERFACE. INTERFACE zif_abapgit_gui_asset_manager . TYPES: BEGIN OF ty_web_asset, url TYPE string, type TYPE c LENGTH 50, subtype TYPE c LENGTH 50, content TYPE xstring, is_cacheable TYPE abap_bool, END OF ty_web_asset . TYPES: ty_web_assets TYPE STANDARD TABLE OF ty_web_asset WITH DEFAULT KEY . METHODS get_all_assets RETURNING VALUE(rt_assets) TYPE ty_web_assets RAISING zcx_abapgit_exception. METHODS get_asset IMPORTING iv_url TYPE string RETURNING VALUE(rs_asset) TYPE ty_web_asset RAISING zcx_abapgit_exception. METHODS get_text_asset IMPORTING iv_url TYPE string iv_assert_subtype TYPE string OPTIONAL RETURNING VALUE(rv_asset) TYPE string RAISING zcx_abapgit_exception. METHODS register_asset IMPORTING !iv_url TYPE string !iv_type TYPE string !iv_cacheable TYPE abap_bool DEFAULT abap_true !iv_mime_name TYPE wwwdatatab-objid OPTIONAL !iv_base64 TYPE string OPTIONAL !iv_inline TYPE string OPTIONAL RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_gui_error_handler . METHODS handle_error IMPORTING ix_error TYPE REF TO zcx_abapgit_exception RETURNING VALUE(rv_handled) TYPE abap_bool. ENDINTERFACE. INTERFACE zif_abapgit_gui_event_handler . TYPES: BEGIN OF ty_handling_result, page TYPE REF TO zif_abapgit_gui_renderable, state TYPE i, END OF ty_handling_result. METHODS on_event IMPORTING ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rs_handled) TYPE ty_handling_result RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_gui_hotkeys . TYPES: BEGIN OF ty_hotkey_with_descr, ui_component TYPE string, action TYPE string, hotkey TYPE string, description TYPE string, END OF ty_hotkey_with_descr . TYPES: ty_hotkeys_with_descr TYPE STANDARD TABLE OF ty_hotkey_with_descr WITH DEFAULT KEY WITH UNIQUE SORTED KEY action COMPONENTS ui_component action . METHODS get_hotkey_actions RETURNING VALUE(rt_hotkey_actions) TYPE ty_hotkeys_with_descr RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_gui_hotkey_ctl. METHODS register_hotkeys IMPORTING !it_hotkeys TYPE zif_abapgit_gui_hotkeys=>ty_hotkeys_with_descr. METHODS reset. METHODS get_registered_hotkeys RETURNING VALUE(rt_registered_hotkeys) TYPE zif_abapgit_gui_hotkeys=>ty_hotkeys_with_descr RAISING zcx_abapgit_exception. METHODS set_visible IMPORTING iv_visible TYPE abap_bool. ENDINTERFACE. INTERFACE zif_abapgit_gui_html_processor . METHODS process IMPORTING !iv_html TYPE string !ii_gui_services TYPE REF TO zif_abapgit_gui_services RETURNING VALUE(rv_html) TYPE string RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_gui_modal . METHODS is_modal RETURNING VALUE(rv_yes) TYPE abap_bool. ENDINTERFACE. INTERFACE zif_abapgit_gui_renderable . METHODS render RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_gui_services . METHODS cache_asset IMPORTING !iv_text TYPE string OPTIONAL !iv_xdata TYPE xstring OPTIONAL !iv_url TYPE string OPTIONAL !iv_type TYPE c !iv_subtype TYPE c RETURNING VALUE(rv_url) TYPE string RAISING zcx_abapgit_exception . " Notes: " - page_asset is supposed to be not cacheable " - add mime64 if needed (supposedly won't be needed) METHODS register_page_asset IMPORTING !iv_url TYPE string !iv_type TYPE string !iv_mime_name TYPE wwwdatatab-objid OPTIONAL !iv_inline TYPE string OPTIONAL RAISING zcx_abapgit_exception . METHODS register_event_handler IMPORTING !ii_event_handler TYPE REF TO zif_abapgit_gui_event_handler . METHODS get_current_page_name RETURNING VALUE(rv_page_name) TYPE string . METHODS get_hotkeys_ctl RETURNING VALUE(ri_hotkey_ctl) TYPE REF TO zif_abapgit_gui_hotkey_ctl . METHODS get_html_parts RETURNING VALUE(ro_parts) TYPE REF TO zcl_abapgit_html_parts . METHODS get_log IMPORTING !iv_create_new TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_log) TYPE REF TO zif_abapgit_log . ENDINTERFACE. INTERFACE zif_abapgit_html. TYPES: BEGIN OF ty_data_attr, name TYPE string, value TYPE string, END OF ty_data_attr, ty_data_attrs TYPE STANDARD TABLE OF ty_data_attr WITH KEY name. CONSTANTS: BEGIN OF c_action_type, sapevent TYPE c VALUE 'E', url TYPE c VALUE 'U', onclick TYPE c VALUE 'C', separator TYPE c VALUE 'S', dummy TYPE c VALUE '_', END OF c_action_type . CONSTANTS: BEGIN OF c_html_opt, strong TYPE c VALUE 'E', cancel TYPE c VALUE 'C', crossout TYPE c VALUE 'X', END OF c_html_opt . TYPES: ty_table_of TYPE STANDARD TABLE OF REF TO zif_abapgit_html WITH DEFAULT KEY. DATA mv_chunk_title TYPE string READ-ONLY. " Primarily for debug of postponed html parts METHODS set_title IMPORTING iv_title TYPE string RETURNING VALUE(ri_self) TYPE REF TO zif_abapgit_html. METHODS add IMPORTING !ig_chunk TYPE any RETURNING VALUE(ri_self) TYPE REF TO zif_abapgit_html. METHODS render IMPORTING !iv_no_indent_jscss TYPE abap_bool DEFAULT abap_false !iv_no_line_breaks TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_html) TYPE string . METHODS is_empty RETURNING VALUE(rv_yes) TYPE abap_bool . METHODS add_a IMPORTING !iv_txt TYPE string !iv_act TYPE string !iv_query TYPE string OPTIONAL !iv_typ TYPE c DEFAULT c_action_type-sapevent !iv_opt TYPE clike OPTIONAL !iv_class TYPE string OPTIONAL !iv_id TYPE string OPTIONAL !iv_style TYPE string OPTIONAL !iv_title TYPE string OPTIONAL RETURNING VALUE(ri_self) TYPE REF TO zif_abapgit_html. METHODS add_checkbox IMPORTING iv_id TYPE string iv_checked TYPE abap_bool OPTIONAL RETURNING VALUE(ri_self) TYPE REF TO zif_abapgit_html. METHODS a IMPORTING !iv_txt TYPE string !iv_act TYPE string !iv_query TYPE string OPTIONAL !iv_typ TYPE c DEFAULT zif_abapgit_html=>c_action_type-sapevent !iv_opt TYPE clike OPTIONAL !iv_class TYPE string OPTIONAL !iv_id TYPE string OPTIONAL !iv_style TYPE string OPTIONAL !iv_title TYPE string OPTIONAL RETURNING VALUE(rv_str) TYPE string . METHODS icon IMPORTING !iv_name TYPE string !iv_hint TYPE string OPTIONAL !iv_class TYPE string OPTIONAL !iv_onclick TYPE string OPTIONAL RETURNING VALUE(rv_str) TYPE string . METHODS add_icon IMPORTING !iv_name TYPE string !iv_hint TYPE string OPTIONAL !iv_class TYPE string OPTIONAL !iv_onclick TYPE string OPTIONAL RETURNING VALUE(ri_self) TYPE REF TO zif_abapgit_html. METHODS wrap IMPORTING !iv_tag TYPE string !iv_content TYPE string OPTIONAL !ii_content TYPE REF TO zif_abapgit_html OPTIONAL !iv_id TYPE string OPTIONAL !iv_class TYPE string OPTIONAL !iv_hint TYPE string OPTIONAL !iv_format_single_line TYPE abap_bool DEFAULT abap_false !is_data_attr TYPE ty_data_attr OPTIONAL !it_data_attrs TYPE ty_data_attrs OPTIONAL RETURNING VALUE(ri_self) TYPE REF TO zif_abapgit_html. METHODS td IMPORTING !iv_content TYPE string OPTIONAL !ii_content TYPE REF TO zif_abapgit_html OPTIONAL !iv_id TYPE string OPTIONAL !iv_class TYPE string OPTIONAL !iv_hint TYPE string OPTIONAL !iv_format_single_line TYPE abap_bool DEFAULT abap_true !is_data_attr TYPE ty_data_attr OPTIONAL !it_data_attrs TYPE ty_data_attrs OPTIONAL PREFERRED PARAMETER iv_content RETURNING VALUE(ri_self) TYPE REF TO zif_abapgit_html. METHODS th IMPORTING !iv_content TYPE string OPTIONAL !ii_content TYPE REF TO zif_abapgit_html OPTIONAL !iv_id TYPE string OPTIONAL !iv_class TYPE string OPTIONAL !iv_hint TYPE string OPTIONAL !iv_format_single_line TYPE abap_bool DEFAULT abap_true !is_data_attr TYPE ty_data_attr OPTIONAL !it_data_attrs TYPE ty_data_attrs OPTIONAL PREFERRED PARAMETER iv_content RETURNING VALUE(ri_self) TYPE REF TO zif_abapgit_html. METHODS div IMPORTING !iv_content TYPE string OPTIONAL !ii_content TYPE REF TO zif_abapgit_html OPTIONAL !iv_id TYPE string OPTIONAL !iv_class TYPE string OPTIONAL !is_data_attr TYPE ty_data_attr OPTIONAL !it_data_attrs TYPE ty_data_attrs OPTIONAL PREFERRED PARAMETER iv_content RETURNING VALUE(ri_self) TYPE REF TO zif_abapgit_html. ENDINTERFACE. INTERFACE zif_abapgit_html_viewer . TYPES: ty_char256 TYPE c LENGTH 256 . TYPES: ty_post_data TYPE STANDARD TABLE OF ty_char256 WITH DEFAULT KEY . TYPES: BEGIN OF ty_name_value, name TYPE c LENGTH 30, value TYPE c LENGTH 250, END OF ty_name_value . TYPES: ty_query_table TYPE STANDARD TABLE OF ty_name_value WITH DEFAULT KEY . CONSTANTS c_id_sapevent TYPE i VALUE 1 ##NO_TEXT. EVENTS sapevent EXPORTING VALUE(action) TYPE c OPTIONAL VALUE(frame) TYPE c OPTIONAL VALUE(getdata) TYPE c OPTIONAL VALUE(postdata) TYPE ty_post_data OPTIONAL VALUE(query_table) TYPE ty_query_table OPTIONAL . METHODS load_data IMPORTING !iv_url TYPE string OPTIONAL !iv_type TYPE c DEFAULT 'text' !iv_subtype TYPE c DEFAULT 'html' !iv_size TYPE i DEFAULT 0 EXPORTING !ev_assigned_url TYPE string CHANGING !ct_data_table TYPE STANDARD TABLE RAISING zcx_abapgit_exception . METHODS set_registered_events IMPORTING !it_events TYPE cntl_simple_events RAISING zcx_abapgit_exception . METHODS show_url IMPORTING !iv_url TYPE string RAISING zcx_abapgit_exception . METHODS free . METHODS close_document . METHODS get_url RETURNING VALUE(rv_url) TYPE string . METHODS back . METHODS set_visiblity IMPORTING !iv_visible TYPE abap_bool . METHODS set_focus RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_gui_event . DATA mv_action TYPE string READ-ONLY. DATA mv_getdata TYPE string READ-ONLY. DATA mt_postdata TYPE zif_abapgit_html_viewer=>ty_post_data READ-ONLY. DATA mi_gui_services TYPE REF TO zif_abapgit_gui_services READ-ONLY. DATA mv_current_page_name TYPE string. METHODS query RETURNING VALUE(ro_string_map) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. METHODS form_data RETURNING VALUE(ro_string_map) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_gui_menu_provider . METHODS get_menu RETURNING VALUE(ro_toolbar) TYPE REF TO zcl_abapgit_html_toolbar RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_gui_page_title . METHODS get_page_title RETURNING VALUE(rv_title) TYPE string. ENDINTERFACE. INTERFACE zif_abapgit_gui_render_item . METHODS render IMPORTING iv_item TYPE any iv_index TYPE i RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_html_form . TYPES: BEGIN OF ty_subitem, label TYPE string, value TYPE string, readonly TYPE abap_bool, END OF ty_subitem . TYPES: ty_subitems TYPE STANDARD TABLE OF ty_subitem WITH DEFAULT KEY . TYPES: BEGIN OF ty_field, type TYPE i, name TYPE string, label TYPE string, hint TYPE string, dblclick TYPE string, click TYPE string, placeholder TYPE string, required TYPE string, upper_case TYPE abap_bool, item_class TYPE string, error TYPE string, default_value TYPE string, side_action TYPE string, subitems TYPE ty_subitems, readonly TYPE abap_bool, password TYPE abap_bool, condense TYPE abap_bool, min TYPE i, max TYPE i, rows TYPE i, cols TYPE i, END OF ty_field . TYPES: ty_fields TYPE STANDARD TABLE OF ty_field WITH DEFAULT KEY WITH UNIQUE SORTED KEY by_name COMPONENTS name . TYPES: BEGIN OF ty_command, label TYPE string, action TYPE string, cmd_type TYPE i, END OF ty_command . CONSTANTS c_rows TYPE string VALUE 'rows'. CONSTANTS: BEGIN OF c_cmd_type, input TYPE i VALUE 1, input_main TYPE i VALUE 2, link TYPE i VALUE 3, button TYPE i VALUE 4, END OF c_cmd_type . CONSTANTS: BEGIN OF c_field_type, text TYPE i VALUE 1, radio TYPE i VALUE 2, checkbox TYPE i VALUE 3, field_group TYPE i VALUE 4, number TYPE i VALUE 5, textarea TYPE i VALUE 6, table TYPE i VALUE 7, hidden TYPE i VALUE 8, END OF c_field_type . ENDINTERFACE. INTERFACE zif_abapgit_html_popup . METHODS create_picklist RETURNING VALUE(ro_picklist) TYPE REF TO zcl_abapgit_gui_picklist RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_html_table . TYPES: BEGIN OF ty_row_attrs, css_class TYPE string, data TYPE zif_abapgit_html=>ty_data_attr, END OF ty_row_attrs. TYPES: BEGIN OF ty_cell_render, css_class TYPE string, content TYPE string, html TYPE REF TO zif_abapgit_html, END OF ty_cell_render. TYPES: BEGIN OF ty_sorting_state, column_id TYPE string, descending TYPE abap_bool, END OF ty_sorting_state. METHODS get_row_attrs IMPORTING iv_table_id TYPE string iv_row_index TYPE i is_row TYPE any RETURNING VALUE(rs_attrs) TYPE ty_row_attrs RAISING zcx_abapgit_exception. METHODS render_cell IMPORTING iv_table_id TYPE string iv_row_index TYPE i is_row TYPE any iv_column_id TYPE string iv_value TYPE any RETURNING VALUE(rs_render) TYPE ty_cell_render RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_progress . METHODS show IMPORTING !iv_current TYPE i !iv_text TYPE csequence . METHODS set_total IMPORTING !iv_total TYPE i . METHODS off . ENDINTERFACE. INTERFACE zif_abapgit_services_repo . TYPES: BEGIN OF ty_repo_params, name TYPE string, url TYPE string, package TYPE devclass, branch_name TYPE string, display_name TYPE string, folder_logic TYPE string, labels TYPE string, ignore_subpackages TYPE abap_bool, main_lang_only TYPE abap_bool, abap_lang_vers TYPE string, END OF ty_repo_params . ENDINTERFACE. INTERFACE zif_abapgit_frontend_services. TYPES: ty_char1 TYPE c LENGTH 1, ty_gui_release TYPE n LENGTH 4, ty_gui_sp TYPE n LENGTH 2, ty_gui_patch TYPE n LENGTH 2. METHODS file_upload IMPORTING !iv_path TYPE string RETURNING VALUE(rv_xstr) TYPE xstring RAISING zcx_abapgit_exception. METHODS file_download IMPORTING !iv_path TYPE string !iv_xstr TYPE xstring RAISING zcx_abapgit_exception . METHODS show_file_save_dialog IMPORTING !iv_title TYPE string !iv_extension TYPE string !iv_default_filename TYPE string RETURNING VALUE(rv_path) TYPE string RAISING zcx_abapgit_exception. METHODS show_file_open_dialog IMPORTING !iv_title TYPE string !iv_extension TYPE string !iv_default_filename TYPE string RETURNING VALUE(rv_path) TYPE string RAISING zcx_abapgit_exception. METHODS clipboard_export IMPORTING iv_no_auth_check TYPE abap_bool DEFAULT abap_false VALUE(it_data) TYPE STANDARD TABLE RAISING zcx_abapgit_exception. METHODS execute IMPORTING !iv_document TYPE string OPTIONAL !iv_application TYPE string OPTIONAL !iv_parameter TYPE string OPTIONAL !iv_default_directory TYPE string OPTIONAL !iv_maximized TYPE string OPTIONAL !iv_minimized TYPE string OPTIONAL !iv_synchronous TYPE string OPTIONAL !iv_operation TYPE string DEFAULT 'OPEN' RAISING zcx_abapgit_exception. METHODS get_system_directory CHANGING !cv_system_directory TYPE string RAISING zcx_abapgit_exception. METHODS directory_browse IMPORTING iv_window_title TYPE string OPTIONAL iv_initial_folder TYPE string OPTIONAL CHANGING cv_selected_folder TYPE string RAISING zcx_abapgit_exception. METHODS get_file_separator CHANGING cv_file_separator TYPE ty_char1 RAISING zcx_abapgit_exception. METHODS get_gui_version EXPORTING ev_gui_release TYPE ty_gui_release ev_gui_sp TYPE ty_gui_sp ev_gui_patch TYPE ty_gui_patch ev_gui_version_string TYPE string RAISING zcx_abapgit_exception. METHODS directory_exist IMPORTING iv_directory TYPE string RETURNING VALUE(rv_exists) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS directory_create IMPORTING iv_directory TYPE string CHANGING cv_rc TYPE i RAISING zcx_abapgit_exception. METHODS gui_is_available RETURNING VALUE(rv_gui_is_available) TYPE abap_bool. METHODS is_sapgui_for_java RETURNING VALUE(rv_result) TYPE abap_bool. METHODS is_sapgui_for_windows RETURNING VALUE(rv_result) TYPE abap_bool. METHODS is_webgui RETURNING VALUE(rv_is_webgui) TYPE abap_bool. METHODS open_ie_devtools RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_definitions . TYPES: ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY . TYPES: BEGIN OF ty_item_signature, obj_type TYPE tadir-object, obj_name TYPE tadir-obj_name, devclass TYPE devclass, END OF ty_item_signature . TYPES: BEGIN OF ty_obj_namespace, namespace TYPE trnspace-namespace, obj_without_namespace TYPE tadir-obj_name, END OF ty_obj_namespace. TYPES: BEGIN OF ty_item. INCLUDE TYPE ty_item_signature. TYPES: srcsystem TYPE tadir-srcsystem, origlang TYPE tadir-masterlang, inactive TYPE abap_bool, abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version, END OF ty_item . TYPES: ty_items_tt TYPE STANDARD TABLE OF ty_item WITH DEFAULT KEY . TYPES: ty_items_ts TYPE SORTED TABLE OF ty_item WITH UNIQUE KEY obj_type obj_name . TYPES: BEGIN OF ty_file_item, file TYPE zif_abapgit_git_definitions=>ty_file, item TYPE ty_item, END OF ty_file_item . TYPES: ty_files_item_tt TYPE STANDARD TABLE OF ty_file_item WITH DEFAULT KEY . TYPES: ty_files_item_by_file_tt TYPE SORTED TABLE OF ty_file_item WITH UNIQUE KEY file-path file-filename. TYPES: ty_yes_no TYPE c LENGTH 1, ty_yes_no_partial TYPE c LENGTH 1. TYPES: BEGIN OF ty_overwrite. INCLUDE TYPE ty_item. TYPES: state TYPE c LENGTH 2, action TYPE i, icon TYPE icon_d, text TYPE string, decision TYPE ty_yes_no, END OF ty_overwrite . TYPES: ty_overwrite_tt TYPE STANDARD TABLE OF ty_overwrite WITH DEFAULT KEY WITH UNIQUE HASHED KEY object_type_and_name COMPONENTS obj_type obj_name . TYPES: BEGIN OF ty_requirements, met TYPE ty_yes_no, decision TYPE ty_yes_no, END OF ty_requirements . TYPES: BEGIN OF ty_dependencies, met TYPE ty_yes_no, decision TYPE ty_yes_no, END OF ty_dependencies . TYPES: BEGIN OF ty_transport_type, request TYPE trfunction, task TYPE trfunction, END OF ty_transport_type . TYPES: BEGIN OF ty_transport, required TYPE abap_bool, transport TYPE trkorr, type TYPE ty_transport_type, END OF ty_transport . TYPES: BEGIN OF ty_deserialize_checks, overwrite TYPE ty_overwrite_tt, warning_package TYPE ty_overwrite_tt, requirements TYPE ty_requirements, dependencies TYPE ty_dependencies, transport TYPE ty_transport, customizing TYPE ty_transport, END OF ty_deserialize_checks . TYPES: BEGIN OF ty_delete_checks, transport TYPE ty_transport, END OF ty_delete_checks . TYPES: BEGIN OF ty_metadata, class TYPE string, version TYPE string, END OF ty_metadata . TYPES: BEGIN OF ty_repo_file, path TYPE string, filename TYPE string, is_changed TYPE abap_bool, rstate TYPE zif_abapgit_git_definitions=>ty_item_state, lstate TYPE zif_abapgit_git_definitions=>ty_item_state, END OF ty_repo_file . TYPES: ty_repo_file_tt TYPE STANDARD TABLE OF ty_repo_file WITH DEFAULT KEY . TYPES: BEGIN OF ty_object, sha1 TYPE zif_abapgit_git_definitions=>ty_sha1, type TYPE zif_abapgit_git_definitions=>ty_type, data TYPE xstring, adler32 TYPE zif_abapgit_git_definitions=>ty_adler32, index TYPE i, END OF ty_object . TYPES: ty_objects_tt TYPE STANDARD TABLE OF ty_object WITH DEFAULT KEY WITH NON-UNIQUE SORTED KEY sha COMPONENTS sha1 WITH NON-UNIQUE SORTED KEY type COMPONENTS type sha1 . TYPES: BEGIN OF ty_tadir, pgmid TYPE tadir-pgmid, object TYPE tadir-object, obj_name TYPE tadir-obj_name, devclass TYPE tadir-devclass, korrnum TYPE tadir-korrnum, " used by ZCL_ABAPGIT_DEPENDENCIES->RESOLVE delflag TYPE tadir-delflag, genflag TYPE tadir-genflag, path TYPE string, srcsystem TYPE tadir-srcsystem, masterlang TYPE tadir-masterlang, END OF ty_tadir . TYPES: ty_tadir_tt TYPE STANDARD TABLE OF ty_tadir WITH DEFAULT KEY . TYPES: BEGIN OF ty_result, obj_type TYPE tadir-object, obj_name TYPE tadir-obj_name, inactive TYPE abap_bool, path TYPE string, filename TYPE string, package TYPE devclass, match TYPE abap_bool, lstate TYPE zif_abapgit_git_definitions=>ty_item_state, rstate TYPE zif_abapgit_git_definitions=>ty_item_state, packmove TYPE abap_bool, srcsystem TYPE tadir-srcsystem, origlang TYPE tadir-masterlang, END OF ty_result . TYPES: ty_results_tt TYPE STANDARD TABLE OF ty_result WITH DEFAULT KEY WITH NON-UNIQUE SORTED KEY sec_key COMPONENTS obj_type obj_name. TYPES: ty_results_ts_path TYPE HASHED TABLE OF ty_result WITH UNIQUE KEY path filename . TYPES: BEGIN OF ty_stage_files, local TYPE ty_files_item_tt, remote TYPE zif_abapgit_git_definitions=>ty_files_tt, status TYPE ty_results_ts_path, END OF ty_stage_files . TYPES: BEGIN OF ty_tpool. INCLUDE TYPE textpool. TYPES: split TYPE c LENGTH 8. TYPES: END OF ty_tpool . TYPES: ty_tpool_tt TYPE STANDARD TABLE OF ty_tpool WITH DEFAULT KEY . TYPES: BEGIN OF ty_transport_to_branch, branch_name TYPE string, commit_text TYPE string, END OF ty_transport_to_branch . TYPES: BEGIN OF ty_diff, patch_flag TYPE abap_bool, new_num TYPE c LENGTH 6, new TYPE string, result TYPE c LENGTH 1, old_num TYPE c LENGTH 6, old TYPE string, short TYPE abap_bool, beacon TYPE i, END OF ty_diff . TYPES: ty_diffs_tt TYPE STANDARD TABLE OF ty_diff WITH DEFAULT KEY WITH NON-UNIQUE SORTED KEY new_num COMPONENTS new_num WITH NON-UNIQUE SORTED KEY old_num COMPONENTS old_num. TYPES: BEGIN OF ty_count, insert TYPE i, delete TYPE i, update TYPE i, END OF ty_count . TYPES: BEGIN OF ty_ancestor, commit TYPE zif_abapgit_git_definitions=>ty_sha1, tree TYPE zif_abapgit_git_definitions=>ty_sha1, time TYPE string, body TYPE string, END OF ty_ancestor . TYPES: BEGIN OF ty_repo_item, obj_type TYPE tadir-object, obj_name TYPE tadir-obj_name, inactive TYPE abap_bool, sortkey TYPE i, path TYPE string, is_dir TYPE abap_bool, changes TYPE i, lstate TYPE zif_abapgit_git_definitions=>ty_item_state, rstate TYPE zif_abapgit_git_definitions=>ty_item_state, files TYPE ty_repo_file_tt, changed_by TYPE syuname, transport TYPE trkorr, packmove TYPE abap_bool, srcsystem TYPE tadir-srcsystem, origlang TYPE tadir-masterlang, END OF ty_repo_item . TYPES: ty_repo_item_tt TYPE STANDARD TABLE OF ty_repo_item WITH DEFAULT KEY . TYPES: BEGIN OF ty_s_user_settings, max_lines TYPE i, adt_jump_enabled TYPE abap_bool, show_default_repo TYPE abap_bool, link_hints_enabled TYPE abap_bool, link_hint_key TYPE c LENGTH 1, parallel_proc_disabled TYPE abap_bool, icon_scaling TYPE c LENGTH 1, ui_theme TYPE string, hide_sapgui_hint TYPE abap_bool, activate_wo_popup TYPE abap_bool, label_colors TYPE string, default_git_uname TYPE string, default_git_email TYPE string, END OF ty_s_user_settings . TYPES: BEGIN OF ty_list_settings, filter TYPE string, only_favorites TYPE abap_bool, show_details TYPE abap_bool, order_by TYPE string, order_descending TYPE abap_bool, END OF ty_list_settings. TYPES: ty_dokil_tt TYPE STANDARD TABLE OF dokil WITH NON-UNIQUE DEFAULT KEY . TYPES: BEGIN OF ty_col_spec, tech_name TYPE string, display_name TYPE string, css_class TYPE string, add_tz TYPE abap_bool, title TYPE string, allow_order_by TYPE abap_bool, END OF ty_col_spec, ty_col_spec_tt TYPE STANDARD TABLE OF ty_col_spec WITH NON-UNIQUE KEY tech_name. TYPES: ty_proxy_bypass_url TYPE c LENGTH 255, ty_range_proxy_bypass_url TYPE RANGE OF ty_proxy_bypass_url. TYPES: BEGIN OF ty_version, major TYPE i, minor TYPE i, patch TYPE i, prerelase TYPE string, prerelase_patch TYPE i, END OF ty_version. TYPES: ty_deserialization_step TYPE string. TYPES: ty_deserialization_step_tt TYPE STANDARD TABLE OF ty_deserialization_step WITH DEFAULT KEY . TYPES ty_sci_result TYPE c LENGTH 1. CONSTANTS: BEGIN OF c_sci_result, no_run TYPE ty_sci_result VALUE '', failed TYPE ty_sci_result VALUE 'F', warning TYPE ty_sci_result VALUE 'W', passed TYPE ty_sci_result VALUE 'P', END OF c_sci_result. CONSTANTS: BEGIN OF c_diff, unchanged TYPE c LENGTH 1 VALUE ' ', insert TYPE c LENGTH 1 VALUE 'I', delete TYPE c LENGTH 1 VALUE 'D', update TYPE c LENGTH 1 VALUE 'U', END OF c_diff . CONSTANTS: BEGIN OF c_state, " https://git-scm.com/docs/git-status unchanged TYPE zif_abapgit_git_definitions=>ty_item_state VALUE '', added TYPE zif_abapgit_git_definitions=>ty_item_state VALUE 'A', modified TYPE zif_abapgit_git_definitions=>ty_item_state VALUE 'M', deleted TYPE zif_abapgit_git_definitions=>ty_item_state VALUE 'D', mixed TYPE zif_abapgit_git_definitions=>ty_item_state VALUE '*', END OF c_state . CONSTANTS c_english TYPE spras VALUE 'E' ##NO_TEXT. CONSTANTS c_root_dir TYPE string VALUE '/' ##NO_TEXT. CONSTANTS c_dot_abapgit TYPE string VALUE '.abapgit.xml' ##NO_TEXT. CONSTANTS c_author_regex TYPE string VALUE '^(.+) <(.*)> (\d{10})\s?.\d{4}$' ##NO_TEXT. CONSTANTS: BEGIN OF c_action, abapgit_home TYPE string VALUE 'abapgit_home', bg_update TYPE string VALUE 'bg_update', change_order_by TYPE string VALUE 'change_order_by', changelog TYPE string VALUE 'changelog', clipboard TYPE string VALUE 'clipboard', db_display TYPE string VALUE 'db_display', db_edit TYPE string VALUE 'db_edit', direction TYPE string VALUE 'direction', documentation TYPE string VALUE 'documentation', flow TYPE string VALUE 'flow', git_branch_create TYPE string VALUE 'git_branch_create', git_branch_delete TYPE string VALUE 'git_branch_delete', git_branch_merge TYPE string VALUE 'git_branch_merge', git_branch_switch TYPE string VALUE 'git_branch_switch', git_commit TYPE string VALUE 'git_commit', git_pull TYPE string VALUE 'git_pull', git_tag_create TYPE string VALUE 'git_tag_create', git_tag_delete TYPE string VALUE 'git_tag_delete', git_tag_switch TYPE string VALUE 'git_tag_switch', go_back TYPE string VALUE 'go_back', go_background TYPE string VALUE 'go_background', go_background_run TYPE string VALUE 'go_background_run', go_commit TYPE string VALUE 'go_commit', go_db TYPE string VALUE 'go_db', go_debuginfo TYPE string VALUE 'go_debuginfo', go_explore TYPE string VALUE 'go_explore', go_file_diff TYPE string VALUE 'go_file_diff', go_home TYPE string VALUE 'go_home', go_patch TYPE string VALUE 'go_patch', go_repo TYPE string VALUE 'go_repo', go_repo_diff TYPE string VALUE 'go_repo_diff', go_settings TYPE string VALUE 'go_settings', go_settings_personal TYPE string VALUE 'go_settings_personal', go_stage TYPE string VALUE 'go_stage', go_stage_transport TYPE string VALUE 'go_stage_transport', go_tutorial TYPE string VALUE 'go_tutorial', goto_message TYPE string VALUE 'goto_message', goto_source TYPE string VALUE 'goto_source', homepage TYPE string VALUE 'homepage', ie_devtools TYPE string VALUE 'ie_devtools', jump TYPE string VALUE 'jump', jump_transaction TYPE string VALUE 'jump_transaction', jump_transport TYPE string VALUE 'jump_transport', jump_user TYPE string VALUE 'jump_user', performance_test TYPE string VALUE 'performance_test', repo_activate_objects TYPE string VALUE 'repo_activate_objects', repo_add_all_obj_to_trans_req TYPE string VALUE 'repo_add_all_obj_to_trans_req', repo_background TYPE string VALUE 'repo_background', repo_code_inspector TYPE string VALUE 'repo_code_inspector', repo_delete_objects TYPE string VALUE 'repo_delete_objects', repo_infos TYPE string VALUE 'repo_infos', repo_local_settings TYPE string VALUE 'repo_local_settings', repo_log TYPE string VALUE 'repo_log', repo_newoffline TYPE string VALUE 'repo_newoffline', repo_newonline TYPE string VALUE 'repo_newonline', repo_open_in_master_lang TYPE string VALUE 'repo_open_in_master_lang', repo_purge TYPE string VALUE 'repo_purge', repo_refresh TYPE string VALUE 'repo_refresh', repo_refresh_checksums TYPE string VALUE 'repo_refresh_checksums', repo_remote_settings TYPE string VALUE 'repo_remote_settings', repo_remove TYPE string VALUE 'repo_remove', repo_settings TYPE string VALUE 'repo_settings', repo_syntax_check TYPE string VALUE 'repo_syntax_check', repo_toggle_fav TYPE string VALUE 'repo_toggle_fav', repo_transport_to_branch TYPE string VALUE 'repo_transport_to_branch', rfc_compare TYPE string VALUE 'rfc_compare', show_callstack TYPE string VALUE 'show_callstack', show_hotkeys TYPE string VALUE 'show_hotkeys', sponsor TYPE string VALUE 'sponsor', toggle_favorites TYPE string VALUE 'toggle_favorites', url TYPE string VALUE 'url', where_used TYPE string VALUE 'where_used', zip_export TYPE string VALUE 'zip_export', zip_export_transport TYPE string VALUE 'zip_export_transport', zip_import TYPE string VALUE 'zip_import', zip_object TYPE string VALUE 'zip_object', zip_package TYPE string VALUE 'zip_package', zip_transport TYPE string VALUE 'zip_transport', END OF c_action. CONSTANTS c_spagpa_param_repo_key TYPE c LENGTH 20 VALUE 'REPO_KEY' ##NO_TEXT. CONSTANTS c_spagpa_param_package TYPE c LENGTH 20 VALUE 'PACKAGE' ##NO_TEXT. CONSTANTS c_yes TYPE ty_yes_no VALUE 'Y'. CONSTANTS c_no TYPE ty_yes_no VALUE 'N'. CONSTANTS c_partial TYPE ty_yes_no_partial VALUE 'P'. TYPES: ty_method TYPE c LENGTH 1 . TYPES: BEGIN OF ty_stage, file TYPE zif_abapgit_git_definitions=>ty_file, method TYPE ty_method, status TYPE ty_result, END OF ty_stage . TYPES: ty_stage_tt TYPE SORTED TABLE OF ty_stage WITH UNIQUE KEY file-path file-filename . CONSTANTS: BEGIN OF c_method, add TYPE ty_method VALUE 'A', rm TYPE ty_method VALUE 'R', ignore TYPE ty_method VALUE 'I', skip TYPE ty_method VALUE '?', END OF c_method . TYPES: ty_sap_langu_tab TYPE STANDARD TABLE OF langu WITH DEFAULT KEY. TYPES: ty_languages TYPE STANDARD TABLE OF laiso WITH DEFAULT KEY. TYPES: BEGIN OF ty_i18n_params, main_language TYPE sy-langu, main_language_only TYPE abap_bool, translation_languages TYPE ty_languages, use_lxe TYPE abap_bool, END OF ty_i18n_params . TYPES ty_trrngtrkor_tt TYPE RANGE OF trkorr. ENDINTERFACE. INTERFACE zif_abapgit_apack_definitions . TYPES: BEGIN OF ty_dependency, group_id TYPE string, artifact_id TYPE string, version TYPE string, sem_version TYPE zif_abapgit_definitions=>ty_version, git_url TYPE string, target_package TYPE devclass, END OF ty_dependency, ty_dependencies TYPE STANDARD TABLE OF ty_dependency WITH NON-UNIQUE DEFAULT KEY, ty_repository_type TYPE string, BEGIN OF ty_descriptor_wo_dependencies, group_id TYPE string, artifact_id TYPE string, version TYPE string, sem_version TYPE zif_abapgit_definitions=>ty_version, repository_type TYPE ty_repository_type, git_url TYPE string, END OF ty_descriptor_wo_dependencies, BEGIN OF ty_descriptor. INCLUDE TYPE ty_descriptor_wo_dependencies. TYPES: dependencies TYPE ty_dependencies, END OF ty_descriptor, ty_descriptors TYPE STANDARD TABLE OF ty_descriptor WITH NON-UNIQUE DEFAULT KEY. TYPES: BEGIN OF ty_manifest_declaration, clsname TYPE seoclsname, devclass TYPE devclass, END OF ty_manifest_declaration, ty_manifest_declarations TYPE STANDARD TABLE OF ty_manifest_declaration WITH DEFAULT KEY. CONSTANTS c_dot_apack_manifest TYPE string VALUE '.apack-manifest.xml' ##NO_TEXT. CONSTANTS c_repository_type_abapgit TYPE ty_repository_type VALUE 'abapGit' ##NO_TEXT. CONSTANTS c_apack_interface_sap TYPE seoclsname VALUE 'IF_APACK_MANIFEST' ##NO_TEXT. CONSTANTS c_apack_interface_cust TYPE seoclsname VALUE 'ZIF_APACK_MANIFEST' ##NO_TEXT. CONSTANTS c_apack_interface_nspc TYPE seoclsname VALUE '/*/IF_APACK_MANIFEST' ##NO_TEXT. ENDINTERFACE. INTERFACE zif_abapgit_cts_api . TYPES: BEGIN OF ty_transport, obj_type TYPE tadir-object, obj_name TYPE tadir-obj_name, trkorr TYPE trkorr, END OF ty_transport . TYPES: ty_transport_list TYPE SORTED TABLE OF ty_transport WITH NON-UNIQUE KEY obj_type obj_name . TYPES: ty_trkorr_tt TYPE STANDARD TABLE OF trkorr WITH DEFAULT KEY . TYPES: BEGIN OF ty_transport_key, object TYPE e071k-object, objname TYPE e071k-objname, tabkey TYPE e071k-tabkey, END OF ty_transport_key . TYPES: BEGIN OF ty_transport_data, trstatus TYPE e070-trstatus, keys TYPE STANDARD TABLE OF ty_transport_key WITH DEFAULT KEY, END OF ty_transport_data . TYPES: BEGIN OF ty_transport_obj, object TYPE e071-object, obj_name TYPE e071-obj_name, END OF ty_transport_obj . TYPES: ty_transport_obj_tt TYPE STANDARD TABLE OF ty_transport_obj WITH DEFAULT KEY . CONSTANTS: BEGIN OF c_transport_type, wb_request TYPE c LENGTH 1 VALUE 'K', "workbench request wb_repair TYPE c LENGTH 1 VALUE 'R', "workbench repair wb_task TYPE c LENGTH 1 VALUE 'S', "workbench task cust_request TYPE c LENGTH 1 VALUE 'W', "customizing request cust_task TYPE c LENGTH 1 VALUE 'Q', "customizing task END OF c_transport_type . CONSTANTS: BEGIN OF c_transport_category, workbench TYPE c LENGTH 4 VALUE 'SYST', customizing TYPE c LENGTH 4 VALUE 'CUST', END OF c_transport_category . CONSTANTS: BEGIN OF c_transport_mode, insert TYPE c LENGTH 1 VALUE 'I', delete TYPE c LENGTH 1 VALUE 'D', END OF c_transport_mode . CONSTANTS: BEGIN OF c_transport_status, modifiable TYPE c LENGTH 1 VALUE 'D', END OF c_transport_status . METHODS confirm_transport_messages RETURNING VALUE(rv_messages_confirmed) TYPE abap_bool . METHODS create_transport_entries IMPORTING !iv_transport TYPE trkorr !it_table_ins TYPE ANY TABLE OPTIONAL !it_table_upd TYPE ANY TABLE OPTIONAL !it_table_del TYPE ANY TABLE OPTIONAL !iv_tabname TYPE tabname RAISING zcx_abapgit_exception . METHODS get_r3tr_obj_for_limu_obj IMPORTING !iv_object TYPE tadir-object !iv_obj_name TYPE trobj_name EXPORTING !ev_object TYPE tadir-object !ev_obj_name TYPE trobj_name RAISING zcx_abapgit_exception . METHODS get_transports_for_list IMPORTING !it_items TYPE zif_abapgit_definitions=>ty_items_tt RETURNING VALUE(rt_transports) TYPE ty_transport_list RAISING zcx_abapgit_exception . "! Returns the transport request / task the object is currently in "! @parameter is_item | Object "! @parameter rv_transport | Transport request / task "! @raising zcx_abapgit_exception | Object is not in a transport METHODS get_transport_for_object IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item RETURNING VALUE(rv_transport) TYPE trkorr RAISING zcx_abapgit_exception . METHODS insert_transport_object IMPORTING !iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR' !iv_object TYPE tadir-object !iv_obj_name TYPE csequence !iv_package TYPE devclass !iv_language TYPE sy-langu DEFAULT sy-langu !iv_mode TYPE c DEFAULT 'I' EXPORTING !ev_object TYPE tadir-object !ev_obj_name TYPE trobj_name RAISING zcx_abapgit_exception . "! Check if change recording is possible for the given package "! @parameter iv_package | Package "! @parameter rv_possible | Change recording is possible "! @raising zcx_abapgit_exception | Package could not be loaded METHODS is_chrec_possible_for_package IMPORTING !iv_package TYPE devclass RETURNING VALUE(rv_possible) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS list_open_requests_by_user IMPORTING !iv_user TYPE sy-uname DEFAULT sy-uname RETURNING VALUE(rt_trkorr) TYPE ty_trkorr_tt RAISING zcx_abapgit_exception . METHODS list_r3tr_by_request IMPORTING !iv_request TYPE trkorr RETURNING VALUE(rt_list) TYPE ty_transport_obj_tt RAISING zcx_abapgit_exception . METHODS read IMPORTING !iv_trkorr TYPE trkorr RETURNING VALUE(rs_request) TYPE ty_transport_data RAISING zcx_abapgit_exception . METHODS read_description IMPORTING !iv_trkorr TYPE trkorr RETURNING VALUE(rv_description) TYPE string . METHODS read_user IMPORTING !iv_trkorr TYPE trkorr RETURNING VALUE(rv_uname) TYPE uname . METHODS validate_transport_request IMPORTING !iv_transport_request TYPE trkorr RAISING zcx_abapgit_exception . METHODS change_transport_type IMPORTING !iv_transport_request TYPE trkorr !iv_transport_type_from TYPE trfunction !iv_transport_type_to TYPE trfunction RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_data_deserializer . TYPES: BEGIN OF ty_result, type TYPE zif_abapgit_data_config=>ty_config-type, name TYPE zif_abapgit_data_config=>ty_config-name, deletes TYPE REF TO data, updates TYPE REF TO data, inserts TYPE REF TO data, file TYPE zif_abapgit_git_definitions=>ty_file_signature, config TYPE zif_abapgit_git_definitions=>ty_file_signature, END OF ty_result. TYPES: ty_results TYPE STANDARD TABLE OF ty_result WITH KEY type name. METHODS deserialize_check IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo !ii_config TYPE REF TO zif_abapgit_data_config RETURNING VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks-customizing RAISING zcx_abapgit_exception . METHODS deserialize IMPORTING !ii_config TYPE REF TO zif_abapgit_data_config !it_files TYPE zif_abapgit_git_definitions=>ty_files_tt RETURNING VALUE(rt_result) TYPE ty_results RAISING zcx_abapgit_exception . METHODS actualize IMPORTING !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks !it_result TYPE ty_results RETURNING VALUE(rt_accessed_files) TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_gitv2_porcelain . METHODS list_branches IMPORTING !iv_url TYPE string !iv_prefix TYPE string OPTIONAL RETURNING VALUE(ro_list) TYPE REF TO zcl_abapgit_git_branch_list RAISING zcx_abapgit_exception . METHODS list_no_blobs IMPORTING !iv_url TYPE string !iv_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1 RETURNING VALUE(rt_expanded) TYPE zif_abapgit_git_definitions=>ty_expanded_tt RAISING zcx_abapgit_exception . METHODS list_no_blobs_multi IMPORTING !iv_url TYPE string !it_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1_tt RETURNING VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt RAISING zcx_abapgit_exception . METHODS commits_last_year IMPORTING !iv_url TYPE string !it_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1_tt RETURNING VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_tadir . METHODS get_object_package IMPORTING !iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR' !iv_object TYPE tadir-object !iv_obj_name TYPE tadir-obj_name RETURNING VALUE(rv_devclass) TYPE tadir-devclass RAISING zcx_abapgit_exception . METHODS read IMPORTING !iv_package TYPE tadir-devclass !iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false !iv_only_local_objects TYPE abap_bool DEFAULT abap_false !io_dot TYPE REF TO zcl_abapgit_dot_abapgit OPTIONAL !ii_log TYPE REF TO zif_abapgit_log OPTIONAL !it_filter TYPE zif_abapgit_definitions=>ty_tadir_tt OPTIONAL !iv_check_exists TYPE abap_bool DEFAULT abap_true RETURNING VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . METHODS read_single IMPORTING !iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR' !iv_object TYPE tadir-object !iv_obj_name TYPE tadir-obj_name RETURNING VALUE(rs_tadir) TYPE zif_abapgit_definitions=>ty_tadir. ENDINTERFACE. INTERFACE zif_abapgit_oo_object_fnc. CONSTANTS: BEGIN OF c_parts, locals_def TYPE string VALUE 'locals_def', locals_imp TYPE string VALUE 'locals_imp', macros TYPE string VALUE 'macros', testclasses TYPE string VALUE 'testclasses', END OF c_parts. TYPES: BEGIN OF ty_includes, programm TYPE syrepid, END OF ty_includes, ty_includes_tt TYPE STANDARD TABLE OF ty_includes WITH DEFAULT KEY. TYPES: ty_seoclasstx_tt TYPE STANDARD TABLE OF seoclasstx WITH DEFAULT KEY . TYPES: ty_seocompotx_tt TYPE STANDARD TABLE OF seocompotx WITH DEFAULT KEY . TYPES: ty_seosubcotx_tt TYPE STANDARD TABLE OF seosubcotx WITH DEFAULT KEY . TYPES: BEGIN OF ty_obj_attribute, cmpname TYPE seocmpname, attkeyfld TYPE seokeyfld, attbusobj TYPE seobusobj, exposure TYPE seoexpose, END OF ty_obj_attribute . TYPES: ty_obj_attribute_tt TYPE STANDARD TABLE OF ty_obj_attribute WITH DEFAULT KEY WITH NON-UNIQUE SORTED KEY cmpname COMPONENTS cmpname . METHODS: create IMPORTING iv_check TYPE abap_bool iv_package TYPE devclass it_attributes TYPE ty_obj_attribute_tt OPTIONAL CHANGING cg_properties TYPE any RAISING zcx_abapgit_exception, generate_locals IMPORTING is_key TYPE seoclskey it_local_definitions TYPE seop_source_string OPTIONAL it_local_implementations TYPE seop_source_string OPTIONAL it_local_macros TYPE seop_source_string OPTIONAL it_local_test_classes TYPE seop_source_string OPTIONAL iv_package TYPE devclass iv_version TYPE uccheck RAISING zcx_abapgit_exception, deserialize_source IMPORTING is_key TYPE seoclskey it_source TYPE zif_abapgit_definitions=>ty_string_tt iv_package TYPE devclass iv_version TYPE uccheck RAISING zcx_abapgit_exception cx_sy_dyn_call_error, insert_text_pool IMPORTING iv_class_name TYPE seoclsname it_text_pool TYPE textpool_table iv_language TYPE spras iv_state TYPE c DEFAULT 'I' RAISING zcx_abapgit_exception, update_descriptions_class IMPORTING is_key TYPE seoclskey iv_language TYPE spras it_descriptions TYPE ty_seoclasstx_tt, update_descriptions_compo IMPORTING is_key TYPE seoclskey it_descriptions TYPE ty_seocompotx_tt, update_descriptions_subco IMPORTING is_key TYPE seoclskey it_descriptions TYPE ty_seosubcotx_tt, add_to_activation_list IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item RAISING zcx_abapgit_exception, create_sotr IMPORTING iv_object_name TYPE sobj_name iv_package TYPE devclass ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception, create_documentation IMPORTING it_lines TYPE tlinetab iv_id TYPE dokhl-id iv_object_name TYPE dokhl-object iv_language TYPE spras iv_no_masterlang TYPE abap_bool OPTIONAL RAISING zcx_abapgit_exception, delete_documentation IMPORTING iv_id TYPE dokhl-id iv_object_name TYPE dokhl-object iv_language TYPE spras RAISING zcx_abapgit_exception, get_includes IMPORTING iv_object_name TYPE sobj_name RETURNING VALUE(rt_includes) TYPE ty_includes_tt RAISING zcx_abapgit_exception, exists IMPORTING is_object_name TYPE seoclskey RETURNING VALUE(rv_exists) TYPE abap_bool, serialize_abap IMPORTING is_class_key TYPE seoclskey iv_type TYPE seop_include_ext_app OPTIONAL RETURNING VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt RAISING zcx_abapgit_exception cx_sy_dyn_call_error, get_skip_test_classes RETURNING VALUE(rv_skip) TYPE abap_bool, get_class_properties IMPORTING is_class_key TYPE seoclskey RETURNING VALUE(rs_class_properties) TYPE vseoclass RAISING zcx_abapgit_exception, get_interface_properties IMPORTING is_interface_key TYPE seoclskey RETURNING VALUE(rs_interface_properties) TYPE vseointerf RAISING zcx_abapgit_exception, read_text_pool IMPORTING iv_class_name TYPE seoclsname iv_language TYPE spras RETURNING VALUE(rt_text_pool) TYPE textpool_table, read_documentation IMPORTING iv_id TYPE dokhl-id iv_object_name TYPE dokhl-object iv_language TYPE spras RETURNING VALUE(rt_lines) TYPE tlinetab, read_sotr IMPORTING iv_object_name TYPE sobj_name ii_xml TYPE REF TO zif_abapgit_xml_output io_i18n_params TYPE REF TO zcl_abapgit_i18n_params RAISING zcx_abapgit_exception, read_descriptions_class IMPORTING iv_object_name TYPE seoclsname iv_language TYPE spras OPTIONAL RETURNING VALUE(rt_descriptions) TYPE ty_seoclasstx_tt, read_descriptions_compo IMPORTING iv_object_name TYPE seoclsname iv_language TYPE spras OPTIONAL RETURNING VALUE(rt_descriptions) TYPE ty_seocompotx_tt, read_descriptions_subco IMPORTING iv_object_name TYPE seoclsname iv_language TYPE spras OPTIONAL RETURNING VALUE(rt_descriptions) TYPE ty_seosubcotx_tt, delete IMPORTING is_deletion_key TYPE seoclskey RAISING zcx_abapgit_exception, read_superclass IMPORTING iv_classname TYPE seoclsname RETURNING VALUE(rv_superclass) TYPE seoclsname, read_attributes IMPORTING iv_object_name TYPE seoclsname RETURNING VALUE(rt_attributes) TYPE ty_obj_attribute_tt, syntax_check IMPORTING iv_object_name TYPE seoclsname RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_sap_namespace . METHODS exists IMPORTING iv_namespace TYPE trnspace-namespace RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS is_editable IMPORTING iv_namespace TYPE trnspace-namespace RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS split_by_name IMPORTING iv_obj_with_namespace TYPE csequence iv_allow_slash_in_name TYPE abap_bool DEFAULT abap_true RETURNING VALUE(rs_obj_namespace) TYPE zif_abapgit_definitions=>ty_obj_namespace RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_sap_package . TYPES: ty_devclass_tt TYPE STANDARD TABLE OF devclass WITH DEFAULT KEY . TYPES: BEGIN OF ty_create, devclass TYPE devclass, dlvunit TYPE tdevc-dlvunit, component TYPE c LENGTH 20, ctext TYPE c LENGTH 60, parentcl TYPE devclass, pdevclass TYPE c LENGTH 4, as4user TYPE usnam, END OF ty_create. METHODS validate_name RAISING zcx_abapgit_exception . METHODS create IMPORTING !is_package TYPE ty_create RAISING zcx_abapgit_exception . METHODS create_local RAISING zcx_abapgit_exception . METHODS list_subpackages RETURNING VALUE(rt_list) TYPE ty_devclass_tt . METHODS list_superpackages RETURNING VALUE(rt_list) TYPE ty_devclass_tt RAISING zcx_abapgit_exception . METHODS read_parent RETURNING VALUE(rv_parentcl) TYPE devclass RAISING zcx_abapgit_exception . METHODS read_description RETURNING VALUE(rv_description) TYPE string RAISING zcx_abapgit_exception . METHODS read_responsible RETURNING VALUE(rv_responsible) TYPE usnam RAISING zcx_abapgit_exception . METHODS create_child IMPORTING !iv_child TYPE devclass RAISING zcx_abapgit_exception . METHODS exists RETURNING VALUE(rv_bool) TYPE abap_bool . METHODS are_changes_recorded_in_tr_req RETURNING VALUE(rv_are_changes_rec_in_tr_req) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS get_transport_type RETURNING VALUE(rs_transport_type) TYPE zif_abapgit_definitions=>ty_transport_type RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_sap_report. TYPES: BEGIN OF ty_progdir, name TYPE progdir-name, state TYPE progdir-state, sqlx TYPE progdir-sqlx, edtx TYPE progdir-edtx, varcl TYPE progdir-varcl, dbapl TYPE progdir-dbapl, dbna TYPE progdir-dbna, clas TYPE progdir-clas, type TYPE progdir-type, occurs TYPE progdir-occurs, subc TYPE progdir-subc, appl TYPE progdir-appl, secu TYPE progdir-secu, cnam TYPE progdir-cnam, cdat TYPE progdir-cdat, unam TYPE progdir-unam, udat TYPE progdir-udat, vern TYPE progdir-vern, levl TYPE progdir-levl, rstat TYPE progdir-rstat, rmand TYPE progdir-rmand, rload TYPE progdir-rload, fixpt TYPE progdir-fixpt, sset TYPE progdir-sset, sdate TYPE progdir-sdate, stime TYPE progdir-stime, idate TYPE progdir-idate, itime TYPE progdir-itime, ldbname TYPE progdir-ldbname, uccheck TYPE progdir-uccheck, END OF ty_progdir. METHODS read_report IMPORTING iv_name TYPE syrepid iv_state TYPE r3state OPTIONAL is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL RETURNING VALUE(rt_source) TYPE abaptxt255_tab RAISING zcx_abapgit_exception. METHODS insert_report IMPORTING iv_name TYPE syrepid it_source TYPE STANDARD TABLE iv_state TYPE r3state OPTIONAL iv_program_type TYPE c OPTIONAL iv_extension_type TYPE c OPTIONAL iv_package TYPE devclass iv_version TYPE uccheck is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL RAISING zcx_abapgit_exception. METHODS update_report IMPORTING iv_name TYPE syrepid it_source TYPE STANDARD TABLE iv_state TYPE r3state OPTIONAL iv_program_type TYPE c OPTIONAL iv_extension_type TYPE c OPTIONAL iv_package TYPE devclass iv_version TYPE uccheck is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL RETURNING VALUE(rv_updated) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS delete_report IMPORTING iv_name TYPE syrepid iv_raise_error TYPE abap_bool DEFAULT abap_false is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL RAISING zcx_abapgit_exception. METHODS read_progdir IMPORTING iv_name TYPE syrepid iv_state TYPE r3state DEFAULT 'A' RETURNING VALUE(rs_progdir) TYPE ty_progdir RAISING zcx_abapgit_exception. METHODS update_progdir IMPORTING is_progdir TYPE ty_progdir iv_package TYPE devclass iv_state TYPE r3state DEFAULT 'I' RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_lang_definitions . TYPES: BEGIN OF ty_i18n_tpool, language TYPE langu, textpool TYPE zif_abapgit_definitions=>ty_tpool_tt, END OF ty_i18n_tpool, ty_i18n_tpools TYPE STANDARD TABLE OF ty_i18n_tpool. TYPES: BEGIN OF ty_i18n_line, language TYPE langu, lines TYPE tlinetab, END OF ty_i18n_line, ty_i18n_lines TYPE STANDARD TABLE OF ty_i18n_line WITH KEY language. TYPES: ty_langus TYPE STANDARD TABLE OF langu. ENDINTERFACE. INTERFACE zif_abapgit_longtexts . TYPES: BEGIN OF ty_longtext, dokil TYPE dokil, head TYPE thead, lines TYPE tline_tab, END OF ty_longtext . TYPES: ty_longtexts TYPE STANDARD TABLE OF ty_longtext WITH NON-UNIQUE DEFAULT KEY . METHODS changed_by IMPORTING !iv_object_name TYPE tadir-obj_name !iv_longtext_id TYPE dokil-id !it_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt OPTIONAL RETURNING VALUE(rv_user) TYPE syuname RAISING zcx_abapgit_exception . METHODS serialize IMPORTING !iv_longtext_name TYPE string DEFAULT 'LONGTEXTS' !iv_object_name TYPE clike !iv_longtext_id TYPE dokil-id !it_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt OPTIONAL !ii_xml TYPE REF TO zif_abapgit_xml_output !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params RETURNING VALUE(rt_longtexts) TYPE ty_longtexts RAISING zcx_abapgit_exception . METHODS deserialize IMPORTING !iv_longtext_name TYPE string DEFAULT 'LONGTEXTS' !iv_object_name TYPE clike !iv_longtext_id TYPE dokil-id !ii_xml TYPE REF TO zif_abapgit_xml_input !iv_main_language TYPE sy-langu RAISING zcx_abapgit_exception . METHODS delete IMPORTING !iv_object_name TYPE tadir-obj_name !iv_longtext_id TYPE dokil-id RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_object_tabl. CONSTANTS: BEGIN OF c_s_dataname, segment_definition TYPE string VALUE 'SEGMENT_DEFINITION', tabl_extras TYPE string VALUE 'TABL_EXTRAS', END OF c_s_dataname. TYPES: BEGIN OF ty_dd02_text, ddlanguage TYPE dd02t-ddlanguage, ddtext TYPE dd02t-ddtext, END OF ty_dd02_text. TYPES ty_dd02_texts TYPE STANDARD TABLE OF ty_dd02_text WITH DEFAULT KEY. TYPES ty_dd03p_tt TYPE STANDARD TABLE OF dd03p WITH DEFAULT KEY. TYPES: BEGIN OF ty_segment_definition, segmentheader TYPE edisegmhd, segmentdefinition TYPE edisegmdef, segmentstructures TYPE STANDARD TABLE OF edisegstru WITH DEFAULT KEY, END OF ty_segment_definition. TYPES: ty_segment_definitions TYPE STANDARD TABLE OF ty_segment_definition WITH DEFAULT KEY. TYPES: BEGIN OF ty_tabl_extras, tddat TYPE tddat, END OF ty_tabl_extras. TYPES: BEGIN OF ty_internal, dd02v TYPE dd02v, dd09l TYPE dd09l, dd03p TYPE ty_dd03p_tt, dd05m TYPE STANDARD TABLE OF dd05m WITH DEFAULT KEY, dd08v TYPE STANDARD TABLE OF dd08v WITH DEFAULT KEY, dd12v TYPE STANDARD TABLE OF dd12v WITH DEFAULT KEY, dd17v TYPE STANDARD TABLE OF dd17v WITH DEFAULT KEY, dd35v TYPE STANDARD TABLE OF dd35v WITH DEFAULT KEY, dd36m TYPE STANDARD TABLE OF dd36m WITH DEFAULT KEY, dd02_texts TYPE ty_dd02_texts, i18n_langs TYPE STANDARD TABLE OF langu WITH DEFAULT KEY, longtexts TYPE zif_abapgit_longtexts=>ty_longtexts, segment_definitions TYPE ty_segment_definitions, extras TYPE ty_tabl_extras, END OF ty_internal. ENDINTERFACE. INTERFACE zif_abapgit_object . CONSTANTS: BEGIN OF gc_step_id, early TYPE zif_abapgit_definitions=>ty_deserialization_step VALUE `EARLY`, abap TYPE zif_abapgit_definitions=>ty_deserialization_step VALUE `ABAP`, ddic TYPE zif_abapgit_definitions=>ty_deserialization_step VALUE `DDIC`, late TYPE zif_abapgit_definitions=>ty_deserialization_step VALUE `LATE`, END OF gc_step_id. METHODS serialize IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize IMPORTING !iv_package TYPE devclass !io_xml TYPE REF TO zif_abapgit_xml_input !iv_step TYPE zif_abapgit_definitions=>ty_deserialization_step !ii_log TYPE REF TO zif_abapgit_log !iv_transport TYPE trkorr RAISING zcx_abapgit_exception . METHODS delete IMPORTING !iv_package TYPE devclass !iv_transport TYPE trkorr RAISING zcx_abapgit_exception . METHODS exists RETURNING VALUE(rv_bool) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS is_locked RETURNING VALUE(rv_is_locked) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS is_active RETURNING VALUE(rv_active) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS changed_by IMPORTING !iv_extra TYPE string OPTIONAL RETURNING VALUE(rv_user) TYPE syuname RAISING zcx_abapgit_exception . METHODS jump IMPORTING !iv_extra TYPE string OPTIONAL RETURNING VALUE(rv_exit) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS get_metadata RETURNING VALUE(rs_metadata) TYPE zif_abapgit_definitions=>ty_metadata . METHODS get_comparator RETURNING VALUE(ri_comparator) TYPE REF TO zif_abapgit_comparator RAISING zcx_abapgit_exception . METHODS get_deserialize_steps RETURNING VALUE(rt_steps) TYPE zif_abapgit_definitions=>ty_deserialization_step_tt . METHODS get_deserialize_order IMPORTING !it_all_objects TYPE zif_abapgit_definitions=>ty_items_tt RETURNING VALUE(rt_objects_before) TYPE zif_abapgit_definitions=>ty_items_tt. CLASS-METHODS map_filename_to_object IMPORTING !iv_filename TYPE string !iv_path TYPE string OPTIONAL !io_dot TYPE REF TO zcl_abapgit_dot_abapgit OPTIONAL !iv_package TYPE devclass OPTIONAL CHANGING cs_item TYPE zif_abapgit_definitions=>ty_item RAISING zcx_abapgit_exception. CLASS-METHODS map_object_to_filename IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_ext TYPE string !iv_extra TYPE clike CHANGING cv_filename TYPE string RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_objects. TYPES: BEGIN OF ty_serialization, files TYPE zif_abapgit_git_definitions=>ty_files_tt, item TYPE zif_abapgit_definitions=>ty_item, END OF ty_serialization . TYPES: BEGIN OF ty_deserialization, obj TYPE REF TO zif_abapgit_object, xml TYPE REF TO zif_abapgit_xml_input, package TYPE devclass, item TYPE zif_abapgit_definitions=>ty_item, END OF ty_deserialization . TYPES: ty_deserialization_tt TYPE STANDARD TABLE OF ty_deserialization WITH DEFAULT KEY . TYPES: BEGIN OF ty_step_data, step_id TYPE zif_abapgit_definitions=>ty_deserialization_step, order TYPE i, descr TYPE string, syntax_check TYPE abap_bool, objects TYPE ty_deserialization_tt, END OF ty_step_data . TYPES: ty_step_data_tt TYPE STANDARD TABLE OF ty_step_data WITH DEFAULT KEY . CONSTANTS: BEGIN OF c_deserialize_action, " also used to determine priority if object has multiple changes, so don't change order no_support TYPE i VALUE -1, none TYPE i VALUE 0, add TYPE i VALUE 1, update TYPE i VALUE 2, overwrite TYPE i VALUE 3, delete TYPE i VALUE 4, delete_add TYPE i VALUE 5, packmove TYPE i VALUE 6, END OF c_deserialize_action. ENDINTERFACE. INTERFACE zif_abapgit_object_filter . METHODS get_filter RETURNING VALUE(rt_filter) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_merge . TYPES: BEGIN OF ty_merge, repo TYPE REF TO zcl_abapgit_repo_online, source TYPE zif_abapgit_git_definitions=>ty_git_branch, target TYPE zif_abapgit_git_definitions=>ty_git_branch, common TYPE zif_abapgit_definitions=>ty_ancestor, stree TYPE zif_abapgit_git_definitions=>ty_expanded_tt, ttree TYPE zif_abapgit_git_definitions=>ty_expanded_tt, ctree TYPE zif_abapgit_git_definitions=>ty_expanded_tt, result TYPE zif_abapgit_git_definitions=>ty_expanded_tt, stage TYPE REF TO zcl_abapgit_stage, conflict TYPE string, END OF ty_merge . TYPES: BEGIN OF ty_merge_conflict, path TYPE string, filename TYPE string, source_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1, source_data TYPE xstring, target_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1, target_data TYPE xstring, result_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1, result_data TYPE xstring, END OF ty_merge_conflict . TYPES: ty_merge_conflict_tt TYPE STANDARD TABLE OF ty_merge_conflict WITH DEFAULT KEY . METHODS get_conflicts RETURNING VALUE(rt_conflicts) TYPE ty_merge_conflict_tt . METHODS get_result RETURNING VALUE(rs_merge) TYPE ty_merge . METHODS get_source_branch RETURNING VALUE(rv_source_branch) TYPE string . METHODS has_conflicts RETURNING VALUE(rv_conflicts_exists) TYPE abap_bool . METHODS resolve_conflict IMPORTING !is_conflict TYPE ty_merge_conflict RAISING zcx_abapgit_exception . METHODS run RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_stage_logic . METHODS get IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online !ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL RETURNING VALUE(rs_files) TYPE zif_abapgit_definitions=>ty_stage_files RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_dot_abapgit. TYPES: BEGIN OF ty_requirement, component TYPE tdevc-dlvunit, min_release TYPE saprelease, min_patch TYPE sappatchlv, END OF ty_requirement . TYPES: ty_requirement_tt TYPE STANDARD TABLE OF ty_requirement WITH DEFAULT KEY . TYPES: BEGIN OF ty_dot_abapgit, name TYPE string, master_language TYPE spras, i18n_languages TYPE zif_abapgit_definitions=>ty_languages, use_lxe TYPE abap_bool, starting_folder TYPE string, folder_logic TYPE string, ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY, requirements TYPE ty_requirement_tt, version_constant TYPE string, abap_language_version TYPE string, original_system TYPE tadir-srcsystem, END OF ty_dot_abapgit . CONSTANTS: BEGIN OF c_folder_logic, prefix TYPE string VALUE 'PREFIX', full TYPE string VALUE 'FULL', mixed TYPE string VALUE 'MIXED', END OF c_folder_logic, BEGIN OF c_abap_language_version, standard TYPE string VALUE 'standard', key_user TYPE string VALUE 'keyUser', cloud_development TYPE string VALUE 'cloudDevelopment', ignore TYPE string VALUE 'ignore', undefined TYPE string VALUE 'undefined', " any END OF c_abap_language_version. ENDINTERFACE. INTERFACE zif_abapgit_persistence. TYPES: ty_type TYPE c LENGTH 12 . TYPES: ty_value TYPE c LENGTH 12 . TYPES: BEGIN OF ty_content, type TYPE ty_type, value TYPE ty_value, data_str TYPE string, END OF ty_content . TYPES: ty_contents TYPE SORTED TABLE OF ty_content WITH UNIQUE KEY type value . TYPES: BEGIN OF ty_local_checksum, item TYPE zif_abapgit_definitions=>ty_item_signature, files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt, END OF ty_local_checksum. TYPES: BEGIN OF ty_local_settings, display_name TYPE string, ignore_subpackages TYPE abap_bool, write_protected TYPE abap_bool, only_local_objects TYPE abap_bool, code_inspector_check_variant TYPE sci_chkv, block_commit TYPE abap_bool, main_language_only TYPE abap_bool, labels TYPE string, transport_request TYPE trkorr, customizing_request TYPE trkorr, flow TYPE abap_bool, exclude_remote_paths TYPE string_table, END OF ty_local_settings. TYPES: ty_local_checksum_tt TYPE STANDARD TABLE OF ty_local_checksum WITH DEFAULT KEY. TYPES: ty_local_checksum_by_item_tt TYPE SORTED TABLE OF ty_local_checksum WITH NON-UNIQUE KEY item-obj_type item-obj_name. TYPES: BEGIN OF ty_repo_xml, url TYPE string, branch_name TYPE string, selected_commit TYPE zif_abapgit_git_definitions=>ty_sha1, package TYPE devclass, created_by TYPE syuname, created_at TYPE timestampl, deserialized_by TYPE syuname, deserialized_at TYPE timestampl, offline TYPE abap_bool, switched_origin TYPE string, dot_abapgit TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit, head_branch TYPE string, " HEAD symref of the repo, master branch local_settings TYPE ty_local_settings, END OF ty_repo_xml. TYPES: BEGIN OF ty_repo_meta_mask, url TYPE abap_bool, branch_name TYPE abap_bool, selected_commit TYPE abap_bool, package TYPE abap_bool, created_by TYPE abap_bool, created_at TYPE abap_bool, deserialized_by TYPE abap_bool, deserialized_at TYPE abap_bool, offline TYPE abap_bool, switched_origin TYPE abap_bool, dot_abapgit TYPE abap_bool, head_branch TYPE abap_bool, local_settings TYPE abap_bool, END OF ty_repo_meta_mask. TYPES: BEGIN OF ty_repo, key TYPE ty_value. INCLUDE TYPE ty_repo_xml. TYPES: END OF ty_repo. TYPES: ty_repos TYPE STANDARD TABLE OF ty_repo WITH DEFAULT KEY. TYPES: ty_repo_keys TYPE STANDARD TABLE OF ty_repo-key WITH DEFAULT KEY. ENDINTERFACE. INTERFACE zif_abapgit_exit. TYPES: BEGIN OF ty_ci_repo, name TYPE string, clone_url TYPE string, END OF ty_ci_repo. TYPES: ty_ci_repos TYPE TABLE OF ty_ci_repo. TYPES: ty_object_types TYPE STANDARD TABLE OF tadir-object WITH DEFAULT KEY. TYPES: BEGIN OF ty_class_key, clsname TYPE abap_classname, END OF ty_class_key. METHODS adjust_display_commit_url IMPORTING !iv_repo_url TYPE csequence !iv_repo_name TYPE csequence !iv_repo_key TYPE csequence !iv_commit_hash TYPE zif_abapgit_git_definitions=>ty_sha1 CHANGING !cv_display_url TYPE csequence RAISING zcx_abapgit_exception. METHODS adjust_display_filename IMPORTING !is_repo_meta TYPE zif_abapgit_persistence=>ty_repo !iv_filename TYPE string RETURNING VALUE(rv_filename) TYPE string. METHODS allow_sap_objects RETURNING VALUE(rv_allowed) TYPE abap_bool. METHODS change_local_host CHANGING !ct_hosts TYPE zif_abapgit_definitions=>ty_string_tt. METHODS change_max_parallel_processes IMPORTING !iv_package TYPE devclass CHANGING !cv_max_processes TYPE i. METHODS change_proxy_authentication IMPORTING !iv_repo_url TYPE csequence CHANGING !cv_proxy_authentication TYPE abap_bool. METHODS change_proxy_port IMPORTING !iv_repo_url TYPE csequence CHANGING !cv_proxy_port TYPE string. METHODS change_proxy_url IMPORTING !iv_repo_url TYPE csequence CHANGING !cv_proxy_url TYPE string. METHODS change_rfc_server_group CHANGING !cv_group TYPE rzlli_apcl. METHODS change_supported_data_objects CHANGING !ct_objects TYPE zif_abapgit_data_supporter=>ty_objects. METHODS change_supported_object_types CHANGING !ct_types TYPE ty_object_types. METHODS change_tadir IMPORTING !iv_package TYPE devclass !ii_log TYPE REF TO zif_abapgit_log !is_dot_abapgit TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit !iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false !iv_only_local_objects TYPE abap_bool DEFAULT abap_false CHANGING !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt. METHODS create_http_client IMPORTING !iv_url TYPE string RETURNING VALUE(ri_client) TYPE REF TO if_http_client RAISING zcx_abapgit_exception. METHODS custom_serialize_abap_clif IMPORTING !is_class_key TYPE ty_class_key !it_source TYPE zif_abapgit_definitions=>ty_string_tt OPTIONAL RETURNING VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt RAISING zcx_abapgit_exception. METHODS deserialize_postprocess IMPORTING !is_step TYPE zif_abapgit_objects=>ty_step_data !ii_log TYPE REF TO zif_abapgit_log. METHODS determine_transport_request IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo !iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type CHANGING !cv_transport_request TYPE trkorr. METHODS enhance_repo_toolbar IMPORTING !io_menu TYPE REF TO zcl_abapgit_html_toolbar !iv_key TYPE zif_abapgit_persistence=>ty_value !iv_act TYPE string. METHODS get_ci_tests IMPORTING !iv_object TYPE tadir-object CHANGING !ct_ci_repos TYPE ty_ci_repos. METHODS get_ssl_id RETURNING VALUE(rv_ssl_id) TYPE ssfapplssl. METHODS http_client IMPORTING !iv_url TYPE string !ii_client TYPE REF TO if_http_client. METHODS on_event IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result RAISING zcx_abapgit_exception. METHODS pre_calculate_repo_status IMPORTING !is_repo_meta TYPE zif_abapgit_persistence=>ty_repo CHANGING !ct_local TYPE zif_abapgit_definitions=>ty_files_item_tt !ct_remote TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception. METHODS serialize_postprocess IMPORTING !iv_package TYPE devclass !ii_log TYPE REF TO zif_abapgit_log CHANGING !ct_files TYPE zif_abapgit_definitions=>ty_files_item_tt. METHODS validate_before_push IMPORTING !is_comment TYPE zif_abapgit_git_definitions=>ty_comment !io_stage TYPE REF TO zcl_abapgit_stage !io_repo TYPE REF TO zcl_abapgit_repo_online RAISING zcx_abapgit_exception. METHODS wall_message_list IMPORTING !ii_html TYPE REF TO zif_abapgit_html. METHODS wall_message_repo IMPORTING !is_repo_meta TYPE zif_abapgit_persistence=>ty_repo !ii_html TYPE REF TO zif_abapgit_html. ENDINTERFACE. INTERFACE zif_abapgit_gui_jumper. TYPES: ty_bdcdata_tt TYPE STANDARD TABLE OF bdcdata WITH DEFAULT KEY. METHODS jump IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !is_sub_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL !iv_line_number TYPE i OPTIONAL !iv_new_window TYPE abap_bool DEFAULT abap_true RETURNING VALUE(rv_exit) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS jump_adt IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_sub_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name !iv_line_number TYPE i RETURNING VALUE(rv_exit) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS jump_batch_input IMPORTING !iv_tcode TYPE sy-tcode !it_bdcdata TYPE ty_bdcdata_tt !iv_new_window TYPE abap_bool DEFAULT abap_true RAISING zcx_abapgit_exception. METHODS jump_abapgit IMPORTING !iv_language TYPE spras !iv_key TYPE zif_abapgit_persistence=>ty_value RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_persist_repo . METHODS add IMPORTING !iv_url TYPE string OPTIONAL !iv_branch_name TYPE string OPTIONAL !iv_branch TYPE zif_abapgit_git_definitions=>ty_sha1 OPTIONAL !iv_display_name TYPE string OPTIONAL !iv_package TYPE devclass !iv_offline TYPE abap_bool DEFAULT abap_false !is_dot_abapgit TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit RETURNING VALUE(rv_key) TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . METHODS delete IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . METHODS exists IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS list RETURNING VALUE(rt_repos) TYPE zif_abapgit_persistence=>ty_repos RAISING zcx_abapgit_exception . METHODS list_by_keys IMPORTING it_keys TYPE zif_abapgit_persistence=>ty_repo_keys RETURNING VALUE(rt_repos) TYPE zif_abapgit_persistence=>ty_repos RAISING zcx_abapgit_exception . METHODS lock IMPORTING !iv_mode TYPE enqmode !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . METHODS read IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RETURNING VALUE(rs_repo) TYPE zif_abapgit_persistence=>ty_repo RAISING zcx_abapgit_exception zcx_abapgit_not_found . METHODS update_metadata IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !is_meta TYPE zif_abapgit_persistence=>ty_repo_xml !is_change_mask TYPE zif_abapgit_persistence=>ty_repo_meta_mask RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_persist_repo_cs . METHODS update IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !iv_cs_blob TYPE zif_abapgit_persistence=>ty_content-data_str RAISING zcx_abapgit_exception . METHODS delete IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . METHODS read IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RETURNING VALUE(rv_cs_blob) TYPE zif_abapgit_persistence=>ty_content-data_str RAISING zcx_abapgit_exception zcx_abapgit_not_found . ENDINTERFACE. INTERFACE zif_abapgit_persist_user . TYPES ty_favorites TYPE zif_abapgit_persistence=>ty_repo_keys . METHODS get_changes_only RETURNING VALUE(rv_changes_only) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS get_default_git_user_email RETURNING VALUE(rv_email) TYPE string RAISING zcx_abapgit_exception . METHODS get_default_git_user_name RETURNING VALUE(rv_username) TYPE string RAISING zcx_abapgit_exception . METHODS get_diff_unified RETURNING VALUE(rv_diff_unified) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS get_favorites RETURNING VALUE(rt_favorites) TYPE ty_favorites RAISING zcx_abapgit_exception . METHODS get_hide_files RETURNING VALUE(rv_hide) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS get_show_folders RETURNING VALUE(rv_folders) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS get_repo_git_user_email IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url RETURNING VALUE(rv_email) TYPE string RAISING zcx_abapgit_exception . METHODS get_repo_git_user_name IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url RETURNING VALUE(rv_username) TYPE string RAISING zcx_abapgit_exception . METHODS get_repo_last_change_seen IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url RETURNING VALUE(rv_version) TYPE string RAISING zcx_abapgit_exception . METHODS get_repo_login IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url RETURNING VALUE(rv_login) TYPE string RAISING zcx_abapgit_exception . METHODS get_repo_show RETURNING VALUE(rv_key) TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . METHODS is_favorite_repo IMPORTING !iv_repo_key TYPE zif_abapgit_persistence=>ty_repo-key RETURNING VALUE(rv_yes) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS set_default_git_user_email IMPORTING !iv_email TYPE string RAISING zcx_abapgit_exception . METHODS set_default_git_user_name IMPORTING !iv_username TYPE string RAISING zcx_abapgit_exception . METHODS set_repo_git_user_email IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url !iv_email TYPE string RAISING zcx_abapgit_exception . METHODS set_repo_git_user_name IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url !iv_username TYPE string RAISING zcx_abapgit_exception . METHODS set_repo_last_change_seen IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url !iv_version TYPE string RAISING zcx_abapgit_exception . METHODS set_repo_login IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url !iv_login TYPE string RAISING zcx_abapgit_exception . METHODS set_repo_show IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . METHODS toggle_changes_only RETURNING VALUE(rv_changes_only) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS get_order_by RETURNING VALUE(rv_order_by) TYPE string RAISING zcx_abapgit_exception. METHODS set_order_by IMPORTING iv_order_by TYPE string RETURNING VALUE(rv_order_by) TYPE string RAISING zcx_abapgit_exception. METHODS get_order_descending RETURNING VALUE(rv_order_descending) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS set_order_descending IMPORTING iv_order_descending TYPE abap_bool RETURNING VALUE(rv_order_descending) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS get_diff_first RETURNING VALUE(rv_diff_first) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS set_diff_first IMPORTING iv_diff_first TYPE abap_bool RETURNING VALUE(rv_diff_first) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS toggle_diff_unified RETURNING VALUE(rv_diff_unified) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS toggle_favorite IMPORTING !iv_repo_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . METHODS toggle_hide_files RETURNING VALUE(rv_hide) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS toggle_show_folders RETURNING VALUE(rv_folders) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS get_settings RETURNING VALUE(rs_user_settings) TYPE zif_abapgit_definitions=>ty_s_user_settings RAISING zcx_abapgit_exception. METHODS set_settings IMPORTING is_user_settings TYPE zif_abapgit_definitions=>ty_s_user_settings RAISING zcx_abapgit_exception. METHODS get_list_settings RETURNING VALUE(rs_list_settings) TYPE zif_abapgit_definitions=>ty_list_settings RAISING zcx_abapgit_exception. METHODS set_list_settings IMPORTING is_list_settings TYPE zif_abapgit_definitions=>ty_list_settings RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_repo . DATA ms_data TYPE zif_abapgit_persistence=>ty_repo READ-ONLY. METHODS get_key RETURNING VALUE(rv_key) TYPE zif_abapgit_persistence=>ty_value . METHODS get_name RETURNING VALUE(rv_name) TYPE string. METHODS is_offline RETURNING VALUE(rv_offline) TYPE abap_bool . METHODS get_package RETURNING VALUE(rv_package) TYPE zif_abapgit_persistence=>ty_repo-package . METHODS get_local_settings RETURNING VALUE(rs_settings) TYPE zif_abapgit_persistence=>ty_repo-local_settings . METHODS get_tadir_objects RETURNING VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . METHODS get_files_local_filtered IMPORTING !ii_obj_filter TYPE REF TO zif_abapgit_object_filter !ii_log TYPE REF TO zif_abapgit_log OPTIONAL RETURNING VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_item_tt RAISING zcx_abapgit_exception . METHODS get_files_local IMPORTING !ii_log TYPE REF TO zif_abapgit_log OPTIONAL RETURNING VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_item_tt RAISING zcx_abapgit_exception . METHODS get_files_remote IMPORTING !ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL !iv_ignore_files TYPE abap_bool DEFAULT abap_false PREFERRED PARAMETER ii_obj_filter RETURNING VALUE(rt_files) TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception . METHODS refresh IMPORTING !iv_drop_cache TYPE abap_bool DEFAULT abap_false !iv_drop_log TYPE abap_bool DEFAULT abap_true PREFERRED PARAMETER iv_drop_cache RAISING zcx_abapgit_exception . METHODS get_dot_abapgit RETURNING VALUE(ro_dot_abapgit) TYPE REF TO zcl_abapgit_dot_abapgit . METHODS set_dot_abapgit IMPORTING !io_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit RAISING zcx_abapgit_exception . METHODS find_remote_dot_abapgit RETURNING VALUE(ro_dot) TYPE REF TO zcl_abapgit_dot_abapgit RAISING zcx_abapgit_exception . METHODS deserialize IMPORTING !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks !ii_log TYPE REF TO zif_abapgit_log RAISING zcx_abapgit_exception . METHODS deserialize_checks RETURNING VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks RAISING zcx_abapgit_exception . METHODS checksums RETURNING VALUE(ri_checksums) TYPE REF TO zif_abapgit_repo_checksums RAISING zcx_abapgit_exception . METHODS has_remote_source RETURNING VALUE(rv_yes) TYPE abap_bool . ENDINTERFACE. INTERFACE zif_abapgit_repo_checksums. METHODS get RETURNING VALUE(rt_checksums) TYPE zif_abapgit_persistence=>ty_local_checksum_tt. METHODS get_checksums_per_file RETURNING VALUE(rt_checksums) TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt . METHODS rebuild RAISING zcx_abapgit_exception. METHODS update IMPORTING !it_updated_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_repo_listener . METHODS on_meta_change IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !is_meta TYPE zif_abapgit_persistence=>ty_repo_xml !is_change_mask TYPE zif_abapgit_persistence=>ty_repo_meta_mask RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_repo_online. INTERFACES zif_abapgit_repo. METHODS get_url RETURNING VALUE(rv_url) TYPE zif_abapgit_persistence=>ty_repo-url . METHODS get_selected_branch RETURNING VALUE(rv_name) TYPE zif_abapgit_persistence=>ty_repo-branch_name . METHODS set_url IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url RAISING zcx_abapgit_exception . METHODS select_branch IMPORTING !iv_branch_name TYPE zif_abapgit_persistence=>ty_repo-branch_name RAISING zcx_abapgit_exception . METHODS get_selected_commit RETURNING VALUE(rv_selected_commit) TYPE zif_abapgit_persistence=>ty_repo-selected_commit RAISING zcx_abapgit_exception . METHODS get_current_remote RETURNING VALUE(rv_sha1) TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . METHODS select_commit IMPORTING !iv_selected_commit TYPE zif_abapgit_persistence=>ty_repo-selected_commit RAISING zcx_abapgit_exception . METHODS switch_origin IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url !iv_branch TYPE zif_abapgit_persistence=>ty_repo-branch_name OPTIONAL !iv_overwrite TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception . METHODS get_switched_origin RETURNING VALUE(rv_switched_origin) TYPE zif_abapgit_persistence=>ty_repo-switched_origin. METHODS push IMPORTING !is_comment TYPE zif_abapgit_git_definitions=>ty_comment !io_stage TYPE REF TO zcl_abapgit_stage RAISING zcx_abapgit_exception . METHODS create_branch IMPORTING !iv_name TYPE string !iv_from TYPE zif_abapgit_git_definitions=>ty_sha1 OPTIONAL RAISING zcx_abapgit_exception . METHODS check_for_valid_branch RAISING zcx_abapgit_exception . ENDINTERFACE. INTERFACE zif_abapgit_repo_srv . TYPES: ty_repo_list TYPE STANDARD TABLE OF REF TO zif_abapgit_repo WITH DEFAULT KEY, BEGIN OF ty_label, label TYPE string, END OF ty_label, ty_labels TYPE STANDARD TABLE OF ty_label WITH NON-UNIQUE DEFAULT KEY WITH NON-UNIQUE SORTED KEY key_label COMPONENTS label. METHODS init. METHODS delete IMPORTING !ii_repo TYPE REF TO zif_abapgit_repo RAISING zcx_abapgit_exception . METHODS get IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_value RETURNING VALUE(ri_repo) TYPE REF TO zif_abapgit_repo RAISING zcx_abapgit_exception . METHODS is_repo_installed IMPORTING !iv_url TYPE string !iv_target_package TYPE devclass OPTIONAL RETURNING VALUE(rv_installed) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS list IMPORTING !iv_offline TYPE abap_bool DEFAULT abap_undefined RETURNING VALUE(rt_list) TYPE ty_repo_list RAISING zcx_abapgit_exception . METHODS list_favorites IMPORTING !iv_offline TYPE abap_bool DEFAULT abap_undefined RETURNING VALUE(rt_list) TYPE ty_repo_list RAISING zcx_abapgit_exception . METHODS new_offline IMPORTING !iv_name TYPE string !iv_package TYPE devclass !iv_folder_logic TYPE string DEFAULT zif_abapgit_dot_abapgit=>c_folder_logic-full !iv_labels TYPE string OPTIONAL !iv_ign_subpkg TYPE abap_bool DEFAULT abap_false !iv_main_lang_only TYPE abap_bool DEFAULT abap_false !iv_abap_lang_vers TYPE string OPTIONAL RETURNING VALUE(ri_repo) TYPE REF TO zif_abapgit_repo RAISING zcx_abapgit_exception . METHODS new_online IMPORTING !iv_url TYPE string !iv_branch_name TYPE string OPTIONAL !iv_display_name TYPE string OPTIONAL !iv_name TYPE string OPTIONAL !iv_package TYPE devclass !iv_folder_logic TYPE string DEFAULT zif_abapgit_dot_abapgit=>c_folder_logic-prefix !iv_labels TYPE string OPTIONAL !iv_ign_subpkg TYPE abap_bool DEFAULT abap_false !iv_main_lang_only TYPE abap_bool DEFAULT abap_false !iv_abap_lang_vers TYPE string OPTIONAL RETURNING VALUE(ri_repo) TYPE REF TO zif_abapgit_repo RAISING zcx_abapgit_exception . METHODS purge IMPORTING !ii_repo TYPE REF TO zif_abapgit_repo !is_checks TYPE zif_abapgit_definitions=>ty_delete_checks !iv_keep_repo TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_log) TYPE REF TO zif_abapgit_log RAISING zcx_abapgit_exception . METHODS validate_package IMPORTING !iv_package TYPE devclass !iv_ign_subpkg TYPE abap_bool DEFAULT abap_false !iv_chk_exists TYPE abap_bool DEFAULT abap_true RAISING zcx_abapgit_exception . METHODS validate_url IMPORTING !iv_url TYPE string !iv_chk_exists TYPE abap_bool DEFAULT abap_true RAISING zcx_abapgit_exception . METHODS get_repo_from_package IMPORTING !iv_package TYPE devclass !iv_ign_subpkg TYPE abap_bool DEFAULT abap_false EXPORTING VALUE(ei_repo) TYPE REF TO zif_abapgit_repo !ev_reason TYPE string RAISING zcx_abapgit_exception . METHODS get_repo_from_url IMPORTING !iv_url TYPE string EXPORTING !ei_repo TYPE REF TO zif_abapgit_repo !ev_reason TYPE string RAISING zcx_abapgit_exception . METHODS get_label_list RETURNING VALUE(rt_labels) TYPE ty_labels RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_gui_page_flow . TYPES: BEGIN OF ty_path_name, path TYPE string, filename TYPE string, remote_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1, local_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1, END OF ty_path_name. TYPES: ty_path_name_tt TYPE HASHED TABLE OF ty_path_name WITH UNIQUE KEY path filename. TYPES: BEGIN OF ty_feature, BEGIN OF repo, name TYPE string, key TYPE zif_abapgit_persistence=>ty_repo-key, package TYPE devclass, END OF repo, BEGIN OF branch, display_name TYPE string, sha1 TYPE zif_abapgit_git_definitions=>ty_sha1, up_to_date TYPE abap_bool, END OF branch, BEGIN OF pr, title TYPE string, url TYPE string, draft TYPE abap_bool, END OF pr, BEGIN OF transport, trkorr TYPE trkorr, title TYPE string, END OF transport, full_match TYPE abap_bool, changed_files TYPE ty_path_name_tt, changed_objects TYPE zif_abapgit_definitions=>ty_items_ts, END OF ty_feature. TYPES ty_features TYPE STANDARD TABLE OF ty_feature WITH DEFAULT KEY. ENDINTERFACE. INTERFACE zif_abapgit_flow_exit . METHODS toolbar_extras IMPORTING !io_toolbar TYPE REF TO zcl_abapgit_html_toolbar !is_feature TYPE zif_abapgit_gui_page_flow=>ty_feature !iv_index TYPE i . TYPES: BEGIN OF ty_event_result, handled TYPE zif_abapgit_gui_event_handler=>ty_handling_result, refresh TYPE abap_bool, END OF ty_event_result. METHODS on_event IMPORTING ii_event TYPE REF TO zif_abapgit_gui_event it_features TYPE zif_abapgit_gui_page_flow=>ty_features RETURNING VALUE(rs_result) TYPE ty_event_result RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_services_git. TYPES: BEGIN OF ty_commit_fields, repo_key TYPE zif_abapgit_persistence=>ty_repo-key, committer_name TYPE string, committer_email TYPE string, author_name TYPE string, author_email TYPE string, comment TYPE string, body TYPE string, END OF ty_commit_fields. ENDINTERFACE. INTERFACE zif_abapgit_popups . TYPES ty_rows TYPE SORTED TABLE OF i WITH UNIQUE KEY table_line. TYPES: BEGIN OF ty_alv_column, name TYPE string, text TYPE string, length TYPE lvc_outlen, show_icon TYPE abap_bool, center TYPE abap_bool, END OF ty_alv_column, ty_alv_column_tt TYPE TABLE OF ty_alv_column WITH DEFAULT KEY. TYPES: BEGIN OF ty_popup_position, start_column LIKE sy-cucol, start_row LIKE sy-curow, end_column LIKE sy-cucol, end_row LIKE sy-curow, END OF ty_popup_position. CONSTANTS c_new_branch_label TYPE string VALUE '+ create new ...' ##NO_TEXT. METHODS popup_search_help IMPORTING !iv_tab_field TYPE string RETURNING VALUE(rv_value) TYPE ddshretval-fieldval RAISING zcx_abapgit_exception . METHODS popup_folder_logic RETURNING VALUE(rv_folder_logic) TYPE string RAISING zcx_abapgit_exception . METHODS create_branch_popup IMPORTING !iv_source_branch_name TYPE string EXPORTING !ev_name TYPE string !ev_cancel TYPE abap_bool RAISING zcx_abapgit_exception . METHODS branch_list_popup IMPORTING !iv_url TYPE string !iv_default_branch TYPE string OPTIONAL !iv_show_new_option TYPE abap_bool OPTIONAL !iv_hide_branch TYPE zif_abapgit_persistence=>ty_repo-branch_name OPTIONAL !iv_hide_head TYPE abap_bool OPTIONAL RETURNING VALUE(rs_branch) TYPE zif_abapgit_git_definitions=>ty_git_branch RAISING zcx_abapgit_exception . METHODS tag_list_popup IMPORTING !iv_url TYPE string RETURNING VALUE(rs_tag) TYPE zif_abapgit_git_definitions=>ty_git_tag RAISING zcx_abapgit_exception . METHODS commit_list_popup IMPORTING !iv_repo_url TYPE string !iv_branch_name TYPE string OPTIONAL RETURNING VALUE(rs_commit) TYPE zif_abapgit_git_definitions=>ty_commit RAISING zcx_abapgit_exception . TYPES ty_char1 TYPE c LENGTH 1. TYPES ty_icon TYPE c LENGTH 30. METHODS popup_to_confirm IMPORTING !iv_titlebar TYPE clike !iv_text_question TYPE clike !iv_text_button_1 TYPE clike DEFAULT 'Yes' !iv_icon_button_1 TYPE ty_icon DEFAULT space !iv_text_button_2 TYPE clike DEFAULT 'No' !iv_icon_button_2 TYPE ty_icon DEFAULT space !iv_default_button TYPE ty_char1 DEFAULT '1' !iv_display_cancel_button TYPE ty_char1 DEFAULT abap_true !iv_popup_type TYPE clike DEFAULT 'ICON_MESSAGE_QUESTION' RETURNING VALUE(rv_answer) TYPE ty_char1 RAISING zcx_abapgit_exception . METHODS popup_to_create_package IMPORTING is_package_data TYPE zif_abapgit_sap_package=>ty_create OPTIONAL EXPORTING !es_package_data TYPE zif_abapgit_sap_package=>ty_create !ev_create TYPE abap_bool RAISING zcx_abapgit_exception . METHODS popup_to_create_transp_branch IMPORTING !iv_trkorr TYPE trkorr RETURNING VALUE(rs_transport_branch) TYPE zif_abapgit_definitions=>ty_transport_to_branch RAISING zcx_abapgit_exception . METHODS popup_to_select_transport RETURNING VALUE(rv_trkorr) TYPE trkorr . METHODS popup_to_select_from_list IMPORTING !it_list TYPE STANDARD TABLE !iv_title TYPE lvc_title DEFAULT space !iv_header_text TYPE csequence DEFAULT space !iv_start_column TYPE i DEFAULT 10 !iv_end_column TYPE i DEFAULT 125 !iv_start_line TYPE i DEFAULT 10 !iv_end_line TYPE i DEFAULT 30 !iv_striped_pattern TYPE abap_bool DEFAULT abap_false !iv_optimize_col_width TYPE abap_bool DEFAULT abap_true !iv_selection_mode TYPE salv_de_constant DEFAULT if_salv_c_selection_mode=>multiple !iv_select_column_text TYPE csequence DEFAULT space !it_columns_to_display TYPE ty_alv_column_tt !it_preselected_rows TYPE ty_rows OPTIONAL EXPORTING VALUE(et_list) TYPE STANDARD TABLE RAISING zcx_abapgit_exception . METHODS popup_transport_request IMPORTING !is_transport_type TYPE zif_abapgit_definitions=>ty_transport_type OPTIONAL !iv_use_default_transport TYPE abap_bool DEFAULT abap_false PREFERRED PARAMETER is_transport_type RETURNING VALUE(rv_transport) TYPE trkorr RAISING zcx_abapgit_exception . METHODS popup_select_tr_requests IMPORTING is_selection TYPE trwbo_selection iv_title TYPE trwbo_title iv_username_pattern TYPE any DEFAULT sy-uname RETURNING VALUE(rt_r_trkorr) TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt RAISING zcx_abapgit_exception. METHODS popup_select_wb_tc_tr_and_tsk RETURNING VALUE(rt_r_trkorr) TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt RAISING zcx_abapgit_exception. METHODS popup_to_select_labels IMPORTING iv_labels TYPE string OPTIONAL RETURNING VALUE(rv_labels) TYPE string RAISING zcx_abapgit_exception. METHODS choose_code_insp_check_variant RETURNING VALUE(rv_check_variant) TYPE sci_chkv RAISING zcx_abapgit_exception. ENDINTERFACE. INTERFACE zif_abapgit_log . CONSTANTS: BEGIN OF c_status, ok TYPE sy-msgty VALUE 'S', error TYPE sy-msgty VALUE 'E', warning TYPE sy-msgty VALUE 'W', END OF c_status. CONSTANTS: BEGIN OF c_log_level, empty TYPE i VALUE 0, info TYPE i VALUE 1, warning TYPE i VALUE 2, error TYPE i VALUE 3, END OF c_log_level. TYPES: BEGIN OF ty_log_out, type TYPE sy-msgty, text TYPE string, obj_type TYPE tadir-object, obj_name TYPE tadir-obj_name, exception TYPE REF TO cx_root, END OF ty_log_out . TYPES: ty_log_outs TYPE STANDARD TABLE OF ty_log_out WITH NON-UNIQUE DEFAULT KEY . TYPES: BEGIN OF ty_msg, text TYPE string, type TYPE sy-msgty, level TYPE i, END OF ty_msg . TYPES: ty_msgs TYPE STANDARD TABLE OF ty_msg WITH NON-UNIQUE DEFAULT KEY . TYPES: BEGIN OF ty_item_status_out, item TYPE zif_abapgit_definitions=>ty_item, status TYPE sy-msgty, messages TYPE ty_msgs, END OF ty_item_status_out . TYPES: ty_item_status_outs TYPE SORTED TABLE OF ty_item_status_out WITH UNIQUE KEY item-obj_type item-obj_name . METHODS add IMPORTING !iv_msg TYPE csequence !iv_type TYPE sy-msgty DEFAULT 'E' !is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL !ix_exc TYPE REF TO cx_root OPTIONAL . METHODS add_error IMPORTING !iv_msg TYPE csequence !is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL . METHODS add_info IMPORTING !iv_msg TYPE csequence !is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL . METHODS add_warning IMPORTING !iv_msg TYPE csequence !is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL . METHODS add_success IMPORTING !iv_msg TYPE csequence !is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL . METHODS add_exception IMPORTING !ix_exc TYPE REF TO cx_root !is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL . METHODS clear . METHODS count RETURNING VALUE(rv_count) TYPE i . METHODS get_messages RETURNING VALUE(rt_msg) TYPE ty_log_outs . METHODS get_item_status RETURNING VALUE(rt_item_status) TYPE ty_item_status_outs . METHODS get_status RETURNING VALUE(rv_status) TYPE sy-msgty . METHODS get_log_level RETURNING VALUE(rv_level) TYPE i . METHODS get_title RETURNING VALUE(rv_title) TYPE string . METHODS set_title IMPORTING !iv_title TYPE csequence RETURNING VALUE(ri_log) TYPE REF TO zif_abapgit_log. METHODS merge_with IMPORTING ii_log TYPE REF TO zif_abapgit_log iv_min_level TYPE i DEFAULT 0 RETURNING VALUE(ri_log) TYPE REF TO zif_abapgit_log. METHODS clone RETURNING VALUE(ri_log) TYPE REF TO zif_abapgit_log. ENDINTERFACE. INTERFACE zif_abapgit_xml_input . METHODS read IMPORTING !iv_name TYPE clike CHANGING !cg_data TYPE any RAISING zcx_abapgit_exception . METHODS get_raw RETURNING VALUE(ri_raw) TYPE REF TO if_ixml_document . * todo, add read_xml to match add_xml in lcl_xml_output METHODS get_metadata RETURNING VALUE(rs_metadata) TYPE zif_abapgit_definitions=>ty_metadata . ENDINTERFACE. INTERFACE zif_abapgit_xml_output . METHODS add IMPORTING !iv_name TYPE clike !ig_data TYPE any RAISING zcx_abapgit_exception . METHODS set_raw IMPORTING !ii_raw TYPE REF TO if_ixml_element . METHODS add_xml IMPORTING !iv_name TYPE clike !ii_xml TYPE REF TO if_ixml_element . METHODS render IMPORTING !iv_normalize TYPE abap_bool DEFAULT abap_true !is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL RETURNING VALUE(rv_xml) TYPE string . ENDINTERFACE. INTERFACE zif_abapgit_version . CONSTANTS c_xml_version TYPE string VALUE 'v1.0.0' ##NO_TEXT. CONSTANTS c_abap_version TYPE string VALUE '1.130.0' ##NO_TEXT. ENDINTERFACE. CLASS zcl_abapgit_apack_helper DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS are_dependencies_met IMPORTING !it_dependencies TYPE zif_abapgit_apack_definitions=>ty_dependencies RETURNING VALUE(rv_status) TYPE zif_abapgit_definitions=>ty_yes_no RAISING zcx_abapgit_exception . CLASS-METHODS dependencies_popup IMPORTING !it_dependencies TYPE zif_abapgit_apack_definitions=>ty_dependencies RAISING zcx_abapgit_exception . CLASS-METHODS to_file IMPORTING !iv_package TYPE devclass RETURNING VALUE(rs_file) TYPE zif_abapgit_git_definitions=>ty_file RAISING zcx_abapgit_exception . CLASS-METHODS get_manifest_implementations RETURNING VALUE(rt_manifest_implementations) TYPE zif_abapgit_apack_definitions=>ty_manifest_declarations. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_dependency_status, met TYPE zif_abapgit_definitions=>ty_yes_no_partial. INCLUDE TYPE zif_abapgit_apack_definitions=>ty_dependency. TYPES: END OF ty_dependency_status . TYPES: ty_dependency_statuses TYPE STANDARD TABLE OF ty_dependency_status WITH NON-UNIQUE DEFAULT KEY . TYPES: BEGIN OF ty_color_line, exception(1) TYPE c, color TYPE lvc_t_scol. INCLUDE TYPE ty_dependency_status. TYPES: t_hyperlink TYPE salv_t_int4_column, END OF ty_color_line. TYPES: ty_color_tab TYPE STANDARD TABLE OF ty_color_line WITH DEFAULT KEY. CLASS-METHODS get_dependencies_met_status IMPORTING !it_dependencies TYPE zif_abapgit_apack_definitions=>ty_dependencies RETURNING VALUE(rt_status) TYPE ty_dependency_statuses RAISING zcx_abapgit_exception . CLASS-METHODS get_installed_packages RETURNING VALUE(rt_packages) TYPE zif_abapgit_apack_definitions=>ty_descriptors RAISING zcx_abapgit_exception . CLASS-METHODS show_dependencies_popup IMPORTING !it_dependencies TYPE ty_dependency_statuses RAISING zcx_abapgit_exception . CLASS-METHODS get_color_table IMPORTING !io_alv TYPE REF TO cl_salv_table !it_dependencies TYPE ty_dependency_statuses CHANGING !ct_color_table TYPE ty_color_tab RAISING cx_salv_existing. ENDCLASS. CLASS zcl_abapgit_apack_migration DEFINITION FINAL CREATE PRIVATE. PUBLIC SECTION. CONSTANTS: c_apack_interface_version TYPE i VALUE 1. CLASS-METHODS: run RAISING zcx_abapgit_exception. METHODS: perform_migration RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. METHODS interface_exists RETURNING VALUE(rv_interface_exists) TYPE abap_bool . METHODS interface_valid RETURNING VALUE(rv_interface_valid) TYPE abap_bool . METHODS create_interface RAISING zcx_abapgit_exception . METHODS add_interface_source_classic IMPORTING !is_clskey TYPE seoclskey RAISING zcx_abapgit_exception . METHODS add_interface_source IMPORTING !is_clskey TYPE seoclskey RAISING zcx_abapgit_exception . METHODS get_interface_source RETURNING VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt . METHODS add_intf_source_and_activate RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_apack_reader DEFINITION FINAL CREATE PRIVATE . PUBLIC SECTION. TYPES ty_package_name TYPE devclass . CLASS-METHODS create_instance IMPORTING !iv_package_name TYPE ty_package_name RETURNING VALUE(ro_manifest_reader) TYPE REF TO zcl_abapgit_apack_reader . CLASS-METHODS deserialize IMPORTING !iv_package_name TYPE ty_package_name !iv_xstr TYPE xstring RETURNING VALUE(ro_manifest_reader) TYPE REF TO zcl_abapgit_apack_reader RAISING zcx_abapgit_exception. METHODS get_manifest_descriptor RETURNING VALUE(rs_manifest_descriptor) TYPE zif_abapgit_apack_definitions=>ty_descriptor RAISING zcx_abapgit_exception. METHODS set_manifest_descriptor IMPORTING !is_manifest_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor RAISING zcx_abapgit_exception. METHODS copy_manifest_descriptor IMPORTING !io_manifest_provider TYPE REF TO object RAISING zcx_abapgit_exception. METHODS has_manifest RETURNING VALUE(rv_has_manifest) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS constructor IMPORTING !iv_package_name TYPE ty_package_name . METHODS refresh. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_instance, package TYPE ty_package_name, instance TYPE REF TO zcl_abapgit_apack_reader, END OF ty_instance, ty_instances TYPE HASHED TABLE OF ty_instance WITH UNIQUE KEY package. CLASS-DATA gt_instances TYPE ty_instances. DATA mv_package_name TYPE ty_package_name . DATA ms_cached_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor . DATA mv_is_cached TYPE abap_bool . CLASS-METHODS from_xml IMPORTING iv_xml TYPE string RETURNING VALUE(rs_data) TYPE zif_abapgit_apack_definitions=>ty_descriptor. METHODS format_version RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_apack_writer DEFINITION FINAL CREATE PRIVATE . PUBLIC SECTION. CLASS-METHODS create_instance IMPORTING !is_apack_manifest_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor RETURNING VALUE(ro_manifest_writer) TYPE REF TO zcl_abapgit_apack_writer . METHODS serialize RETURNING VALUE(rv_xml) TYPE string RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !is_apack_manifest_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor . PROTECTED SECTION. PRIVATE SECTION. DATA ms_manifest_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor . ENDCLASS. CLASS zcl_abapgit_background DEFINITION CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_method, class TYPE seoclsname, description TYPE string, END OF ty_method. TYPES: ty_methods TYPE SORTED TABLE OF ty_method WITH UNIQUE KEY class. CLASS-METHODS run RAISING zcx_abapgit_exception . CLASS-METHODS list_methods RETURNING VALUE(rt_methods) TYPE ty_methods. CLASS-METHODS enqueue RAISING zcx_abapgit_exception. CLASS-METHODS dequeue. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_enq_type TYPE c LENGTH 12 VALUE 'BACKGROUND'. CONSTANTS c_interface TYPE seoclskey VALUE 'ZIF_ABAPGIT_BACKGROUND'. ENDCLASS. CLASS zcl_abapgit_background_pull DEFINITION CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_background . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_background_push_au DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_background . PROTECTED SECTION. DATA mi_log TYPE REF TO zif_abapgit_log . METHODS build_comment IMPORTING !is_files TYPE zif_abapgit_definitions=>ty_stage_files RETURNING VALUE(rv_comment) TYPE string . METHODS push_auto IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online RAISING zcx_abapgit_exception . METHODS determine_user_details IMPORTING !iv_changed_by TYPE syuname RETURNING VALUE(rs_user) TYPE zif_abapgit_git_definitions=>ty_git_user . METHODS push_deletions IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online !is_files TYPE zif_abapgit_definitions=>ty_stage_files RAISING zcx_abapgit_exception . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_background_push_fi DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_background . PROTECTED SECTION. CONSTANTS: BEGIN OF c_settings, name TYPE string VALUE 'NAME', email TYPE string VALUE 'EMAIL', END OF c_settings . DATA mi_log TYPE REF TO zif_abapgit_log . METHODS build_comment IMPORTING !is_files TYPE zif_abapgit_definitions=>ty_stage_files RETURNING VALUE(rv_comment) TYPE string . METHODS push_fixed IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online !iv_name TYPE string !iv_email TYPE string RAISING zcx_abapgit_exception . PRIVATE SECTION. ENDCLASS. "! Change transport system API CLASS zcl_abapgit_cts_api DEFINITION FINAL CREATE PRIVATE FRIENDS ZCL_abapgit_factory. PUBLIC SECTION. INTERFACES: zif_abapgit_cts_api. PROTECTED SECTION. PRIVATE SECTION. DATA mv_confirm_transp_msgs_called TYPE abap_bool. "! Returns the transport request / task the object is currently locked in "! @parameter iv_program_id | Program ID "! @parameter iv_object_type | Object type "! @parameter iv_object_name | Object name "! @parameter rv_transport | Transport request / task "! @raising zcx_abapgit_exception | Object is not locked in a transport METHODS get_current_transport_for_obj IMPORTING !iv_program_id TYPE pgmid DEFAULT 'R3TR' !iv_object_type TYPE trobjtype !iv_object_name TYPE sobj_name RETURNING VALUE(rv_transport) TYPE trkorr RAISING zcx_abapgit_exception . "! Returns the transport request / task that includes the object (even if not locked) "! @parameter iv_program_id | Program ID "! @parameter iv_object_type | Object type "! @parameter iv_object_name | Object name "! @parameter rv_transport | Transport request / task "! @raising zcx_abapgit_exception | Object is not locked in a transport METHODS get_current_transport_from_db IMPORTING !iv_program_id TYPE pgmid DEFAULT 'R3TR' !iv_object_type TYPE trobjtype !iv_object_name TYPE sobj_name RETURNING VALUE(rv_transport) TYPE trkorr RAISING zcx_abapgit_exception . "! Check if the object is currently locked in a transport "! @parameter iv_program_id | Program ID "! @parameter iv_object_type | Object type "! @parameter iv_object_name | Object name "! @parameter rv_locked | Object is locked "! @raising zcx_abapgit_exception | Object type is not lockable METHODS is_object_locked_in_transport IMPORTING !iv_program_id TYPE pgmid DEFAULT 'R3TR' !iv_object_type TYPE trobjtype !iv_object_name TYPE sobj_name RETURNING VALUE(rv_locked) TYPE abap_bool RAISING zcx_abapgit_exception . "! Check if the object type is lockable "! @parameter iv_program_id | Program ID "! @parameter iv_object_type | Object type "! @parameter rv_lockable | Lockable METHODS is_object_type_lockable IMPORTING !iv_program_id TYPE pgmid DEFAULT 'R3TR' !iv_object_type TYPE trobjtype RETURNING VALUE(rv_lockable) TYPE abap_bool . "! Check if the object type can be transported "! @parameter iv_program_id | Program ID "! @parameter iv_object_type | Object type "! @parameter rv_transportable | Transportable METHODS is_object_type_transportable IMPORTING !iv_program_id TYPE pgmid DEFAULT 'R3TR' !iv_object_type TYPE trobjtype RETURNING VALUE(rv_transportable) TYPE abap_bool . ENDCLASS. CLASS zcl_abapgit_default_transport DEFINITION CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_default_transport. METHODS constructor RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mv_is_set_by_abapgit TYPE abap_bool . DATA ms_save TYPE e070use . METHODS store RAISING zcx_abapgit_exception . METHODS restore RAISING zcx_abapgit_exception . METHODS set_internal IMPORTING !iv_transport TYPE trkorr RAISING zcx_abapgit_exception . METHODS clear IMPORTING !is_default_task TYPE e070use RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_transport DEFINITION CREATE PUBLIC . PUBLIC SECTION. * todo, add interfaces for this class, consider merging zcl_abapgit_transport_mass into this class? CLASS-METHODS zip IMPORTING !iv_show_log_popup TYPE abap_bool DEFAULT abap_true !iv_logic TYPE string OPTIONAL !is_trkorr TYPE trwbo_request_header OPTIONAL RETURNING VALUE(rv_xstr) TYPE xstring RAISING zcx_abapgit_exception . CLASS-METHODS to_tadir IMPORTING !iv_trkorr TYPE trkorr !iv_deleted_objects TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . CLASS-METHODS add_all_objects_to_trans_req IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_value RAISING zcx_abapgit_exception . PROTECTED SECTION. TYPES ty_trkorr_tt TYPE STANDARD TABLE OF trkorr. CLASS-METHODS read_requests IMPORTING !it_trkorr TYPE ty_trkorr_tt RETURNING VALUE(rt_requests) TYPE trwbo_requests RAISING zcx_abapgit_exception . CLASS-METHODS find_top_package IMPORTING !it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt RETURNING VALUE(rv_package) TYPE devclass RAISING zcx_abapgit_exception . CLASS-METHODS resolve IMPORTING !it_requests TYPE trwbo_requests !iv_deleted_objects TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . PRIVATE SECTION. CLASS-METHODS collect_all_objects IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_value RETURNING VALUE(rt_objects) TYPE tr_objects RAISING zcx_abapgit_exception. CLASS-METHODS show_log IMPORTING it_log TYPE sprot_u_tab iv_title TYPE string. ENDCLASS. CLASS zcl_abapgit_transport_2_branch DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS create IMPORTING !io_repository TYPE REF TO zcl_abapgit_repo_online !is_transport_to_branch TYPE zif_abapgit_definitions=>ty_transport_to_branch !it_transport_objects TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . PROTECTED SECTION. METHODS generate_commit_message IMPORTING !is_transport_to_branch TYPE zif_abapgit_definitions=>ty_transport_to_branch RETURNING VALUE(rs_comment) TYPE zif_abapgit_git_definitions=>ty_comment . METHODS stage_transport_objects IMPORTING !it_transport_objects TYPE zif_abapgit_definitions=>ty_tadir_tt !io_stage TYPE REF TO zcl_abapgit_stage !is_stage_objects TYPE zif_abapgit_definitions=>ty_stage_files !it_object_statuses TYPE zif_abapgit_definitions=>ty_results_tt RAISING zcx_abapgit_exception . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_transport_mass DEFINITION INHERITING FROM zcl_abapgit_transport FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS run . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_transport_objects DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS constructor IMPORTING !it_transport_objects TYPE zif_abapgit_definitions=>ty_tadir_tt . METHODS to_stage IMPORTING !io_stage TYPE REF TO zcl_abapgit_stage !is_stage_objects TYPE zif_abapgit_definitions=>ty_stage_files !it_object_statuses TYPE zif_abapgit_definitions=>ty_results_tt RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. DATA mt_transport_objects TYPE zif_abapgit_definitions=>ty_tadir_tt . ENDCLASS. CLASS zcl_abapgit_data_config DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_data_config . PROTECTED SECTION. PRIVATE SECTION. DATA mt_config TYPE zif_abapgit_data_config=>ty_config_tt . METHODS dump IMPORTING !is_config TYPE zif_abapgit_data_config=>ty_config RETURNING VALUE(rv_json) TYPE xstring RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_data_deserializer DEFINITION CREATE PRIVATE FRIENDS ZCL_abapgit_data_factory . PUBLIC SECTION. INTERFACES zif_abapgit_data_deserializer . PROTECTED SECTION. PRIVATE SECTION. METHODS convert_json_to_itab IMPORTING !is_file TYPE zif_abapgit_git_definitions=>ty_file !ir_data TYPE REF TO data RAISING zcx_abapgit_exception . METHODS preview_database_changes IMPORTING !iv_name TYPE tadir-obj_name !ir_lc_data TYPE REF TO data !ir_db_data TYPE REF TO data RETURNING VALUE(rs_result) TYPE zif_abapgit_data_deserializer=>ty_result RAISING zcx_abapgit_exception. METHODS write_database_table IMPORTING !iv_name TYPE tadir-obj_name !ir_del TYPE REF TO data !ir_ins TYPE REF TO data !ir_upd TYPE REF TO data RAISING zcx_abapgit_exception . METHODS read_database_table IMPORTING !iv_name TYPE tadir-obj_name !it_where TYPE string_table RETURNING VALUE(rr_data) TYPE REF TO data RAISING zcx_abapgit_exception . METHODS determine_transport_request IMPORTING io_repo TYPE REF TO zcl_abapgit_repo iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type RETURNING VALUE(rv_transport_request) TYPE trkorr. METHODS is_table_allowed_to_edit IMPORTING !is_result TYPE zif_abapgit_data_deserializer=>ty_result RETURNING VALUE(rv_allowed_to_edit) TYPE abap_bool . ENDCLASS. CLASS zcl_abapgit_data_factory DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS get_supporter RETURNING VALUE(ri_supporter) TYPE REF TO zif_abapgit_data_supporter . CLASS-METHODS get_serializer RETURNING VALUE(ri_serializer) TYPE REF TO zif_abapgit_data_serializer . CLASS-METHODS get_deserializer RETURNING VALUE(ri_deserializer) TYPE REF TO zif_abapgit_data_deserializer . CLASS-METHODS get_config RETURNING VALUE(ri_config) TYPE REF TO zif_abapgit_data_config . PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA gi_supporter TYPE REF TO zif_abapgit_data_supporter . CLASS-DATA gi_serializer TYPE REF TO zif_abapgit_data_serializer . CLASS-DATA gi_deserializer TYPE REF TO zif_abapgit_data_deserializer . ENDCLASS. CLASS zcl_abapgit_data_serializer DEFINITION CREATE PRIVATE FRIENDS ZCL_abapgit_data_factory . PUBLIC SECTION. INTERFACES zif_abapgit_data_serializer . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_max_records TYPE i VALUE 20000 ##NO_TEXT. METHODS convert_itab_to_json IMPORTING !ir_data TYPE REF TO data !iv_skip_initial TYPE abap_bool RETURNING VALUE(rv_data) TYPE xstring RAISING zcx_abapgit_exception . METHODS read_database_table IMPORTING !iv_name TYPE tadir-obj_name !it_where TYPE string_table RETURNING VALUE(rr_data) TYPE REF TO data RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_data_supporter DEFINITION CREATE PRIVATE FRIENDS ZCL_abapgit_data_factory . PUBLIC SECTION. INTERFACES zif_abapgit_data_supporter. PROTECTED SECTION. PRIVATE SECTION. DATA mt_supported_objects TYPE zif_abapgit_data_supporter=>ty_objects. METHODS get_supported_objects. ENDCLASS. CLASS zcl_abapgit_data_utils DEFINITION CREATE PUBLIC. PUBLIC SECTION. TYPES ty_names TYPE STANDARD TABLE OF abap_compname WITH DEFAULT KEY . CLASS-METHODS build_table_itab IMPORTING !iv_name TYPE tadir-obj_name RETURNING VALUE(rr_data) TYPE REF TO data RAISING zcx_abapgit_exception. CLASS-METHODS build_data_filename IMPORTING !is_config TYPE zif_abapgit_data_config=>ty_config RETURNING VALUE(rv_filename) TYPE string. CLASS-METHODS build_config_filename IMPORTING !is_config TYPE zif_abapgit_data_config=>ty_config RETURNING VALUE(rv_filename) TYPE string. CLASS-METHODS jump IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item RAISING zcx_abapgit_exception. CLASS-METHODS does_table_exist IMPORTING !iv_name TYPE tadir-obj_name RETURNING VALUE(rv_exists) TYPE abap_bool. CLASS-METHODS is_customizing_table IMPORTING !iv_name TYPE tadir-obj_name RETURNING VALUE(rv_customizing) TYPE abap_bool. CLASS-METHODS list_key_fields IMPORTING !iv_name TYPE tadir-obj_name RETURNING VALUE(rt_names) TYPE ty_names RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_abap_language_vers DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. CONSTANTS: c_any_abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version VALUE '*', c_no_abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version VALUE '-', c_feature_flag TYPE string VALUE 'ALAV'. METHODS constructor IMPORTING !io_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit. METHODS get_abap_language_vers_by_objt IMPORTING !iv_object_type TYPE trobjtype !iv_package TYPE devclass RETURNING VALUE(rv_allowed_abap_langu_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version. METHODS get_repo_abap_language_version RETURNING VALUE(rv_abap_language_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version. METHODS is_import_allowed IMPORTING !iv_package TYPE devclass RETURNING VALUE(rv_allowed) TYPE abap_bool. CLASS-METHODS check_abap_language_version IMPORTING !iv_abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version !is_item TYPE zif_abapgit_definitions=>ty_item RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit. " Depends on experimental feature flag and repo setting DATA mv_has_abap_language_vers TYPE abap_bool. METHODS get_default_abap_language_vers IMPORTING !iv_object_type TYPE trobjtype RETURNING VALUE(rv_abap_language_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version. METHODS get_abap_language_vers_by_devc IMPORTING !iv_package TYPE devclass RETURNING VALUE(rv_abap_language_version) TYPE string. METHODS get_abap_language_vers_by_repo RETURNING VALUE(rv_abap_language_version) TYPE string. CLASS-METHODS get_description IMPORTING !iv_abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version RETURNING VALUE(rv_description) TYPE string. ENDCLASS. CLASS zcl_abapgit_environment DEFINITION FINAL CREATE PRIVATE FRIENDS ZCL_abapgit_factory . PUBLIC SECTION. INTERFACES zif_abapgit_environment . PROTECTED SECTION. PRIVATE SECTION. DATA mv_cloud TYPE abap_bool VALUE abap_undefined ##NO_TEXT. DATA mv_is_merged TYPE abap_bool VALUE abap_undefined ##NO_TEXT. DATA mv_modifiable TYPE abap_bool VALUE abap_undefined ##NO_TEXT. METHODS is_system_changes_allowed RETURNING VALUE(rv_result) TYPE abap_bool . ENDCLASS. CLASS zcl_abapgit_feature DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. " For dependency injection/testing, use the following " zcl_abapgit_persist_factory=>get_settings( )->read( )->set_experimental_features( ) CLASS-METHODS is_enabled IMPORTING !iv_feature TYPE string OPTIONAL RETURNING VALUE(rv_run) TYPE abap_bool. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. *----------------------------------------------------------------------* * This helper class is used to set and restore the current language. * As some of the SAP functions used rely on SY-LANGU containing the * main language, this class is used to temporarily change and then * restore the value of SY-LANGU. *----------------------------------------------------------------------* CLASS zcl_abapgit_language DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS class_constructor . CLASS-METHODS restore_login_language . CLASS-METHODS set_current_language IMPORTING !iv_language TYPE sy-langu . PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA gv_login_language TYPE sy-langu . ENDCLASS. CLASS zcl_abapgit_settings DEFINITION CREATE PUBLIC . PUBLIC SECTION. CONSTANTS c_commitmsg_comment_length_dft TYPE i VALUE 50 ##NO_TEXT. CONSTANTS c_commitmsg_body_size_dft TYPE i VALUE 72 ##NO_TEXT. CONSTANTS: BEGIN OF c_icon_scaling, large TYPE c VALUE 'L', small TYPE c VALUE 'S', END OF c_icon_scaling . CONSTANTS: BEGIN OF c_ui_theme, default TYPE string VALUE 'default', dark TYPE string VALUE 'dark', belize TYPE string VALUE 'belize', synced_with_gui TYPE string VALUE 'synced_with_gui', END OF c_ui_theme . METHODS set_proxy_url IMPORTING !iv_url TYPE string . METHODS set_proxy_port IMPORTING !iv_port TYPE string . METHODS set_proxy_authentication IMPORTING !iv_auth TYPE abap_bool . METHODS set_proxy_bypass IMPORTING !it_bypass TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url OPTIONAL . METHODS get_proxy_url RETURNING VALUE(rv_proxy_url) TYPE string . METHODS get_proxy_port RETURNING VALUE(rv_port) TYPE string . METHODS get_proxy_authentication RETURNING VALUE(rv_auth) TYPE abap_bool . METHODS get_proxy_bypass RETURNING VALUE(rt_bypass) TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url . METHODS set_run_critical_tests IMPORTING !iv_run TYPE abap_bool . METHODS get_run_critical_tests RETURNING VALUE(rv_run) TYPE abap_bool . METHODS set_experimental_features IMPORTING !iv_features TYPE string. METHODS get_experimental_features RETURNING VALUE(rv_features) TYPE string. METHODS set_max_lines IMPORTING !iv_lines TYPE i . METHODS get_max_lines RETURNING VALUE(rv_lines) TYPE i . METHODS set_adt_jump_enanbled IMPORTING !iv_adt_jump_enabled TYPE abap_bool . METHODS get_adt_jump_enabled RETURNING VALUE(rv_adt_jump_enabled) TYPE abap_bool . METHODS set_commitmsg_comment_length IMPORTING !iv_length TYPE i . METHODS get_commitmsg_comment_length RETURNING VALUE(rv_length) TYPE i . METHODS set_commitmsg_comment_default IMPORTING !iv_default TYPE string . METHODS get_commitmsg_comment_default RETURNING VALUE(rv_default) TYPE string . METHODS set_commitmsg_body_size IMPORTING !iv_length TYPE i . METHODS get_commitmsg_body_size RETURNING VALUE(rv_length) TYPE i . METHODS set_commitmsg_hide_author IMPORTING !iv_hide_author TYPE abap_bool. METHODS get_commitmsg_hide_author RETURNING VALUE(rv_hide_author) TYPE abap_bool. METHODS get_settings_xml RETURNING VALUE(rv_settings_xml) TYPE string RAISING zcx_abapgit_exception . METHODS get_user_settings RETURNING VALUE(rs_settings) TYPE zif_abapgit_definitions=>ty_s_user_settings RAISING zcx_abapgit_exception . METHODS set_xml_settings IMPORTING !iv_settings_xml TYPE string RAISING zcx_abapgit_exception . METHODS set_defaults . METHODS set_user_settings IMPORTING !is_user_settings TYPE zif_abapgit_definitions=>ty_s_user_settings . METHODS get_show_default_repo RETURNING VALUE(rv_show_default_repo) TYPE abap_bool . METHODS set_show_default_repo IMPORTING !iv_show_default_repo TYPE abap_bool . METHODS set_link_hints_enabled IMPORTING !iv_link_hints_enabled TYPE abap_bool . METHODS get_link_hints_enabled RETURNING VALUE(rv_link_hints_enabled) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS set_link_hint_key IMPORTING !iv_link_hint_key TYPE string . METHODS get_link_hint_key RETURNING VALUE(rv_link_hint_key) TYPE string . METHODS set_parallel_proc_disabled IMPORTING !iv_disable_parallel_proc TYPE abap_bool . METHODS get_parallel_proc_disabled RETURNING VALUE(rv_disable_parallel_proc) TYPE abap_bool . METHODS get_icon_scaling RETURNING VALUE(rv_scaling) TYPE zif_abapgit_definitions=>ty_s_user_settings-icon_scaling . METHODS set_icon_scaling IMPORTING !iv_scaling TYPE zif_abapgit_definitions=>ty_s_user_settings-icon_scaling . METHODS get_ui_theme IMPORTING !iv_resolve_synced TYPE abap_bool DEFAULT abap_true RETURNING VALUE(rv_ui_theme) TYPE zif_abapgit_definitions=>ty_s_user_settings-ui_theme . METHODS set_ui_theme IMPORTING !iv_ui_theme TYPE zif_abapgit_definitions=>ty_s_user_settings-ui_theme . METHODS get_activate_wo_popup RETURNING VALUE(rv_act_wo_popup) TYPE zif_abapgit_definitions=>ty_s_user_settings-activate_wo_popup . METHODS set_activate_wo_popup IMPORTING !iv_act_wo_popup TYPE zif_abapgit_definitions=>ty_s_user_settings-activate_wo_popup . METHODS set_default_git_uname IMPORTING !iv_default_git_uname TYPE string. METHODS get_default_git_uname RETURNING VALUE(rv_default_git_uname) TYPE string. METHODS set_default_git_email IMPORTING !iv_default_git_email TYPE string. METHODS get_default_git_email RETURNING VALUE(rv_default_git_email) TYPE string. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_s_settings, proxy_url TYPE string, proxy_port TYPE string, proxy_auth TYPE string, proxy_bypass TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url, run_critical_tests TYPE abap_bool, experimental_features TYPE string, commitmsg_comment_length TYPE i, commitmsg_comment_deflt TYPE string, commitmsg_body_size TYPE i, commitmsg_hide_author TYPE abap_bool, END OF ty_s_settings. DATA: ms_settings TYPE ty_s_settings, ms_user_settings TYPE zif_abapgit_definitions=>ty_s_user_settings. METHODS: set_default_link_hint_key. ENDCLASS. CLASS zcl_abapgit_user_record DEFINITION FINAL CREATE PRIVATE. PUBLIC SECTION. CLASS-METHODS reset. CLASS-METHODS get_instance IMPORTING !iv_user TYPE sy-uname RETURNING VALUE(ro_user) TYPE REF TO zcl_abapgit_user_record. METHODS constructor IMPORTING !iv_user TYPE sy-uname. METHODS get_name RETURNING VALUE(rv_name) TYPE string. METHODS get_email RETURNING VALUE(rv_email) TYPE string. CLASS-METHODS get_title IMPORTING iv_username TYPE sy-uname RETURNING VALUE(rv_title) TYPE string. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_user, user TYPE sy-uname, o_user TYPE REF TO zcl_abapgit_user_record, END OF ty_user. CLASS-DATA gt_user TYPE HASHED TABLE OF ty_user WITH UNIQUE KEY user. DATA: BEGIN OF ms_user, name TYPE string, email TYPE string, END OF ms_user . METHODS check_user_exists IMPORTING iv_user TYPE sy-uname EXPORTING ev_fullname TYPE string ev_email TYPE string RAISING zcx_abapgit_exception. METHODS get_user_dtls_from_other_clnt IMPORTING iv_user TYPE sy-uname. ENDCLASS. CLASS zcl_abapgit_auth DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS is_allowed IMPORTING !iv_authorization TYPE zif_abapgit_auth=>ty_authorization !iv_param TYPE string OPTIONAL RETURNING VALUE(rv_allowed) TYPE abap_bool . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_exit DEFINITION CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_exit. CLASS-METHODS get_instance RETURNING VALUE(ri_exit) TYPE REF TO zif_abapgit_exit. PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA gi_global_exit TYPE REF TO zif_abapgit_exit. CLASS-DATA gi_exit TYPE REF TO zif_abapgit_exit. CLASS-METHODS is_running_in_test_context RETURNING VALUE(rv_running_in_test_context) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_gitv2_porcelain DEFINITION CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_gitv2_porcelain. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_service, receive TYPE string VALUE 'receive', "#EC NOTEXT upload TYPE string VALUE 'upload', "#EC NOTEXT END OF c_service . CONSTANTS c_flush_pkt TYPE c LENGTH 4 VALUE '0000'. CONSTANTS c_delim_pkt TYPE c LENGTH 4 VALUE '0001'. CLASS-METHODS send_command IMPORTING iv_url TYPE string iv_service TYPE string iv_command TYPE string it_arguments TYPE string_table OPTIONAL RETURNING VALUE(rv_response) TYPE xstring RAISING zcx_abapgit_exception. CLASS-METHODS decode_pack IMPORTING iv_xstring TYPE xstring RETURNING VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_git_add_patch DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS: constructor IMPORTING it_diff TYPE zif_abapgit_definitions=>ty_diffs_tt, get_patch RETURNING VALUE(rt_patch) TYPE string_table RAISING zcx_abapgit_exception, get_patch_binary RETURNING VALUE(rv_patch_binary) TYPE xstring RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mt_diff TYPE zif_abapgit_definitions=>ty_diffs_tt, mt_patch TYPE string_table. METHODS: calculate_patch RETURNING VALUE(rt_patch) TYPE string_table RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_git_branch_list DEFINITION CREATE PUBLIC . PUBLIC SECTION. METHODS constructor IMPORTING !iv_data TYPE string RAISING zcx_abapgit_exception . METHODS find_by_name IMPORTING !iv_branch_name TYPE clike RETURNING VALUE(rs_branch) TYPE zif_abapgit_git_definitions=>ty_git_branch RAISING zcx_abapgit_exception . METHODS get_head_symref RETURNING VALUE(rv_head_symref) TYPE string . METHODS get_all RETURNING VALUE(rt_branches) TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt RAISING zcx_abapgit_exception . METHODS get_branches_only RETURNING VALUE(rt_branches) TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt RAISING zcx_abapgit_exception . METHODS get_tags_only " For potential future use RETURNING VALUE(rt_tags) TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt RAISING zcx_abapgit_exception . CLASS-METHODS get_display_name IMPORTING !iv_branch_name TYPE clike RETURNING VALUE(rv_display_name) TYPE string . CLASS-METHODS get_type IMPORTING !iv_branch_name TYPE clike !it_result TYPE string_table OPTIONAL !iv_current_row_index TYPE sy-tabix OPTIONAL RETURNING VALUE(rv_type) TYPE zif_abapgit_git_definitions=>ty_git_branch_type . CLASS-METHODS get_description IMPORTING !iv_branch_name TYPE clike RETURNING VALUE(rv_description) TYPE string. CLASS-METHODS complete_heads_branch_name IMPORTING !iv_branch_name TYPE clike RETURNING VALUE(rv_name) TYPE string . CLASS-METHODS normalize_branch_name IMPORTING !iv_branch_name TYPE clike RETURNING VALUE(rv_name) TYPE string . PROTECTED SECTION. PRIVATE SECTION. DATA mt_branches TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt . DATA mv_head_symref TYPE string . CLASS-METHODS skip_first_pkt IMPORTING !iv_data TYPE string RETURNING VALUE(rv_data) TYPE string RAISING zcx_abapgit_exception . METHODS find_tag_by_name IMPORTING !iv_branch_name TYPE string RETURNING VALUE(rs_branch) TYPE zif_abapgit_git_definitions=>ty_git_branch RAISING zcx_abapgit_exception . CLASS-METHODS parse_branch_list IMPORTING !iv_data TYPE string EXPORTING !et_list TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt !ev_head_symref TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS parse_head_params IMPORTING !iv_data TYPE string RETURNING VALUE(rv_head_symref) TYPE string . ENDCLASS. CLASS zcl_abapgit_git_commit DEFINITION CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_pull_result, commits TYPE zif_abapgit_git_definitions=>ty_commit_tt, commit TYPE zif_abapgit_git_definitions=>ty_sha1, END OF ty_pull_result . CLASS-METHODS get_by_branch IMPORTING !iv_branch_name TYPE string !iv_repo_url TYPE string !iv_deepen_level TYPE i !iv_sorted TYPE abap_bool DEFAULT abap_true RETURNING VALUE(rs_pull_result) TYPE ty_pull_result RAISING zcx_abapgit_exception . CLASS-METHODS get_by_commit IMPORTING !iv_commit_hash TYPE zif_abapgit_git_definitions=>ty_sha1 !iv_repo_url TYPE string !iv_deepen_level TYPE i RETURNING VALUE(rt_commits) TYPE zif_abapgit_git_definitions=>ty_commit_tt RAISING zcx_abapgit_exception . CLASS-METHODS parse_commits IMPORTING !it_objects TYPE zif_abapgit_definitions=>ty_objects_tt RETURNING VALUE(rt_commits) TYPE zif_abapgit_git_definitions=>ty_commit_tt RAISING zcx_abapgit_exception . CLASS-METHODS sort_commits CHANGING !ct_commits TYPE zif_abapgit_git_definitions=>ty_commit_tt RAISING zcx_abapgit_exception . CLASS-METHODS reverse_sort_order CHANGING !ct_commits TYPE zif_abapgit_git_definitions=>ty_commit_tt . CLASS-METHODS clear_missing_parents CHANGING ct_commits TYPE zif_abapgit_git_definitions=>ty_commit_tt . PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_sha1_range TYPE RANGE OF zif_abapgit_git_definitions=>ty_sha1 . CLASS-METHODS get_1st_child_commit IMPORTING it_commit_sha1s TYPE ty_sha1_range EXPORTING et_commit_sha1s TYPE ty_sha1_range es_1st_commit TYPE zif_abapgit_git_definitions=>ty_commit CHANGING ct_commits TYPE zif_abapgit_git_definitions=>ty_commit_tt . CLASS-METHODS is_missing IMPORTING it_commits TYPE zif_abapgit_git_definitions=>ty_commit_tt iv_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1 RETURNING VALUE(rv_result) TYPE abap_bool. CLASS-METHODS extract_author_data IMPORTING !iv_author TYPE string EXPORTING !ev_author TYPE zif_abapgit_git_definitions=>ty_commit-author !ev_email TYPE zif_abapgit_git_definitions=>ty_commit-email !ev_time TYPE zif_abapgit_git_definitions=>ty_commit-time RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_git_factory DEFINITION FINAL CREATE PRIVATE . PUBLIC SECTION. CLASS-METHODS: get_v2_porcelain RETURNING VALUE(ri_v2) TYPE REF TO zif_abapgit_gitv2_porcelain, get_git_transport RETURNING VALUE(ri_git_transport) TYPE REF TO zif_abapgit_git_transport. PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA: gi_git_transport TYPE REF TO zif_abapgit_git_transport. ENDCLASS. CLASS kHGwlHhZbTrIxNkYzsWttffscEwAXR DEFINITION DEFERRED. * renamed: zcl_abapgit_git_pack :: lcl_stream CLASS kHGwlHhZbTrIxNkYzsWttffscEwAXR DEFINITION FINAL. PUBLIC SECTION. TYPES: ty_hex TYPE x LENGTH 1. METHODS: constructor IMPORTING iv_data TYPE xstring, get RETURNING VALUE(rv_data) TYPE xstring, eat_byte RETURNING VALUE(rv_x) TYPE ty_hex, eat_bytes IMPORTING iv_length TYPE i RETURNING VALUE(rv_x) TYPE xstring. PRIVATE SECTION. DATA: mv_data TYPE xstring. ENDCLASS. CLASS zcl_abapgit_git_pack DEFINITION CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_node, chmod TYPE zif_abapgit_git_definitions=>ty_chmod, name TYPE string, sha1 TYPE zif_abapgit_git_definitions=>ty_sha1, END OF ty_node . TYPES: ty_nodes_tt TYPE STANDARD TABLE OF ty_node WITH DEFAULT KEY . TYPES: BEGIN OF ty_commit, tree TYPE zif_abapgit_git_definitions=>ty_sha1, parent TYPE zif_abapgit_git_definitions=>ty_sha1, parent2 TYPE zif_abapgit_git_definitions=>ty_sha1, author TYPE string, committer TYPE string, gpgsig TYPE string, body TYPE string, END OF ty_commit . TYPES: BEGIN OF ty_tag, object TYPE string, type TYPE string, tag TYPE string, tagger_name TYPE string, tagger_email TYPE string, message TYPE string, body TYPE string, END OF ty_tag . CLASS-METHODS decode IMPORTING !iv_data TYPE xstring RETURNING VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt RAISING zcx_abapgit_exception . CLASS-METHODS decode_tree IMPORTING !iv_data TYPE xstring RETURNING VALUE(rt_nodes) TYPE ty_nodes_tt RAISING zcx_abapgit_exception . CLASS-METHODS decode_commit IMPORTING !iv_data TYPE xstring RETURNING VALUE(rs_commit) TYPE ty_commit RAISING zcx_abapgit_exception . CLASS-METHODS decode_tag IMPORTING !iv_data TYPE xstring RETURNING VALUE(rs_tag) TYPE ty_tag RAISING zcx_abapgit_exception . CLASS-METHODS encode IMPORTING !it_objects TYPE zif_abapgit_definitions=>ty_objects_tt RETURNING VALUE(rv_data) TYPE xstring RAISING zcx_abapgit_exception . CLASS-METHODS encode_tree IMPORTING !it_nodes TYPE ty_nodes_tt RETURNING VALUE(rv_data) TYPE xstring RAISING zcx_abapgit_exception . CLASS-METHODS encode_commit IMPORTING !is_commit TYPE ty_commit RETURNING VALUE(rv_data) TYPE xstring RAISING zcx_abapgit_exception . CLASS-METHODS encode_tag IMPORTING !is_tag TYPE ty_tag RETURNING VALUE(rv_data) TYPE xstring RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: c_pack_start TYPE x LENGTH 4 VALUE '5041434B' ##NO_TEXT. CONSTANTS: c_zlib TYPE x LENGTH 2 VALUE '789C' ##NO_TEXT. CONSTANTS: c_zlib_hmm TYPE x LENGTH 2 VALUE '7801' ##NO_TEXT. CONSTANTS: " PACK c_version TYPE x LENGTH 4 VALUE '00000002' ##NO_TEXT. CLASS-METHODS decode_deltas CHANGING !ct_objects TYPE zif_abapgit_definitions=>ty_objects_tt RAISING zcx_abapgit_exception . CLASS-METHODS delta IMPORTING !is_object TYPE zif_abapgit_definitions=>ty_object CHANGING !ct_objects TYPE zif_abapgit_definitions=>ty_objects_tt RAISING zcx_abapgit_exception . CLASS-METHODS delta_header IMPORTING !io_stream TYPE REF TO kHGwlHhZbTrIxNkYzsWttffscEwAXR RETURNING VALUE(rv_header) TYPE i . CLASS-METHODS sort_tree IMPORTING !it_nodes TYPE ty_nodes_tt RETURNING VALUE(rt_nodes) TYPE ty_nodes_tt . CLASS-METHODS get_type IMPORTING !iv_x TYPE x RETURNING VALUE(rv_type) TYPE zif_abapgit_git_definitions=>ty_type RAISING zcx_abapgit_exception . CLASS-METHODS get_length EXPORTING !ev_length TYPE i CHANGING !cv_data TYPE xstring . CLASS-METHODS type_and_length IMPORTING !iv_type TYPE zif_abapgit_git_definitions=>ty_type !iv_length TYPE i RETURNING VALUE(rv_xstring) TYPE xstring RAISING zcx_abapgit_exception . CLASS-METHODS zlib_decompress CHANGING !cv_data TYPE xstring !cv_decompressed TYPE xstring RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_git_porcelain DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_pull_result, files TYPE zif_abapgit_git_definitions=>ty_files_tt, objects TYPE zif_abapgit_definitions=>ty_objects_tt, commit TYPE zif_abapgit_git_definitions=>ty_sha1, END OF ty_pull_result . TYPES: BEGIN OF ty_push_result, new_files TYPE zif_abapgit_git_definitions=>ty_files_tt, branch TYPE zif_abapgit_git_definitions=>ty_sha1, updated_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt, new_objects TYPE zif_abapgit_definitions=>ty_objects_tt, END OF ty_push_result . CLASS-METHODS pull_by_branch IMPORTING !iv_url TYPE string !iv_branch_name TYPE string !iv_deepen_level TYPE i DEFAULT 1 RETURNING VALUE(rs_result) TYPE ty_pull_result RAISING zcx_abapgit_exception . CLASS-METHODS pull_by_commit IMPORTING !iv_url TYPE string !iv_commit_hash TYPE zif_abapgit_git_definitions=>ty_sha1 !iv_deepen_level TYPE i DEFAULT 1 RETURNING VALUE(rs_result) TYPE ty_pull_result RAISING zcx_abapgit_exception . CLASS-METHODS push IMPORTING !is_comment TYPE zif_abapgit_git_definitions=>ty_comment !io_stage TYPE REF TO zcl_abapgit_stage !it_old_objects TYPE zif_abapgit_definitions=>ty_objects_tt !iv_parent TYPE zif_abapgit_git_definitions=>ty_sha1 !iv_url TYPE string !iv_branch_name TYPE string RETURNING VALUE(rs_result) TYPE ty_push_result RAISING zcx_abapgit_exception . CLASS-METHODS create_branch IMPORTING !iv_url TYPE string !iv_name TYPE string !iv_from TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . CLASS-METHODS create_tag IMPORTING !iv_url TYPE string !is_tag TYPE zif_abapgit_git_definitions=>ty_git_tag RAISING zcx_abapgit_exception . CLASS-METHODS delete_branch IMPORTING !iv_url TYPE string !is_branch TYPE zif_abapgit_git_definitions=>ty_git_branch RAISING zcx_abapgit_exception . CLASS-METHODS delete_tag IMPORTING !iv_url TYPE string !is_tag TYPE zif_abapgit_git_definitions=>ty_git_tag RAISING zcx_abapgit_exception . CLASS-METHODS full_tree IMPORTING !it_objects TYPE zif_abapgit_definitions=>ty_objects_tt !iv_parent TYPE zif_abapgit_git_definitions=>ty_sha1 RETURNING VALUE(rt_expanded) TYPE zif_abapgit_git_definitions=>ty_expanded_tt RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_tree, path TYPE string, data TYPE xstring, sha1 TYPE zif_abapgit_git_definitions=>ty_sha1, END OF ty_tree . TYPES: ty_trees_tt TYPE STANDARD TABLE OF ty_tree WITH DEFAULT KEY . TYPES: BEGIN OF ty_folder, path TYPE string, count TYPE i, sha1 TYPE zif_abapgit_git_definitions=>ty_sha1, END OF ty_folder . TYPES: ty_folders_tt TYPE STANDARD TABLE OF ty_folder WITH DEFAULT KEY . CONSTANTS c_zero TYPE zif_abapgit_git_definitions=>ty_sha1 VALUE '0000000000000000000000000000000000000000' ##NO_TEXT. CLASS-METHODS build_trees IMPORTING !it_expanded TYPE zif_abapgit_git_definitions=>ty_expanded_tt RETURNING VALUE(rt_trees) TYPE ty_trees_tt RAISING zcx_abapgit_exception . CLASS-METHODS find_folders IMPORTING !it_expanded TYPE zif_abapgit_git_definitions=>ty_expanded_tt RETURNING VALUE(rt_folders) TYPE ty_folders_tt . CLASS-METHODS pull IMPORTING !iv_commit TYPE zif_abapgit_git_definitions=>ty_sha1 !it_objects TYPE zif_abapgit_definitions=>ty_objects_tt RETURNING VALUE(rt_files) TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception. CLASS-METHODS walk IMPORTING !it_objects TYPE zif_abapgit_definitions=>ty_objects_tt !iv_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1 !iv_path TYPE string CHANGING !ct_files TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception . CLASS-METHODS walk_tree IMPORTING !it_objects TYPE zif_abapgit_definitions=>ty_objects_tt !iv_tree TYPE zif_abapgit_git_definitions=>ty_sha1 !iv_base TYPE string RETURNING VALUE(rt_expanded) TYPE zif_abapgit_git_definitions=>ty_expanded_tt RAISING zcx_abapgit_exception . CLASS-METHODS receive_pack_push IMPORTING !is_comment TYPE zif_abapgit_git_definitions=>ty_comment !it_trees TYPE ty_trees_tt !it_blobs TYPE zif_abapgit_git_definitions=>ty_files_tt !iv_parent TYPE zif_abapgit_git_definitions=>ty_sha1 !iv_parent2 TYPE zif_abapgit_git_definitions=>ty_sha1 OPTIONAL !iv_url TYPE string !iv_branch_name TYPE string EXPORTING !ev_new_commit TYPE zif_abapgit_git_definitions=>ty_sha1 !et_new_objects TYPE zif_abapgit_definitions=>ty_objects_tt !ev_new_tree TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . CLASS-METHODS create_annotated_tag IMPORTING !is_tag TYPE zif_abapgit_git_definitions=>ty_git_tag !iv_url TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS create_lightweight_tag IMPORTING is_tag TYPE zif_abapgit_git_definitions=>ty_git_tag iv_url TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS delete_annotated_tag IMPORTING !iv_url TYPE string !is_tag TYPE zif_abapgit_git_definitions=>ty_git_tag RAISING zcx_abapgit_exception . CLASS-METHODS delete_lightweight_tag IMPORTING !iv_url TYPE string !is_tag TYPE zif_abapgit_git_definitions=>ty_git_tag RAISING zcx_abapgit_exception . CLASS-METHODS empty_packfile RETURNING VALUE(rv_pack) TYPE xstring RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_git_tag DEFINITION CREATE PUBLIC. PUBLIC SECTION. CLASS-METHODS add_tag_prefix IMPORTING !iv_text TYPE csequence RETURNING VALUE(rv_text) TYPE string. CLASS-METHODS remove_tag_prefix IMPORTING !iv_text TYPE string RETURNING VALUE(rv_text) TYPE string. CLASS-METHODS add_peel IMPORTING !iv_text TYPE string RETURNING VALUE(rv_text) TYPE string. CLASS-METHODS remove_peel IMPORTING !iv_text TYPE string RETURNING VALUE(rv_text) TYPE string. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_git_time DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. TYPES: ty_unixtime TYPE c LENGTH 16 . CLASS-METHODS get_unix RETURNING VALUE(rv_time) TYPE ty_unixtime RAISING zcx_abapgit_exception . CLASS-METHODS get_one_year_ago RETURNING VALUE(rv_time) TYPE i RAISING zcx_abapgit_exception . CLASS-METHODS get_utc IMPORTING !iv_unix TYPE ty_unixtime EXPORTING !ev_date TYPE sy-datum !ev_time TYPE sy-uzeit . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_git_transport DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_git_transport. * remote to local CLASS-METHODS upload_pack_by_branch IMPORTING !iv_url TYPE string !iv_branch_name TYPE string !iv_deepen_level TYPE i DEFAULT 1 !it_branches TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt OPTIONAL EXPORTING !et_objects TYPE zif_abapgit_definitions=>ty_objects_tt !ev_branch TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . CLASS-METHODS upload_pack_by_commit IMPORTING !iv_url TYPE string !iv_hash TYPE zif_abapgit_git_definitions=>ty_sha1 OPTIONAL !iv_deepen_level TYPE i DEFAULT 0 EXPORTING !et_objects TYPE zif_abapgit_definitions=>ty_objects_tt !ev_commit TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . * local to remote CLASS-METHODS receive_pack IMPORTING !iv_url TYPE string !iv_old TYPE zif_abapgit_git_definitions=>ty_sha1 !iv_new TYPE zif_abapgit_git_definitions=>ty_sha1 !iv_branch_name TYPE string !iv_pack TYPE xstring OPTIONAL RAISING zcx_abapgit_exception . CLASS-METHODS branches IMPORTING iv_url TYPE string RETURNING VALUE(ro_branch_list) TYPE REF TO zcl_abapgit_git_branch_list RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_service, receive TYPE string VALUE 'receive', "#EC NOTEXT upload TYPE string VALUE 'upload', "#EC NOTEXT END OF c_service . CLASS-METHODS check_report_status IMPORTING !iv_string TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS branch_list IMPORTING !iv_url TYPE string !iv_service TYPE string EXPORTING !eo_client TYPE REF TO zcl_abapgit_http_client !eo_branch_list TYPE REF TO zcl_abapgit_git_branch_list RAISING zcx_abapgit_exception . CLASS-METHODS find_branch IMPORTING !iv_url TYPE string !iv_service TYPE string !iv_branch_name TYPE string EXPORTING !eo_client TYPE REF TO zcl_abapgit_http_client !ev_branch TYPE zif_abapgit_git_definitions=>ty_sha1 !eo_branch_list TYPE REF TO zcl_abapgit_git_branch_list RAISING zcx_abapgit_exception . CLASS-METHODS parse EXPORTING !ev_pack TYPE xstring CHANGING !cv_data TYPE xstring RAISING zcx_abapgit_exception . CLASS-METHODS upload_pack IMPORTING !io_client TYPE REF TO zcl_abapgit_http_client !iv_url TYPE string !iv_deepen_level TYPE i DEFAULT 0 !it_hashes TYPE zif_abapgit_git_definitions=>ty_sha1_tt RETURNING VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_git_utils DEFINITION CREATE PUBLIC . PUBLIC SECTION. TYPES: ty_null TYPE c LENGTH 1 . CLASS-METHODS get_null RETURNING VALUE(rv_c) TYPE ty_null . CLASS-METHODS pkt_string IMPORTING !iv_string TYPE string RETURNING VALUE(rv_pkt) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS length_utf8_hex IMPORTING !iv_data TYPE xstring RETURNING VALUE(rv_len) TYPE i RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_hash DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS adler32 IMPORTING !iv_xstring TYPE xstring RETURNING VALUE(rv_checksum) TYPE zif_abapgit_git_definitions=>ty_adler32 . CLASS-METHODS sha1 IMPORTING !iv_type TYPE zif_abapgit_git_definitions=>ty_type !iv_data TYPE xstring RETURNING VALUE(rv_sha1) TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . CLASS-METHODS sha1_commit IMPORTING !iv_data TYPE xstring RETURNING VALUE(rv_sha1) TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . CLASS-METHODS sha1_tree IMPORTING !iv_data TYPE xstring RETURNING VALUE(rv_sha1) TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . CLASS-METHODS sha1_tag IMPORTING !iv_data TYPE xstring RETURNING VALUE(rv_sha1) TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . CLASS-METHODS sha1_blob IMPORTING !iv_data TYPE xstring RETURNING VALUE(rv_sha1) TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . CLASS-METHODS sha1_raw IMPORTING !iv_data TYPE xstring RETURNING VALUE(rv_sha1) TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . CLASS-METHODS sha1_string IMPORTING !iv_data TYPE string RETURNING VALUE(rv_sha1) TYPE zif_abapgit_git_definitions=>ty_sha1 RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_zlib DEFINITION CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_decompress, raw TYPE xstring, compressed_len TYPE i, END OF ty_decompress . CLASS-METHODS decompress IMPORTING !iv_compressed TYPE xsequence RETURNING VALUE(rs_data) TYPE ty_decompress . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: c_maxdcodes TYPE i VALUE 30. CLASS-DATA: gv_out TYPE xstring, go_lencode TYPE REF TO zcl_abapgit_zlib_huffman, go_distcode TYPE REF TO zcl_abapgit_zlib_huffman, go_stream TYPE REF TO zcl_abapgit_zlib_stream. TYPES: BEGIN OF ty_pair, length TYPE i, distance TYPE i, END OF ty_pair. CLASS-METHODS: decode IMPORTING io_huffman TYPE REF TO zcl_abapgit_zlib_huffman RETURNING VALUE(rv_symbol) TYPE i, map_length IMPORTING iv_code TYPE i RETURNING VALUE(rv_length) TYPE i, map_distance IMPORTING iv_code TYPE i RETURNING VALUE(rv_distance) TYPE i, dynamic, fixed, not_compressed, decode_loop, read_pair IMPORTING iv_length TYPE i RETURNING VALUE(rs_pair) TYPE ty_pair, copy_out IMPORTING is_pair TYPE ty_pair. ENDCLASS. CLASS zcl_abapgit_zlib_convert DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. CLASS-METHODS hex_to_bits IMPORTING !iv_hex TYPE xsequence RETURNING VALUE(rv_bits) TYPE string. CLASS-METHODS bits_to_int IMPORTING !iv_bits TYPE clike RETURNING VALUE(rv_int) TYPE i. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_zlib_huffman DEFINITION CREATE PUBLIC . PUBLIC SECTION. TYPES: ty_lengths TYPE STANDARD TABLE OF i WITH DEFAULT KEY . CONSTANTS c_maxbits TYPE i VALUE 15 ##NO_TEXT. METHODS constructor IMPORTING !it_lengths TYPE ty_lengths . METHODS get_count IMPORTING !iv_index TYPE i RETURNING VALUE(rv_value) TYPE i . METHODS get_symbol IMPORTING !iv_index TYPE i RETURNING VALUE(rv_value) TYPE i . PROTECTED SECTION. PRIVATE SECTION. DATA: mt_count TYPE STANDARD TABLE OF i WITH DEFAULT KEY, mt_symbol TYPE STANDARD TABLE OF i WITH DEFAULT KEY. ENDCLASS. CLASS zcl_abapgit_zlib_stream DEFINITION CREATE PUBLIC . PUBLIC SECTION. METHODS constructor IMPORTING !iv_data TYPE xstring . METHODS take_bits IMPORTING !iv_length TYPE i RETURNING VALUE(rv_bits) TYPE string . METHODS take_int IMPORTING !iv_length TYPE i RETURNING VALUE(rv_int) TYPE i . METHODS remaining RETURNING VALUE(rv_length) TYPE i . "! Take bytes, there's an implicit realignment to start at the beginning of a byte "! i.e. if next bit of current byte is not the first bit, then this byte is skipped "! and the bytes are taken from the next one. "! @parameter iv_length |

"! @parameter rv_bytes |

METHODS take_bytes IMPORTING !iv_length TYPE i RETURNING VALUE(rv_bytes) TYPE xstring . METHODS clear_bits . PROTECTED SECTION. PRIVATE SECTION. DATA mv_bits TYPE string . DATA mv_compressed TYPE xstring . ENDCLASS. CLASS zcl_abapgit_git_url DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS get_commit_display_url IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online RETURNING VALUE(rv_url) TYPE string RAISING zcx_abapgit_exception . METHODS validate_url IMPORTING !iv_url TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. METHODS get_default_commit_display_url IMPORTING !iv_repo_url TYPE string !iv_hash TYPE zif_abapgit_git_definitions=>ty_sha1 RETURNING VALUE(rv_commit_url) TYPE string RAISING zcx_abapgit_exception . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_pr_enum_github DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_pr_enum_provider . METHODS constructor IMPORTING !iv_user_and_repo TYPE string !ii_http_agent TYPE REF TO zif_abapgit_http_agent RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_info, repo_json TYPE REF TO zif_abapgit_ajson, pulls TYPE zif_abapgit_pr_enum_provider=>ty_pull_requests, END OF ty_info. DATA mi_http_agent TYPE REF TO zif_abapgit_http_agent. DATA mv_repo_url TYPE string. METHODS fetch_repo_by_url IMPORTING iv_repo_url TYPE string RETURNING VALUE(rs_info) TYPE ty_info RAISING zcx_abapgit_exception. METHODS convert_list IMPORTING ii_json TYPE REF TO zif_abapgit_ajson RETURNING VALUE(rt_pulls) TYPE zif_abapgit_pr_enum_provider=>ty_pull_requests. METHODS clean_url IMPORTING iv_url TYPE string RETURNING VALUE(rv_url) TYPE string. ENDCLASS. CLASS zcl_abapgit_pr_enumerator DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS constructor IMPORTING iv_url TYPE string RAISING zcx_abapgit_exception. METHODS get_pulls RETURNING VALUE(rt_pulls) TYPE zif_abapgit_pr_enum_provider=>ty_pull_requests RAISING zcx_abapgit_exception. CLASS-METHODS new IMPORTING iv_url TYPE string RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_pr_enumerator RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mv_repo_url TYPE string. DATA mi_enum_provider TYPE REF TO zif_abapgit_pr_enum_provider. CLASS-METHODS create_provider IMPORTING iv_repo_url TYPE string RETURNING VALUE(ri_provider) TYPE REF TO zif_abapgit_pr_enum_provider RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_http DEFINITION CREATE PUBLIC . PUBLIC SECTION. CONSTANTS: BEGIN OF c_scheme, digest TYPE string VALUE 'Digest', END OF c_scheme . CLASS-METHODS get_agent RETURNING VALUE(rv_agent) TYPE string . TYPES: BEGIN OF ty_key_value, key TYPE string, value TYPE string, END OF ty_key_value. TYPES ty_headers TYPE STANDARD TABLE OF ty_key_value WITH DEFAULT KEY. CLASS-METHODS create_by_url IMPORTING !iv_url TYPE string !iv_service TYPE string it_headers TYPE ty_headers OPTIONAL RETURNING VALUE(ro_client) TYPE REF TO zcl_abapgit_http_client RAISING zcx_abapgit_exception . CLASS-METHODS check_connection IMPORTING !iv_url TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. CLASS-METHODS check_auth_requested IMPORTING !ii_client TYPE REF TO if_http_client RETURNING VALUE(rv_auth_requested) TYPE abap_bool RAISING zcx_abapgit_exception . CLASS-METHODS is_local_system IMPORTING !iv_url TYPE string RETURNING VALUE(rv_bool) TYPE abap_bool . CLASS-METHODS acquire_login_details IMPORTING !ii_client TYPE REF TO if_http_client !io_client TYPE REF TO zcl_abapgit_http_client !iv_url TYPE string RETURNING VALUE(rv_scheme) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS get_http_client IMPORTING !iv_url TYPE string RETURNING VALUE(ri_client) TYPE REF TO if_http_client RAISING zcx_abapgit_exception. CLASS-METHODS get_connection_longtext IMPORTING !iv_host TYPE string !iv_ssl_id TYPE ssfapplssl !iv_proxy_host TYPE string !iv_proxy_service TYPE string RETURNING VALUE(rv_longtext) TYPE string. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_http_agent DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_http_agent . CLASS-METHODS create RETURNING VALUE(ri_instance) TYPE REF TO zif_abapgit_http_agent . METHODS constructor. PROTECTED SECTION. PRIVATE SECTION. DATA mo_global_headers TYPE REF TO zcl_abapgit_string_map. CLASS-METHODS attach_payload IMPORTING ii_request TYPE REF TO if_http_request iv_payload TYPE any RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_http_client DEFINITION CREATE PUBLIC. PUBLIC SECTION. METHODS: constructor IMPORTING ii_client TYPE REF TO if_http_client, close, set_digest IMPORTING io_digest TYPE REF TO zcl_abapgit_http_digest, send_receive_close IMPORTING iv_data TYPE xstring RETURNING VALUE(rv_data) TYPE xstring RAISING zcx_abapgit_exception, get_cdata RETURNING VALUE(rv_value) TYPE string, check_http_200 RAISING zcx_abapgit_exception, check_smart_response IMPORTING iv_expected_content_type TYPE string iv_content_regex TYPE string RAISING zcx_abapgit_exception, send_receive RAISING zcx_abapgit_exception, set_headers IMPORTING iv_url TYPE string iv_service TYPE string RAISING zcx_abapgit_exception. METHODS set_header IMPORTING iv_key TYPE string iv_value TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mi_client TYPE REF TO if_http_client, mo_digest TYPE REF TO zcl_abapgit_http_digest. ENDCLASS. CLASS zcl_abapgit_http_digest DEFINITION CREATE PUBLIC . PUBLIC SECTION. METHODS constructor IMPORTING !ii_client TYPE REF TO if_http_client !iv_username TYPE string !iv_password TYPE string RAISING zcx_abapgit_exception. METHODS run IMPORTING !ii_client TYPE REF TO if_http_client RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mv_ha1 TYPE string, mv_username TYPE string, mv_realm TYPE string, mv_qop TYPE string, mv_nonce TYPE string. CLASS-DATA: gv_nc TYPE n LENGTH 8. CLASS-METHODS: md5 IMPORTING iv_data TYPE string RETURNING VALUE(rv_hash) TYPE string RAISING zcx_abapgit_exception. METHODS: hash IMPORTING iv_qop TYPE string iv_nonce TYPE string iv_uri TYPE string iv_method TYPE string iv_cnonse TYPE string RETURNING VALUE(rv_response) TYPE string RAISING zcx_abapgit_exception, parse IMPORTING ii_client TYPE REF TO if_http_client. ENDCLASS. CLASS zcl_abapgit_login_manager DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS load IMPORTING !iv_uri TYPE string RETURNING VALUE(rv_authorization) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS save IMPORTING !iv_uri TYPE string !iv_authorization TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS clear . CLASS-METHODS set IMPORTING !iv_uri TYPE string !iv_username TYPE string !iv_password TYPE string RETURNING VALUE(rv_auth) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS get IMPORTING !iv_uri TYPE string RETURNING VALUE(rv_auth) TYPE string RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_auth, uri TYPE string, authorization TYPE string, END OF ty_auth . CLASS-DATA: gt_auth TYPE TABLE OF ty_auth WITH DEFAULT KEY . CLASS-METHODS append IMPORTING !iv_uri TYPE string !iv_auth TYPE string RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_proxy_auth DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS: run IMPORTING ii_client TYPE REF TO if_http_client RAISING zcx_abapgit_exception. PRIVATE SECTION. CLASS-DATA: gv_username TYPE string, gv_password TYPE string. CLASS-METHODS: enter RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_proxy_config DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS: constructor, get_proxy_url IMPORTING iv_repo_url TYPE csequence OPTIONAL RETURNING VALUE(rv_proxy_url) TYPE string, get_proxy_port IMPORTING iv_repo_url TYPE csequence OPTIONAL RETURNING VALUE(rv_port) TYPE string, get_proxy_authentication IMPORTING iv_repo_url TYPE csequence OPTIONAL RETURNING VALUE(rv_auth) TYPE abap_bool. PROTECTED SECTION. PRIVATE SECTION. DATA: mo_settings TYPE REF TO zcl_abapgit_settings, mi_exit TYPE REF TO zif_abapgit_exit. METHODS: bypass_proxy IMPORTING iv_repo_url TYPE csequence OPTIONAL RETURNING VALUE(rv_bypass_proxy) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_url DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS validate IMPORTING !iv_url TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS host IMPORTING !iv_url TYPE string RETURNING VALUE(rv_host) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS name IMPORTING !iv_url TYPE string !iv_validate TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_name) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS path_name IMPORTING !iv_url TYPE string RETURNING VALUE(rv_path_name) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS is_abapgit_repo IMPORTING !iv_url TYPE string RETURNING VALUE(rv_abapgit) TYPE abap_bool . CLASS-METHODS url_address IMPORTING !iv_url TYPE string RETURNING VALUE(rv_adress) TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS regex IMPORTING !iv_url TYPE string EXPORTING !ev_host TYPE string !ev_path TYPE string !ev_name TYPE string RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_code_inspector DEFINITION CREATE PROTECTED FRIENDS ZCL_abapgit_factory . PUBLIC SECTION. INTERFACES zif_abapgit_code_inspector . METHODS constructor IMPORTING !iv_package TYPE devclass RAISING zcx_abapgit_exception . PROTECTED SECTION. DATA mv_package TYPE devclass . METHODS create_variant IMPORTING !iv_variant TYPE sci_chkv RETURNING VALUE(ro_variant) TYPE REF TO cl_ci_checkvariant RAISING zcx_abapgit_exception . METHODS cleanup IMPORTING !io_set TYPE REF TO cl_ci_objectset RAISING zcx_abapgit_exception . METHODS skip_object IMPORTING !is_obj TYPE scir_objs RETURNING VALUE(rv_skip) TYPE abap_bool. PRIVATE SECTION. DATA mv_success TYPE abap_bool . DATA mv_summary TYPE string. TYPES: ty_run_mode TYPE c LENGTH 1. CONSTANTS: BEGIN OF co_run_mode, run_with_popup TYPE ty_run_mode VALUE 'P', run_after_popup TYPE ty_run_mode VALUE 'A', run_via_rfc TYPE ty_run_mode VALUE 'R', run_in_batch TYPE ty_run_mode VALUE 'B', run_loc_parallel TYPE ty_run_mode VALUE 'L', run_direct TYPE ty_run_mode VALUE 'L', END OF co_run_mode . DATA mo_inspection TYPE REF TO cl_ci_inspection . DATA mv_name TYPE sci_objs . DATA mv_run_mode TYPE c LENGTH 1 . METHODS create_objectset RETURNING VALUE(ro_set) TYPE REF TO cl_ci_objectset . METHODS run_inspection IMPORTING !io_inspection TYPE REF TO cl_ci_inspection RETURNING VALUE(rt_list) TYPE scit_alvlist RAISING zcx_abapgit_exception . METHODS create_inspection IMPORTING !io_set TYPE REF TO cl_ci_objectset !io_variant TYPE REF TO cl_ci_checkvariant RETURNING VALUE(ro_inspection) TYPE REF TO cl_ci_inspection RAISING zcx_abapgit_exception . METHODS decide_run_mode RETURNING VALUE(rv_run_mode) TYPE ty_run_mode . METHODS filter_inspection CHANGING !ct_list TYPE scit_alvlist . ENDCLASS. CLASS zcl_abapgit_where_used_tools DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. TYPES ty_devc_range TYPE RANGE OF tadir-devclass. TYPES: BEGIN OF ty_dependency, package TYPE devclass, obj_type TYPE tadir-object, obj_prog_type TYPE trdir-subc, obj_name TYPE tadir-obj_name, obj_cls TYPE string, dep_package TYPE devclass, dep_obj_type TYPE tadir-object, dep_obj_name TYPE tadir-obj_name, dep_used_cls TYPE string, dep_used_obj TYPE string, END OF ty_dependency. TYPES: ty_dependency_tt TYPE STANDARD TABLE OF ty_dependency WITH DEFAULT KEY. CLASS-METHODS new RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_where_used_tools. " the initial version of this utility is also available as a standalone tool " here: https://github.com/sbcgua/crossdeps METHODS select_external_usages IMPORTING iv_package TYPE tadir-devclass iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false ir_package_scope TYPE ty_devc_range OPTIONAL RETURNING VALUE(rt_objs) TYPE ty_dependency_tt RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_obj_signature, package TYPE devclass, obj_type TYPE tadir-object, obj_name TYPE tadir-obj_name, END OF ty_obj_signature. TYPES ty_where_used_tt TYPE STANDARD TABLE OF rsfindlst WITH DEFAULT KEY. TYPES ty_seu_obj TYPE STANDARD TABLE OF seu_obj WITH DEFAULT KEY. TYPES: BEGIN OF ty_dev_object, type TYPE seu_stype, tadir TYPE trobjtype, END OF ty_dev_object. DATA mt_object_packages TYPE HASHED TABLE OF ty_obj_signature WITH UNIQUE KEY obj_type obj_name. DATA mt_dev_obj_cache TYPE HASHED TABLE OF ty_dev_object WITH UNIQUE KEY type. METHODS get_where_used IMPORTING iv_obj_type TYPE euobj-id iv_obj_name TYPE tadir-obj_name it_scope TYPE ty_seu_obj OPTIONAL ir_package_scope TYPE ty_devc_range OPTIONAL RETURNING VALUE(rt_findings) TYPE ty_where_used_tt RAISING zcx_abapgit_exception. METHODS get_obj_package IMPORTING iv_obj_type TYPE tadir-object iv_obj_name TYPE tadir-obj_name RETURNING VALUE(rv_package) TYPE tadir-devclass. METHODS get_func_package IMPORTING iv_func_name TYPE tadir-obj_name RETURNING VALUE(rv_package) TYPE tadir-devclass. METHODS get_incl_package IMPORTING iv_prog_name TYPE tadir-obj_name RETURNING VALUE(rv_package) TYPE tadir-devclass. METHODS build_package_scope IMPORTING it_tadir TYPE STANDARD TABLE ir_package_scope TYPE ty_devc_range RETURNING VALUE(rt_package_scope) TYPE ty_devc_range. METHODS collect_where_used IMPORTING it_tadir TYPE STANDARD TABLE ir_package_scope TYPE ty_devc_range RETURNING VALUE(rt_objs) TYPE ty_dependency_tt RAISING zcx_abapgit_exception. METHODS convert_list IMPORTING iv_package TYPE ty_dependency-dep_package iv_obj_type TYPE ty_dependency-dep_obj_type iv_obj_name TYPE ty_dependency-dep_obj_name it_where_used TYPE ty_where_used_tt RETURNING VALUE(rt_objs) TYPE ty_dependency_tt. METHODS decode_obj_type IMPORTING iv_type TYPE rsfindlst-object_cls RETURNING VALUE(rv_type) TYPE ty_dev_object-tadir. ENDCLASS. CLASS zcl_abapgit_ajson DEFINITION CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_ajson . ALIASES: is_empty FOR zif_abapgit_ajson~is_empty, exists FOR zif_abapgit_ajson~exists, members FOR zif_abapgit_ajson~members, get FOR zif_abapgit_ajson~get, get_boolean FOR zif_abapgit_ajson~get_boolean, get_integer FOR zif_abapgit_ajson~get_integer, get_number FOR zif_abapgit_ajson~get_number, get_date FOR zif_abapgit_ajson~get_date, get_timestamp FOR zif_abapgit_ajson~get_timestamp, get_string FOR zif_abapgit_ajson~get_string, slice FOR zif_abapgit_ajson~slice, to_abap FOR zif_abapgit_ajson~to_abap, array_to_string_table FOR zif_abapgit_ajson~array_to_string_table. ALIASES: clear FOR zif_abapgit_ajson~clear, set FOR zif_abapgit_ajson~set, setx FOR zif_abapgit_ajson~setx, set_boolean FOR zif_abapgit_ajson~set_boolean, set_string FOR zif_abapgit_ajson~set_string, set_integer FOR zif_abapgit_ajson~set_integer, set_date FOR zif_abapgit_ajson~set_date, set_timestamp FOR zif_abapgit_ajson~set_timestamp, set_null FOR zif_abapgit_ajson~set_null, delete FOR zif_abapgit_ajson~delete, touch_array FOR zif_abapgit_ajson~touch_array, push FOR zif_abapgit_ajson~push, stringify FOR zif_abapgit_ajson~stringify. ALIASES: clone FOR zif_abapgit_ajson~clone, filter FOR zif_abapgit_ajson~filter, map FOR zif_abapgit_ajson~map. ALIASES: mt_json_tree FOR zif_abapgit_ajson~mt_json_tree, keep_item_order FOR zif_abapgit_ajson~keep_item_order, format_datetime FOR zif_abapgit_ajson~format_datetime, to_abap_corresponding_only FOR zif_abapgit_ajson~to_abap_corresponding_only, freeze FOR zif_abapgit_ajson~freeze. CLASS-METHODS parse IMPORTING !iv_json TYPE any !iv_freeze TYPE abap_bool DEFAULT abap_false !ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL !iv_keep_item_order TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson RAISING zcx_abapgit_ajson_error . CLASS-METHODS create_empty " Might be deprecated, prefer using new( ) or create object IMPORTING !ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL iv_keep_item_order TYPE abap_bool DEFAULT abap_false iv_format_datetime TYPE abap_bool DEFAULT abap_true iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson. " Experimental ! May change CLASS-METHODS create_from " TODO, rename to 'from' ? IMPORTING !ii_source_json TYPE REF TO zif_abapgit_ajson !ii_filter TYPE REF TO zif_abapgit_ajson_filter OPTIONAL " Might be deprecated, use filter() instead !ii_mapper TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL " Might be deprecated, use map() instead RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson RAISING zcx_abapgit_ajson_error . METHODS constructor IMPORTING iv_keep_item_order TYPE abap_bool DEFAULT abap_false iv_format_datetime TYPE abap_bool DEFAULT abap_true iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false. CLASS-METHODS new IMPORTING iv_keep_item_order TYPE abap_bool DEFAULT abap_false iv_format_datetime TYPE abap_bool DEFAULT abap_true iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson. PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA go_float_regex TYPE REF TO cl_abap_regex. DATA ms_opts TYPE zif_abapgit_ajson=>ty_opts. DATA mi_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping. " DEPRECATED, will be removed METHODS get_item IMPORTING iv_path TYPE string RETURNING VALUE(rv_item) TYPE REF TO zif_abapgit_ajson_types=>ty_node. METHODS prove_path_exists IMPORTING iv_path TYPE string RETURNING VALUE(rr_end_node) TYPE REF TO zif_abapgit_ajson_types=>ty_node RAISING zcx_abapgit_ajson_error. METHODS delete_subtree IMPORTING iv_path TYPE string iv_name TYPE string ir_parent TYPE REF TO zif_abapgit_ajson_types=>ty_node OPTIONAL RETURNING VALUE(rs_top_node) TYPE zif_abapgit_ajson_types=>ty_node. METHODS read_only_watchdog RAISING zcx_abapgit_ajson_error. ENDCLASS. CLASS zcl_abapgit_ajson_filter_lib DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS create_empty_filter RETURNING VALUE(ri_filter) TYPE REF TO zif_abapgit_ajson_filter RAISING zcx_abapgit_ajson_error . CLASS-METHODS create_path_filter IMPORTING !it_skip_paths TYPE string_table OPTIONAL !iv_skip_paths TYPE string OPTIONAL !iv_pattern_search TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_filter) TYPE REF TO zif_abapgit_ajson_filter RAISING zcx_abapgit_ajson_error . CLASS-METHODS create_and_filter IMPORTING !it_filters TYPE zif_abapgit_ajson_filter=>ty_filter_tab RETURNING VALUE(ri_filter) TYPE REF TO zif_abapgit_ajson_filter RAISING zcx_abapgit_ajson_error . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS kHGwlpuwVGRXmbkWZJMoWRsLzEdjUi DEFINITION DEFERRED. CLASS kHGwlpuwVGRXmbkWZJMorCLylKulMM DEFINITION DEFERRED. CLASS kHGwlpuwVGRXmbkWZJMooAlevhaDMg DEFINITION DEFERRED. CLASS kHGwlpuwVGRXmbkWZJMoYWDnXPYsQA DEFINITION DEFERRED. CLASS kHGwlpuwVGRXmbkWZJMoIaLFAtEmIg DEFINITION DEFERRED. CLASS kHGwlpuwVGRXmbkWZJMoayhtkOTSGN DEFINITION DEFERRED. CLASS kHGwlpuwVGRXmbkWZJMocwrelrEIET DEFINITION DEFERRED. CLASS kHGwlpuwVGRXmbkWZJMoTFhfUGDgXz DEFINITION DEFERRED. * renamed: zcl_abapgit_ajson_mapping :: lcl_mapping_fields CLASS kHGwlpuwVGRXmbkWZJMoTFhfUGDgXz DEFINITION. PUBLIC SECTION. INTERFACES zif_abapgit_ajson_mapping. METHODS constructor IMPORTING it_mapping_fields TYPE zif_abapgit_ajson_mapping~ty_mapping_fields OPTIONAL. PROTECTED SECTION. PRIVATE SECTION. DATA mt_mapping_fields TYPE zif_abapgit_ajson_mapping~ty_mapping_fields. ENDCLASS. * renamed: zcl_abapgit_ajson_mapping :: lcl_rename CLASS kHGwlpuwVGRXmbkWZJMocwrelrEIET DEFINITION. PUBLIC SECTION. INTERFACES zif_abapgit_ajson_mapping. METHODS constructor IMPORTING it_rename_map TYPE zif_abapgit_ajson_mapping~tty_rename_map iv_rename_by TYPE i. PROTECTED SECTION. PRIVATE SECTION. DATA mt_rename_map TYPE zif_abapgit_ajson_mapping~tty_rename_map. DATA mv_rename_by TYPE i. ENDCLASS. * renamed: zcl_abapgit_ajson_mapping :: lcl_mapping_to_upper CLASS kHGwlpuwVGRXmbkWZJMoayhtkOTSGN DEFINITION. PUBLIC SECTION. INTERFACES zif_abapgit_ajson_mapping. METHODS constructor IMPORTING it_mapping_fields TYPE zif_abapgit_ajson_mapping~ty_mapping_fields OPTIONAL. PROTECTED SECTION. PRIVATE SECTION. DATA mi_mapping_fields TYPE REF TO zif_abapgit_ajson_mapping. ENDCLASS. * renamed: zcl_abapgit_ajson_mapping :: lcl_mapping_to_lower CLASS kHGwlpuwVGRXmbkWZJMoIaLFAtEmIg DEFINITION. PUBLIC SECTION. INTERFACES zif_abapgit_ajson_mapping. METHODS constructor IMPORTING it_mapping_fields TYPE zif_abapgit_ajson_mapping~ty_mapping_fields OPTIONAL. PROTECTED SECTION. PRIVATE SECTION. DATA mi_mapping_fields TYPE REF TO zif_abapgit_ajson_mapping. ENDCLASS. * renamed: zcl_abapgit_ajson_mapping :: lcl_mapping_camel CLASS kHGwlpuwVGRXmbkWZJMoYWDnXPYsQA DEFINITION. PUBLIC SECTION. INTERFACES zif_abapgit_ajson_mapping. METHODS constructor IMPORTING it_mapping_fields TYPE zif_abapgit_ajson_mapping~ty_mapping_fields OPTIONAL iv_first_json_upper TYPE abap_bool DEFAULT abap_true. PROTECTED SECTION. PRIVATE SECTION. DATA mv_first_json_upper TYPE abap_bool. DATA mi_mapping_fields TYPE REF TO zif_abapgit_ajson_mapping. ENDCLASS. * renamed: zcl_abapgit_ajson_mapping :: lcl_compound_mapper CLASS kHGwlpuwVGRXmbkWZJMooAlevhaDMg DEFINITION. PUBLIC SECTION. INTERFACES zif_abapgit_ajson_mapping. METHODS constructor IMPORTING it_queue TYPE zif_abapgit_ajson_mapping=>ty_table_of. PROTECTED SECTION. PRIVATE SECTION. DATA mt_queue TYPE zif_abapgit_ajson_mapping=>ty_table_of. ENDCLASS. * renamed: zcl_abapgit_ajson_mapping :: lcl_to_snake CLASS kHGwlpuwVGRXmbkWZJMorCLylKulMM DEFINITION. PUBLIC SECTION. INTERFACES zif_abapgit_ajson_mapping. ENDCLASS. * renamed: zcl_abapgit_ajson_mapping :: lcl_to_camel CLASS kHGwlpuwVGRXmbkWZJMoWRsLzEdjUi DEFINITION. PUBLIC SECTION. INTERFACES zif_abapgit_ajson_mapping. METHODS constructor IMPORTING iv_first_json_upper TYPE abap_bool. PRIVATE SECTION. DATA mv_first_json_upper TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_ajson_mapping DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. CONSTANTS: BEGIN OF rename_by, attr_name TYPE i VALUE 0, full_path TYPE i VALUE 1, pattern TYPE i VALUE 2, " regex type i value 3, " TODO add if needed in future END OF rename_by. CLASS-METHODS create_camel_case " DEPRECATED IMPORTING it_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields OPTIONAL iv_first_json_upper TYPE abap_bool DEFAULT abap_true RETURNING VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping. CLASS-METHODS create_upper_case IMPORTING it_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields OPTIONAL RETURNING VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping. CLASS-METHODS create_lower_case IMPORTING it_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields OPTIONAL RETURNING VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping. CLASS-METHODS create_field_mapping " DEPRECATED IMPORTING it_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields RETURNING VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping. CLASS-METHODS create_rename IMPORTING it_rename_map TYPE zif_abapgit_ajson_mapping=>tty_rename_map iv_rename_by TYPE i DEFAULT rename_by-attr_name RETURNING VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping. CLASS-METHODS create_compound_mapper IMPORTING ii_mapper1 TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL ii_mapper2 TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL ii_mapper3 TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL it_more TYPE zif_abapgit_ajson_mapping=>ty_table_of OPTIONAL RETURNING VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping. CLASS-METHODS create_to_snake_case RETURNING VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping. CLASS-METHODS create_to_camel_case IMPORTING iv_first_json_upper TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_ajson_utilities DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS new RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson_utilities. METHODS diff IMPORTING !iv_json_a TYPE string OPTIONAL !iv_json_b TYPE string OPTIONAL !io_json_a TYPE REF TO zif_abapgit_ajson OPTIONAL !io_json_b TYPE REF TO zif_abapgit_ajson OPTIONAL !iv_keep_empty_arrays TYPE abap_bool DEFAULT abap_false EXPORTING !eo_insert TYPE REF TO zif_abapgit_ajson !eo_delete TYPE REF TO zif_abapgit_ajson !eo_change TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error . METHODS merge IMPORTING !iv_json_a TYPE string OPTIONAL !iv_json_b TYPE string OPTIONAL !io_json_a TYPE REF TO zif_abapgit_ajson OPTIONAL !io_json_b TYPE REF TO zif_abapgit_ajson OPTIONAL !iv_keep_empty_arrays TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ro_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error . METHODS sort IMPORTING !iv_json TYPE string OPTIONAL !io_json TYPE REF TO zif_abapgit_ajson OPTIONAL RETURNING VALUE(rv_sorted) TYPE string RAISING zcx_abapgit_ajson_error . METHODS is_equal IMPORTING !iv_json_a TYPE string OPTIONAL !iv_json_b TYPE string OPTIONAL !ii_json_a TYPE REF TO zif_abapgit_ajson OPTIONAL !ii_json_b TYPE REF TO zif_abapgit_ajson OPTIONAL RETURNING VALUE(rv_yes) TYPE abap_bool RAISING zcx_abapgit_ajson_error . PROTECTED SECTION. PRIVATE SECTION. DATA mo_json_a TYPE REF TO zif_abapgit_ajson . DATA mo_json_b TYPE REF TO zif_abapgit_ajson . DATA mo_insert TYPE REF TO zif_abapgit_ajson . DATA mo_delete TYPE REF TO zif_abapgit_ajson . DATA mo_change TYPE REF TO zif_abapgit_ajson . METHODS normalize_input IMPORTING !iv_json TYPE string OPTIONAL !io_json TYPE REF TO zif_abapgit_ajson OPTIONAL RETURNING VALUE(ro_json) TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error . METHODS diff_a_b IMPORTING !iv_path TYPE string RAISING zcx_abapgit_ajson_error . METHODS diff_b_a IMPORTING !iv_path TYPE string !iv_array TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_ajson_error . METHODS delete_empty_nodes IMPORTING !io_json TYPE REF TO zif_abapgit_ajson !iv_keep_empty_arrays TYPE abap_bool RAISING zcx_abapgit_ajson_error . ENDCLASS. CLASS zcl_abapgit_aff_registry DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_aff_registry. CONSTANTS c_aff_feature TYPE string VALUE 'AFF'. METHODS constructor. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_registry_entry, obj_type TYPE tadir-object, experimental TYPE abap_bool, END OF ty_registry_entry. CLASS-DATA: gt_registry TYPE HASHED TABLE OF ty_registry_entry WITH UNIQUE KEY obj_type. DATA mv_aff_enabled TYPE abap_bool. CLASS-METHODS initialize_registry_table. CLASS-METHODS: register IMPORTING iv_obj_type TYPE tadir-object iv_experimental TYPE abap_bool DEFAULT abap_false. ENDCLASS. CLASS zcl_abapgit_json_handler DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_json_abap_mapping, json TYPE string, abap TYPE string, END OF ty_json_abap_mapping . TYPES: ty_json_abap_mappings TYPE STANDARD TABLE OF ty_json_abap_mapping WITH DEFAULT KEY . TYPES: BEGIN OF ty_enum_mapping, path TYPE string, mappings TYPE ty_json_abap_mappings, END OF ty_enum_mapping . TYPES: ty_enum_mappings TYPE TABLE OF ty_enum_mapping WITH DEFAULT KEY . TYPES: BEGIN OF ty_path_value_pair, path TYPE string, value TYPE string, END OF ty_path_value_pair . TYPES: ty_skip_paths TYPE STANDARD TABLE OF ty_path_value_pair WITH KEY path . "! Serializes data to xstring. Type of data is specified in the "! implementing class. "! "! @parameter iv_data | data to be serialized "! @parameter iv_enum_mappings | ABAP/JSON value mappings "! @parameter iv_skip_paths | path/value pairs to be skipped during serialization "! @parameter rv_result | serialized data METHODS serialize IMPORTING !iv_data TYPE data !iv_enum_mappings TYPE ty_enum_mappings OPTIONAL !iv_skip_paths TYPE ty_skip_paths OPTIONAL RETURNING VALUE(rv_result) TYPE xstring RAISING cx_static_check . "! Deserializes xstring into data. The type of data is specified in "! the implementing class "! "! @parameter iv_content | xstring to be deserialized "! @parameter iv_defaults | path-value pairs that apply if value is initial "! @parameter ev_data | data of the xstring METHODS deserialize IMPORTING !iv_content TYPE string !iv_defaults TYPE ty_skip_paths OPTIONAL !iv_enum_mappings TYPE ty_enum_mappings OPTIONAL EXPORTING !ev_data TYPE data RAISING cx_static_check . PROTECTED SECTION. PRIVATE SECTION. METHODS: map2json_original_language CHANGING co_ajson TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error, map2json_custom_enum IMPORTING it_enum_mappings TYPE ty_enum_mappings CHANGING co_ajson TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error, map2json_abap_language_version CHANGING co_ajson TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error, "! Get the enum mapping from object handler, as other enums as well map2abap_abap_language_version CHANGING co_ajson TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error, "! For deserialization map2abap_original_language CHANGING co_ajson TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error, "! For deserialization set_defaults IMPORTING it_defaults TYPE ty_skip_paths CHANGING co_ajson TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error, map2abap_custom_enum IMPORTING it_enum_mappings TYPE ty_enum_mappings CHANGING co_ajson TYPE REF TO zif_abapgit_ajson RAISING zcx_abapgit_ajson_error. ENDCLASS. CLASS zcl_abapgit_json_path DEFINITION CREATE PUBLIC. PUBLIC SECTION. METHODS: serialize IMPORTING iv_json TYPE string RETURNING VALUE(rt_result) TYPE string_table RAISING zcx_abapgit_exception. METHODS: deserialize IMPORTING it_json_path TYPE string_table RETURNING VALUE(rv_result) TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_dependencies DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS resolve CHANGING !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_dependency, depname TYPE dd02l-tabname, deptyp TYPE c LENGTH 4, deplocal TYPE dd02l-as4local, refname TYPE dd02l-tabname, reftyp TYPE c LENGTH 4, kind TYPE c LENGTH 1, END OF ty_dependency . TYPES: ty_dedenpencies TYPE STANDARD TABLE OF ty_dependency WITH NON-UNIQUE DEFAULT KEY . TYPES: BEGIN OF ty_item, obj_type TYPE tadir-object, obj_name TYPE tadir-obj_name, devclass TYPE devclass, END OF ty_item . CLASS-METHODS resolve_ddic CHANGING !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . CLASS-METHODS get_ddls_dependencies IMPORTING iv_ddls_name TYPE tadir-obj_name RETURNING VALUE(rt_dependency) TYPE ty_dedenpencies. CLASS-METHODS resolve_packages CHANGING ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt. ENDCLASS. CLASS zcl_abapgit_file_deserialize DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS get_results IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo !ii_log TYPE REF TO zif_abapgit_log OPTIONAL RETURNING VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS filter_files_to_deserialize IMPORTING !it_results TYPE zif_abapgit_definitions=>ty_results_tt !ii_log TYPE REF TO zif_abapgit_log OPTIONAL RETURNING VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt . CLASS-METHODS prioritize_deser IMPORTING !ii_log TYPE REF TO zif_abapgit_log !it_results TYPE zif_abapgit_definitions=>ty_results_tt RETURNING VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt . CLASS-METHODS map_results_to_items IMPORTING !it_results TYPE zif_abapgit_definitions=>ty_results_tt RETURNING VALUE(rt_items) TYPE zif_abapgit_definitions=>ty_items_tt . ENDCLASS. CLASS zcl_abapgit_filename_logic DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CONSTANTS: BEGIN OF c_package_file, obj_name TYPE c LENGTH 7 VALUE 'package', sep1 TYPE c LENGTH 1 VALUE '.', obj_type TYPE c LENGTH 4 VALUE 'devc', sep2 TYPE c LENGTH 1 VALUE '.', extension TYPE c LENGTH 3 VALUE 'xml', END OF c_package_file. CONSTANTS: BEGIN OF c_json_file, extension TYPE c LENGTH 4 VALUE 'json', END OF c_json_file. CLASS-METHODS detect_obj_definition IMPORTING !iv_type TYPE string !iv_ext TYPE string EXPORTING !ev_is_xml TYPE abap_bool !ev_is_json TYPE abap_bool. CLASS-METHODS is_obj_definition_file IMPORTING !iv_filename TYPE string RETURNING VALUE(rv_yes) TYPE abap_bool. CLASS-METHODS file_to_object IMPORTING !iv_filename TYPE string !iv_path TYPE string !iv_devclass TYPE devclass OPTIONAL !io_dot TYPE REF TO zcl_abapgit_dot_abapgit EXPORTING !es_item TYPE zif_abapgit_definitions=>ty_item !ev_is_xml TYPE abap_bool !ev_is_json TYPE abap_bool RAISING zcx_abapgit_exception . CLASS-METHODS i18n_file_to_object IMPORTING !iv_filename TYPE string !iv_path TYPE string EXPORTING !es_item TYPE zif_abapgit_definitions=>ty_item !ev_lang TYPE laiso !ev_ext TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS object_to_file IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_ext TYPE string !iv_extra TYPE clike OPTIONAL RETURNING VALUE(rv_filename) TYPE string . CLASS-METHODS object_to_i18n_file IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_lang TYPE laiso !iv_ext TYPE string RETURNING VALUE(rv_filename) TYPE string. PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA: go_aff_registry TYPE REF TO zif_abapgit_aff_registry. CLASS-METHODS name_escape IMPORTING !iv_name TYPE csequence RETURNING VALUE(rv_name) TYPE string. CLASS-METHODS name_unescape IMPORTING !iv_name TYPE csequence RETURNING VALUE(rv_name) TYPE string. CLASS-METHODS map_filename_to_object IMPORTING !iv_filename TYPE string !iv_path TYPE string !iv_package TYPE devclass !io_dot TYPE REF TO zcl_abapgit_dot_abapgit CHANGING cs_item TYPE zif_abapgit_definitions=>ty_item RAISING zcx_abapgit_exception. CLASS-METHODS map_object_to_filename IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_ext TYPE string !iv_extra TYPE clike CHANGING cv_filename TYPE string RAISING zcx_abapgit_exception. CLASS-METHODS get_lang_and_ext IMPORTING iv_filename TYPE string EXPORTING ev_lang TYPE laiso ev_ext TYPE string RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_folder_logic DEFINITION CREATE PUBLIC . PUBLIC SECTION. METHODS package_to_path IMPORTING !iv_top TYPE devclass !io_dot TYPE REF TO zcl_abapgit_dot_abapgit !iv_package TYPE devclass RETURNING VALUE(rv_path) TYPE string RAISING zcx_abapgit_exception . METHODS path_to_package IMPORTING !iv_top TYPE devclass !io_dot TYPE REF TO zcl_abapgit_dot_abapgit !iv_path TYPE string !iv_create_if_not_exists TYPE abap_bool DEFAULT abap_true RETURNING VALUE(rv_package) TYPE devclass RAISING zcx_abapgit_exception . CLASS-METHODS get_instance RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_folder_logic . PROTECTED SECTION. METHODS get_parent IMPORTING !iv_top TYPE devclass !iv_package TYPE devclass RETURNING VALUE(rv_parent) TYPE devclass RAISING zcx_abapgit_exception . PRIVATE SECTION. TYPES: BEGIN OF ty_devclass_info, devclass TYPE devclass, namespace TYPE namespace, parentcl TYPE parentcl, END OF ty_devclass_info . TYPES: ty_devclass_info_tt TYPE SORTED TABLE OF ty_devclass_info WITH UNIQUE KEY devclass . DATA mt_top_subpackages TYPE ty_devclass_info_tt . DATA mt_parent TYPE ty_devclass_info_tt . ENDCLASS. CLASS zcl_abapgit_item_graph DEFINITION CREATE PUBLIC . PUBLIC SECTION. METHODS constructor IMPORTING !it_items TYPE zif_abapgit_definitions=>ty_items_tt . METHODS add_edge IMPORTING !is_from TYPE zif_abapgit_definitions=>ty_item !is_to TYPE zif_abapgit_definitions=>ty_item . METHODS has_vertices RETURNING VALUE(rv_bool) TYPE abap_bool . METHODS get_next IMPORTING !ii_log TYPE REF TO zif_abapgit_log RETURNING VALUE(rs_item) TYPE zif_abapgit_definitions=>ty_item . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_edge, from TYPE zif_abapgit_definitions=>ty_item, to TYPE zif_abapgit_definitions=>ty_item, END OF ty_edge. DATA mt_vertices TYPE STANDARD TABLE OF zif_abapgit_definitions=>ty_item WITH DEFAULT KEY. DATA mt_edges TYPE STANDARD TABLE OF ty_edge WITH DEFAULT KEY WITH NON-UNIQUE SORTED KEY sec_to COMPONENTS to WITH NON-UNIQUE SORTED KEY sec_from COMPONENTS from. DATA mv_warning TYPE abap_bool. METHODS remove_vertex IMPORTING iv_index TYPE i. ENDCLASS. CLASS zcl_abapgit_objects_activation DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS add IMPORTING !iv_type TYPE trobjtype !iv_name TYPE clike !iv_delete TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception . CLASS-METHODS add_item IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item RAISING zcx_abapgit_exception . CLASS-METHODS activate IMPORTING !iv_ddic TYPE abap_bool DEFAULT abap_false !ii_log TYPE REF TO zif_abapgit_log RAISING zcx_abapgit_exception . CLASS-METHODS clear . CLASS-METHODS is_ddic_type IMPORTING !iv_obj_type TYPE trobjtype RETURNING VALUE(rv_result) TYPE abap_bool . CLASS-METHODS is_active IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item RETURNING VALUE(rv_active) TYPE abap_bool RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_classes, object TYPE trobjtype, clsname TYPE seoclsname, END OF ty_classes. CONSTANTS: c_domain TYPE c LENGTH 9 VALUE 'DOMA DOMD', c_types TYPE c LENGTH 55 VALUE 'DTEL DTED TABL TABD SQLT SQLD TTYP TTYD VIEW VIED DRTY', c_technset TYPE c LENGTH 24 VALUE 'TABT VIET SQTT INDX XINX', c_f4_objects TYPE c LENGTH 35 VALUE 'SHLP SHLD MCOB MCOD MACO MACD MCID', c_enqueue TYPE c LENGTH 9 VALUE 'ENQU ENQD', c_sqsc TYPE c LENGTH 4 VALUE 'SQSC', c_stob TYPE c LENGTH 4 VALUE 'STOB', c_ntab TYPE c LENGTH 14 VALUE 'NTTT NTTB NTDT', c_ddls TYPE c LENGTH 24 VALUE 'DDLS DRUL DTDC DTEB', c_switches TYPE c LENGTH 24 VALUE 'SF01 SF02 SFSW SFBS SFBF', c_para TYPE c LENGTH 4 VALUE 'PARA', " can be referenced by DTEL c_enhd TYPE c LENGTH 4 VALUE 'ENHD', c_scalarfunc TYPE c LENGTH 9 VALUE 'DSFD DSFI', c_aspect TYPE c LENGTH 4 VALUE 'DRAS'. CLASS-DATA: gt_classes TYPE STANDARD TABLE OF ty_classes WITH DEFAULT KEY . CLASS-DATA: gt_objects TYPE TABLE OF dwinactiv . CLASS-METHODS update_where_used IMPORTING !ii_log TYPE REF TO zif_abapgit_log. CLASS-METHODS use_new_activation_logic RETURNING VALUE(rv_use_new_activation_logic) TYPE abap_bool . CLASS-METHODS activate_new IMPORTING !iv_ddic TYPE abap_bool DEFAULT abap_false !ii_log TYPE REF TO zif_abapgit_log RAISING zcx_abapgit_exception . CLASS-METHODS activate_old IMPORTING !iv_ddic TYPE abap_bool DEFAULT abap_false !ii_log TYPE REF TO zif_abapgit_log RAISING zcx_abapgit_exception . CLASS-METHODS activate_ddic IMPORTING !ii_log TYPE REF TO zif_abapgit_log RAISING zcx_abapgit_exception . CLASS-METHODS add_errors_and_warnings_to_log IMPORTING !iv_logname TYPE ddmass-logname !ii_log TYPE REF TO zif_abapgit_log RAISING zcx_abapgit_exception . CLASS-METHODS add_activation_errors_to_log IMPORTING !io_checklist TYPE REF TO cl_wb_checklist !ii_log TYPE REF TO zif_abapgit_log RETURNING VALUE(rv_try_again) TYPE abap_bool RAISING zcx_abapgit_exception . CLASS-METHODS is_non_ddic_active IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item RETURNING VALUE(rv_active) TYPE abap_bool RAISING zcx_abapgit_exception . CLASS-METHODS is_ddic_active IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item RETURNING VALUE(rv_active) TYPE abap_bool RAISING zcx_abapgit_exception . CLASS-METHODS get_ddic_type IMPORTING !iv_obj_type TYPE clike !iv_obj_name TYPE clike EXPORTING !ev_type TYPE ddobjtyp !ev_name TYPE ddobjname !ev_id TYPE ddobjectid RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_objects_check DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS deserialize_checks IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks RAISING zcx_abapgit_exception . CLASS-METHODS class_constructor. CLASS-METHODS checks_adjust IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks CHANGING !ct_results TYPE zif_abapgit_definitions=>ty_results_tt RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA: gi_exit TYPE REF TO zif_abapgit_exit. CLASS-METHODS warning_overwrite_adjust IMPORTING !it_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt CHANGING !ct_results TYPE zif_abapgit_definitions=>ty_results_tt RAISING zcx_abapgit_exception. CLASS-METHODS warning_overwrite_find IMPORTING !it_results TYPE zif_abapgit_definitions=>ty_results_tt RETURNING VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt. CLASS-METHODS warning_package_adjust IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo !it_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt CHANGING !ct_results TYPE zif_abapgit_definitions=>ty_results_tt RAISING zcx_abapgit_exception. CLASS-METHODS warning_package_find IMPORTING !it_results TYPE zif_abapgit_definitions=>ty_results_tt !io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt RAISING zcx_abapgit_exception. CLASS-METHODS determine_transport_request IMPORTING io_repo TYPE REF TO zcl_abapgit_repo iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type RETURNING VALUE(rv_transport_request) TYPE trkorr. CLASS-METHODS check_multiple_files IMPORTING !it_results TYPE zif_abapgit_definitions=>ty_results_tt RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_objects_files DEFINITION CREATE PRIVATE. PUBLIC SECTION. CLASS-METHODS new IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_path TYPE string OPTIONAL RETURNING VALUE(ro_files) TYPE REF TO zcl_abapgit_objects_files. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_path TYPE string OPTIONAL . METHODS add_string IMPORTING !iv_extra TYPE clike OPTIONAL !iv_ext TYPE string !iv_string TYPE string RAISING zcx_abapgit_exception . METHODS read_string IMPORTING !iv_extra TYPE clike OPTIONAL !iv_ext TYPE string RETURNING VALUE(rv_string) TYPE string RAISING zcx_abapgit_exception . METHODS add_xml IMPORTING !iv_extra TYPE clike OPTIONAL !ii_xml TYPE REF TO zif_abapgit_xml_output !iv_normalize TYPE abap_bool DEFAULT abap_true !is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL RAISING zcx_abapgit_exception . METHODS read_xml IMPORTING !iv_extra TYPE clike OPTIONAL RETURNING VALUE(ri_xml) TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS read_abap IMPORTING !iv_extra TYPE clike OPTIONAL !iv_error TYPE abap_bool DEFAULT abap_true RETURNING VALUE(rt_abap) TYPE abaptxt255_tab RAISING zcx_abapgit_exception . METHODS add_abap IMPORTING !iv_extra TYPE clike OPTIONAL !it_abap TYPE STANDARD TABLE RAISING zcx_abapgit_exception . METHODS add IMPORTING !is_file TYPE zif_abapgit_git_definitions=>ty_file . METHODS add_raw IMPORTING !iv_extra TYPE clike OPTIONAL !iv_ext TYPE string !iv_data TYPE xstring. METHODS read_raw IMPORTING !iv_extra TYPE clike OPTIONAL !iv_ext TYPE string RETURNING VALUE(rv_data) TYPE xstring RAISING zcx_abapgit_exception . METHODS get_files RETURNING VALUE(rt_files) TYPE zif_abapgit_git_definitions=>ty_files_tt . METHODS set_files IMPORTING !it_files TYPE zif_abapgit_git_definitions=>ty_files_tt . METHODS get_accessed_files RETURNING VALUE(rt_files) TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt . METHODS contains_file IMPORTING !iv_extra TYPE clike OPTIONAL !iv_ext TYPE string RETURNING VALUE(rv_present) TYPE abap_bool . METHODS get_file_pattern RETURNING VALUE(rv_pattern) TYPE string . METHODS is_json_metadata RETURNING VALUE(rv_result) TYPE abap_bool. METHODS add_i18n_file IMPORTING !ii_i18n_file TYPE REF TO zif_abapgit_i18n_file RAISING zcx_abapgit_exception . METHODS read_i18n_files RETURNING VALUE(rt_i18n_files) TYPE zif_abapgit_i18n_file=>ty_table_of RAISING zcx_abapgit_exception . PROTECTED SECTION. METHODS read_file IMPORTING !iv_filename TYPE string !iv_error TYPE abap_bool DEFAULT abap_true RETURNING VALUE(rv_data) TYPE xstring RAISING zcx_abapgit_exception . PRIVATE SECTION. DATA ms_item TYPE zif_abapgit_definitions=>ty_item . DATA mt_accessed_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt . DATA mt_files TYPE zif_abapgit_git_definitions=>ty_files_tt . DATA mv_path TYPE string . METHODS mark_accessed IMPORTING !iv_path TYPE zif_abapgit_git_definitions=>ty_file-path !iv_file TYPE zif_abapgit_git_definitions=>ty_file-filename !iv_sha1 TYPE zif_abapgit_git_definitions=>ty_file-sha1. ENDCLASS. CLASS zcl_abapgit_serialize DEFINITION CREATE PUBLIC . PUBLIC SECTION. METHODS constructor IMPORTING !io_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit OPTIONAL !is_local_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings OPTIONAL RAISING zcx_abapgit_exception . METHODS on_end_of_task IMPORTING !p_task TYPE clike ##NEEDED. METHODS serialize IMPORTING !iv_package TYPE devclass OPTIONAL !it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt !ii_log TYPE REF TO zif_abapgit_log OPTIONAL !iv_force_sequential TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_item_tt RAISING zcx_abapgit_exception . METHODS files_local IMPORTING !iv_package TYPE devclass !ii_log TYPE REF TO zif_abapgit_log !it_filter TYPE zif_abapgit_definitions=>ty_tadir_tt OPTIONAL !ii_data_config TYPE REF TO zif_abapgit_data_config OPTIONAL RETURNING VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_item_tt RAISING zcx_abapgit_exception . PROTECTED SECTION. TYPES: BEGIN OF ty_unsupported_count, obj_type TYPE tadir-object, obj_name TYPE tadir-obj_name, count TYPE i, END OF ty_unsupported_count . TYPES: ty_unsupported_count_tt TYPE HASHED TABLE OF ty_unsupported_count WITH UNIQUE KEY obj_type . TYPES: ty_char32 TYPE c LENGTH 32 . CLASS-DATA gv_max_processes TYPE i . DATA mt_files TYPE zif_abapgit_definitions=>ty_files_item_tt . DATA mv_free TYPE i . DATA mi_log TYPE REF TO zif_abapgit_log . DATA mv_group TYPE rzlli_apcl . DATA mo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit. DATA ms_local_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings. DATA ms_i18n_params TYPE zif_abapgit_definitions=>ty_i18n_params. DATA mo_abap_language_version TYPE REF TO zcl_abapgit_abap_language_vers. METHODS add_apack IMPORTING !iv_package TYPE devclass CHANGING !ct_files TYPE zif_abapgit_definitions=>ty_files_item_tt RAISING zcx_abapgit_exception . METHODS add_data IMPORTING !ii_data_config TYPE REF TO zif_abapgit_data_config CHANGING !ct_files TYPE zif_abapgit_definitions=>ty_files_item_tt RAISING zcx_abapgit_exception . METHODS add_dot_abapgit CHANGING !ct_files TYPE zif_abapgit_definitions=>ty_files_item_tt RAISING zcx_abapgit_exception . METHODS add_to_return IMPORTING !iv_path TYPE string !is_file_item TYPE zif_abapgit_objects=>ty_serialization . METHODS run_parallel IMPORTING !is_tadir TYPE zif_abapgit_definitions=>ty_tadir !iv_task TYPE ty_char32 RAISING zcx_abapgit_exception . METHODS run_sequential IMPORTING !is_tadir TYPE zif_abapgit_definitions=>ty_tadir RAISING zcx_abapgit_exception . METHODS add_objects IMPORTING !iv_package TYPE devclass !ii_log TYPE REF TO zif_abapgit_log !it_filter TYPE zif_abapgit_definitions=>ty_tadir_tt OPTIONAL CHANGING VALUE(ct_files) TYPE zif_abapgit_definitions=>ty_files_item_tt RAISING zcx_abapgit_exception . METHODS determine_max_processes IMPORTING !iv_force_sequential TYPE abap_bool DEFAULT abap_false iv_package TYPE devclass RETURNING VALUE(rv_processes) TYPE i RAISING zcx_abapgit_exception . METHODS filter_unsupported_objects CHANGING !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt . METHODS filter_ignored_objects IMPORTING !iv_package TYPE devclass CHANGING !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . PRIVATE SECTION. METHODS is_parallelization_possible RETURNING VALUE(rv_result) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_tadir DEFINITION FINAL CREATE PRIVATE FRIENDS ZCL_abapgit_factory . PUBLIC SECTION. INTERFACES zif_abapgit_tadir . PROTECTED SECTION. PRIVATE SECTION. METHODS check_exists IMPORTING !it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt RETURNING VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . METHODS build IMPORTING !iv_package TYPE tadir-devclass !io_dot TYPE REF TO zcl_abapgit_dot_abapgit !iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false !iv_only_local_objects TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . METHODS select_objects IMPORTING !iv_package TYPE tadir-devclass !iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false !iv_only_local_objects TYPE abap_bool EXPORTING !et_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt !et_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . METHODS add_local_packages IMPORTING !it_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt CHANGING !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . METHODS add_namespaces IMPORTING !iv_package TYPE devclass CHANGING !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . METHODS add_namespace IMPORTING !iv_package TYPE devclass !iv_object TYPE csequence CHANGING !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt !ct_tadir_nspc TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . METHODS determine_path IMPORTING !iv_package TYPE tadir-devclass !io_dot TYPE REF TO zcl_abapgit_dot_abapgit CHANGING !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_ecatt_config_downl DEFINITION INHERITING FROM cl_apl_ecatt_config_download CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_download. METHODS: download REDEFINITION. PROTECTED SECTION. METHODS: download_data REDEFINITION. PRIVATE SECTION. DATA: mv_xml_stream TYPE xstring. ENDCLASS. CLASS zcl_abapgit_ecatt_config_upl DEFINITION INHERITING FROM cl_apl_ecatt_config_upload FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_upload. PROTECTED SECTION. METHODS: upload_data_from_stream REDEFINITION. PRIVATE SECTION. DATA: mv_external_xml TYPE xstring. ENDCLASS. CLASS zcl_abapgit_ecatt_data_downl DEFINITION INHERITING FROM cl_apl_ecatt_data_download CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_download. METHODS: download REDEFINITION. PROTECTED SECTION. METHODS: download_data REDEFINITION. PRIVATE SECTION. DATA: mv_xml_stream TYPE xstring. ENDCLASS. CLASS zcl_abapgit_ecatt_data_upload DEFINITION INHERITING FROM cl_apl_ecatt_data_upload FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_upload. METHODS upload REDEFINITION. PROTECTED SECTION. METHODS: upload_data_from_stream REDEFINITION. PRIVATE SECTION. DATA: mv_external_xml TYPE xstring, BEGIN OF ms_current_object, s_obj_type TYPE etobj_type, d_obj_name TYPE etobjdname, d_obj_ver TYPE etobjdver, END OF ms_current_object, mx_ecatt_apl TYPE REF TO cx_ecatt_apl. METHODS on_ev_object_saved FOR EVENT ev_object_saved OF cl_apl_ecatt_object IMPORTING ex_ecatt_object. ENDCLASS. CLASS zcl_abapgit_ecatt_helper DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS: build_xml_of_object IMPORTING iv_object_name TYPE etobj_name iv_object_version TYPE etobj_ver iv_object_type TYPE etobj_type io_download TYPE REF TO cl_apl_ecatt_download RETURNING VALUE(rv_xml_stream) TYPE xstring RAISING zcx_abapgit_exception, download_data IMPORTING ii_template_over_all TYPE REF TO if_ixml_document RETURNING VALUE(rv_xml_stream) TYPE xstring, upload_data_from_stream IMPORTING iv_xml_stream TYPE xstring RETURNING VALUE(ri_template_over_all) TYPE REF TO if_ixml_document RAISING cx_ecatt_apl. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: c_xml TYPE i VALUE 1. " downport of if_apl_ecatt_xml=>co_xml ENDCLASS. CLASS zcl_abapgit_ecatt_script_downl DEFINITION INHERITING FROM cl_apl_ecatt_script_download CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_download. METHODS: download REDEFINITION. PROTECTED SECTION. METHODS: download_data REDEFINITION. PRIVATE SECTION. DATA: mv_xml_stream TYPE xstring, mi_script_node TYPE REF TO if_ixml_element. METHODS: set_script_to_template RAISING cx_ecatt_apl, set_control_data_for_tcd IMPORTING is_param TYPE etpar_gui io_params TYPE REF TO cl_apl_ecatt_params RAISING cx_ecatt_apl, escape_control_data IMPORTING ii_element TYPE REF TO if_ixml_element iv_tabname TYPE string iv_node TYPE string RAISING cx_ecatt_apl, set_blob_to_template RAISING cx_ecatt_apl, set_artmp_to_template RAISING cx_ecatt_apl. ENDCLASS. CLASS zcl_abapgit_ecatt_script_upl DEFINITION INHERITING FROM cl_apl_ecatt_script_upload FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_upload. PROTECTED SECTION. METHODS: upload_data_from_stream REDEFINITION. PRIVATE SECTION. DATA: mv_external_xml TYPE xstring. ENDCLASS. CLASS zcl_abapgit_ecatt_sp_download DEFINITION INHERITING FROM cl_apl_ecatt_download CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_download. METHODS: download REDEFINITION. PROTECTED SECTION. METHODS: download_data REDEFINITION. PRIVATE SECTION. DATA: mv_xml_stream TYPE xstring. METHODS: set_sp_data_to_template. ENDCLASS. CLASS zcl_abapgit_ecatt_sp_upload DEFINITION INHERITING FROM cl_apl_ecatt_upload FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_upload. METHODS: upload REDEFINITION. PROTECTED SECTION. METHODS: upload_data_from_stream REDEFINITION, get_ecatt_sp RAISING cx_ecatt_apl . PRIVATE SECTION. DATA: mv_external_xml TYPE xstring. ENDCLASS. CLASS zcl_abapgit_ecatt_system_downl DEFINITION INHERITING FROM cl_apl_ecatt_systems_download CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_download. METHODS: download REDEFINITION. PROTECTED SECTION. METHODS: download_data REDEFINITION. PRIVATE SECTION. DATA: mv_xml_stream TYPE xstring. METHODS: set_systems_data_to_template. ENDCLASS. CLASS zcl_abapgit_ecatt_system_upl DEFINITION INHERITING FROM cl_apl_ecatt_systems_upload FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_upload. PROTECTED SECTION. METHODS: upload_data_from_stream REDEFINITION. PRIVATE SECTION. DATA: mv_external_xml TYPE xstring. ENDCLASS. CLASS zcl_abapgit_ecatt_val_obj_down DEFINITION INHERITING FROM cl_apl_ecatt_download CREATE PUBLIC. PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_download. METHODS: download REDEFINITION. PROTECTED SECTION. DATA: mi_objects_node TYPE REF TO if_ixml_element. METHODS: download_data REDEFINITION. PRIVATE SECTION. DATA: mv_xml_stream TYPE xstring. METHODS: set_ecatt_impl_detail, set_ecatt_flags, set_business_msgs. ENDCLASS. CLASS zcl_abapgit_ecatt_val_obj_upl DEFINITION INHERITING FROM cl_apl_ecatt_upload FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_ecatt_upload. METHODS: 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_object_enho_badi DEFINITION. PUBLIC SECTION. METHODS: constructor IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item. INTERFACES: zif_abapgit_object_enho. PROTECTED SECTION. PRIVATE SECTION. DATA: ms_item TYPE zif_abapgit_definitions=>ty_item. ENDCLASS. CLASS zcl_abapgit_object_enho_class DEFINITION CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_object_enho. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !io_files TYPE REF TO zcl_abapgit_objects_files. PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS adjust_generated_comments CHANGING ct_source TYPE rswsourcet. METHODS: serialize_includes IMPORTING io_class TYPE REF TO cl_enh_tool_class RAISING zcx_abapgit_exception, deserialize_includes IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input io_class TYPE REF TO cl_enh_tool_class RAISING zcx_abapgit_exception. DATA: ms_item TYPE zif_abapgit_definitions=>ty_item. DATA: mo_files TYPE REF TO zcl_abapgit_objects_files. ENDCLASS. CLASS zcl_abapgit_object_enho_clif DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS deserialize IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input !io_clif TYPE REF TO cl_enh_tool_clif RAISING zcx_abapgit_exception cx_enh_root . CLASS-METHODS serialize IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output !io_clif TYPE REF TO cl_enh_tool_clif RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_enho_fugr DEFINITION. PUBLIC SECTION. METHODS: constructor IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item io_files TYPE REF TO zcl_abapgit_objects_files. INTERFACES: zif_abapgit_object_enho. PROTECTED SECTION. PRIVATE SECTION. DATA: ms_item TYPE zif_abapgit_definitions=>ty_item, mo_files TYPE REF TO zcl_abapgit_objects_files. ENDCLASS. CLASS zcl_abapgit_object_enho_hook DEFINITION. PUBLIC SECTION. METHODS: constructor IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item io_files TYPE REF TO zcl_abapgit_objects_files. INTERFACES: zif_abapgit_object_enho. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_spaces, full_name TYPE string, spaces TYPE STANDARD TABLE OF i WITH DEFAULT KEY, END OF ty_spaces. TYPES: ty_spaces_tt TYPE STANDARD TABLE OF ty_spaces WITH DEFAULT KEY. TYPES: BEGIN OF ty_file, name TYPE string, file TYPE string, END OF ty_file. TYPES: ty_files TYPE HASHED TABLE OF ty_file WITH UNIQUE KEY name. CONSTANTS c_enhancement TYPE string VALUE 'ENHANCEMENT 0 *.' ##NO_TEXT. CONSTANTS c_endenhancement TYPE string VALUE 'ENDENHANCEMENT.' ##NO_TEXT. DATA: ms_item TYPE zif_abapgit_definitions=>ty_item. DATA: mo_files TYPE REF TO zcl_abapgit_objects_files. METHODS add_sources CHANGING !ct_enhancements TYPE enh_hook_impl_it !ct_files TYPE ty_files RAISING zcx_abapgit_exception . METHODS read_sources CHANGING !ct_enhancements TYPE enh_hook_impl_it !ct_files TYPE ty_files RAISING zcx_abapgit_exception . METHODS hook_impl_deserialize IMPORTING !it_spaces TYPE ty_spaces_tt CHANGING !ct_impl TYPE enh_hook_impl_it RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_enho_intf DEFINITION. PUBLIC SECTION. METHODS: constructor IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item io_files TYPE REF TO zcl_abapgit_objects_files. INTERFACES: zif_abapgit_object_enho. PROTECTED SECTION. PRIVATE SECTION. DATA: ms_item TYPE zif_abapgit_definitions=>ty_item, mo_files TYPE REF TO zcl_abapgit_objects_files. ENDCLASS. CLASS zcl_abapgit_object_enho_wdyc DEFINITION. PUBLIC SECTION. METHODS: constructor IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item. INTERFACES: zif_abapgit_object_enho. PROTECTED SECTION. PRIVATE SECTION. DATA: ms_item TYPE zif_abapgit_definitions=>ty_item. ENDCLASS. CLASS zcl_abapgit_object_enho_wdyn DEFINITION. PUBLIC SECTION. METHODS: constructor IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item. INTERFACES: zif_abapgit_object_enho. PROTECTED SECTION. PRIVATE SECTION. DATA: ms_item TYPE zif_abapgit_definitions=>ty_item. ENDCLASS. CLASS zcl_abapgit_object_enhs_badi_d DEFINITION. PUBLIC SECTION. INTERFACES: zif_abapgit_object_enhs. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_enhs_hook_d DEFINITION. PUBLIC SECTION. INTERFACES: zif_abapgit_object_enhs. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_hook_defifnition, pgmid TYPE pgmid, obj_name TYPE trobj_name, obj_type TYPE trobjtype, main_type TYPE trobjtype, main_name TYPE eu_aname, program TYPE progname, def_hooks TYPE enh_hook_def_ext_it, END OF ty_hook_defifnition. ENDCLASS. CLASS zcl_abapgit_adt_link DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. CLASS-METHODS jump IMPORTING !iv_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name !iv_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type !iv_sub_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name OPTIONAL !iv_line_number TYPE i OPTIONAL RAISING zcx_abapgit_exception. CLASS-METHODS link_transport IMPORTING iv_transport TYPE trkorr RETURNING VALUE(rv_link) TYPE string. PROTECTED SECTION. CLASS-METHODS generate IMPORTING !iv_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name !iv_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type !iv_sub_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name OPTIONAL !iv_line_number TYPE i OPTIONAL RETURNING VALUE(rv_result) TYPE string RAISING zcx_abapgit_exception. PRIVATE SECTION. CLASS-METHODS get_adt_objects_and_names IMPORTING iv_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name iv_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type EXPORTING eo_adt_uri_mapper TYPE REF TO object eo_adt_objectref TYPE REF TO object ev_program TYPE progname ev_include TYPE progname RAISING zcx_abapgit_exception. CLASS-METHODS is_adt_jump_possible IMPORTING io_object TYPE REF TO cl_wb_object io_adt TYPE REF TO object RETURNING VALUE(rv_is_adt_jump_possible) TYPE abap_bool RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_jumper DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_gui_jumper. PROTECTED SECTION. PRIVATE SECTION. METHODS jump_tr IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item RETURNING VALUE(rv_exit) TYPE abap_bool. METHODS jump_wb IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_new_window TYPE abap_bool RETURNING VALUE(rv_exit) TYPE abap_bool. METHODS jump_wb_line IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_sub_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name !iv_sub_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type !iv_line_number TYPE i !iv_new_window TYPE abap_bool RETURNING VALUE(rv_exit) TYPE abap_bool. METHODS jump_bw IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_new_window TYPE abap_bool RETURNING VALUE(rv_exit) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_oo_base DEFINITION ABSTRACT CREATE PROTECTED. PUBLIC SECTION. INTERFACES zif_abapgit_oo_object_fnc . CONSTANTS c_cp_program_type TYPE c LENGTH 1 VALUE 'K'. CONSTANTS c_include_program_type TYPE c LENGTH 1 VALUE 'I'. CONSTANTS c_ip_program_type TYPE c LENGTH 1 VALUE 'J'. PROTECTED SECTION. CLASS-METHODS: convert_attrib_to_vseoattrib IMPORTING iv_clsname TYPE seoclsname it_attributes TYPE zif_abapgit_oo_object_fnc=>ty_obj_attribute_tt RETURNING VALUE(rt_vseoattrib) TYPE seoo_attributes_r. PRIVATE SECTION. CONSTANTS c_docu_state_active TYPE dokstate VALUE 'A'. " See include SDOC_CONSTANTS DATA mv_skip_test_classes TYPE abap_bool . ENDCLASS. CLASS zcl_abapgit_oo_class DEFINITION INHERITING FROM zcl_abapgit_oo_base CREATE PUBLIC FRIENDS ZCL_abapgit_oo_factory. PUBLIC SECTION. METHODS zif_abapgit_oo_object_fnc~create REDEFINITION . METHODS zif_abapgit_oo_object_fnc~create_sotr REDEFINITION . METHODS zif_abapgit_oo_object_fnc~delete REDEFINITION . METHODS zif_abapgit_oo_object_fnc~deserialize_source REDEFINITION . METHODS zif_abapgit_oo_object_fnc~generate_locals REDEFINITION . METHODS zif_abapgit_oo_object_fnc~get_class_properties REDEFINITION . METHODS zif_abapgit_oo_object_fnc~get_includes REDEFINITION . METHODS zif_abapgit_oo_object_fnc~insert_text_pool REDEFINITION . METHODS zif_abapgit_oo_object_fnc~read_sotr REDEFINITION . METHODS zif_abapgit_oo_object_fnc~read_text_pool REDEFINITION . METHODS zif_abapgit_oo_object_fnc~exists REDEFINITION . METHODS zif_abapgit_oo_object_fnc~syntax_check REDEFINITION . PROTECTED SECTION. TYPES: ty_char1 TYPE c LENGTH 1 . TYPES: ty_char2 TYPE c LENGTH 2 . PRIVATE SECTION. CLASS-METHODS update_source_index IMPORTING !iv_clsname TYPE csequence !io_scanner TYPE REF TO cl_oo_source_scanner_class . CLASS-METHODS update_report IMPORTING !iv_program TYPE syrepid !it_source TYPE string_table !iv_package TYPE devclass !iv_version TYPE uccheck RETURNING VALUE(rv_updated) TYPE abap_bool RAISING zcx_abapgit_exception . CLASS-METHODS generate_classpool IMPORTING !iv_name TYPE seoclsname RAISING zcx_abapgit_exception . CLASS-METHODS update_meta IMPORTING !iv_name TYPE seoclsname !iv_exposure TYPE seoexpose !it_source TYPE rswsourcet RAISING zcx_abapgit_exception . CLASS-METHODS determine_method_include IMPORTING !iv_name TYPE seoclsname !iv_method TYPE seocpdname RETURNING VALUE(rv_program) TYPE syrepid RAISING zcx_abapgit_exception . CLASS-METHODS init_scanner IMPORTING !it_source TYPE zif_abapgit_definitions=>ty_string_tt !iv_name TYPE seoclsname RETURNING VALUE(ro_scanner) TYPE REF TO cl_oo_source_scanner_class RAISING zcx_abapgit_exception . CLASS-METHODS update_full_class_include IMPORTING !iv_classname TYPE seoclsname !it_source TYPE string_table !it_methods TYPE cl_oo_source_scanner_class=>type_method_implementations !iv_package TYPE devclass !iv_version TYPE uccheck RAISING zcx_abapgit_exception. CLASS-METHODS create_report IMPORTING !iv_program TYPE syrepid !it_source TYPE string_table !iv_extension TYPE ty_char2 !iv_program_type TYPE ty_char1 !iv_state TYPE r3state !iv_package TYPE devclass !iv_version TYPE uccheck RAISING zcx_abapgit_exception. CLASS-METHODS update_cs_number_of_methods IMPORTING !iv_classname TYPE seoclsname !iv_number_of_impl_methods TYPE i . CLASS-METHODS delete_report IMPORTING !iv_program TYPE syrepid RAISING zcx_abapgit_exception. CLASS-METHODS get_method_includes IMPORTING !iv_classname TYPE seoclsname RETURNING VALUE(rt_includes) TYPE seop_methods_w_include. CLASS-METHODS repair_classpool IMPORTING !is_key TYPE seoclskey RAISING zcx_abapgit_exception . CLASS-METHODS repair_redefinitions IMPORTING !is_key TYPE seoclskey RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_oo_factory DEFINITION. PUBLIC SECTION. CLASS-METHODS: get_by_type IMPORTING iv_object_type TYPE tadir-object RETURNING VALUE(ri_object_oriented_object) TYPE REF TO zif_abapgit_oo_object_fnc, get_by_name IMPORTING iv_object_name TYPE seoclsname RETURNING VALUE(ri_object_oriented_object) TYPE REF TO zif_abapgit_oo_object_fnc RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_oo_interface DEFINITION INHERITING FROM zcl_abapgit_oo_base CREATE PUBLIC FRIENDS ZCL_abapgit_oo_factory. PUBLIC SECTION. METHODS zif_abapgit_oo_object_fnc~create REDEFINITION . METHODS zif_abapgit_oo_object_fnc~delete REDEFINITION . METHODS zif_abapgit_oo_object_fnc~get_includes REDEFINITION . METHODS zif_abapgit_oo_object_fnc~get_interface_properties REDEFINITION . METHODS zif_abapgit_oo_object_fnc~deserialize_source REDEFINITION . METHODS zif_abapgit_oo_object_fnc~exists REDEFINITION . METHODS zif_abapgit_oo_object_fnc~syntax_check REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS update_report IMPORTING !iv_program TYPE syrepid !it_source TYPE string_table !iv_package TYPE devclass !iv_version TYPE uccheck RETURNING VALUE(rv_updated) TYPE abap_bool RAISING zcx_abapgit_exception . CLASS-METHODS update_meta IMPORTING !iv_name TYPE seoclsname !it_source TYPE rswsourcet RAISING zcx_abapgit_exception . CLASS-METHODS init_scanner IMPORTING !it_source TYPE zif_abapgit_definitions=>ty_string_tt !iv_name TYPE seoclsname RETURNING VALUE(ro_scanner) TYPE REF TO cl_oo_source_scanner_interface RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_oo_serializer DEFINITION CREATE PUBLIC . PUBLIC SECTION. METHODS serialize_abap_clif_source IMPORTING !is_class_key TYPE seoclskey RETURNING VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt RAISING zcx_abapgit_exception cx_sy_dyn_call_error . METHODS are_test_classes_skipped RETURNING VALUE(rv_return) TYPE abap_bool . METHODS serialize_locals_imp IMPORTING !is_clskey TYPE seoclskey RETURNING VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt RAISING zcx_abapgit_exception . METHODS serialize_locals_def IMPORTING !is_clskey TYPE seoclskey RETURNING VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt RAISING zcx_abapgit_exception . METHODS serialize_testclasses IMPORTING !is_clskey TYPE seoclskey RETURNING VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt RAISING zcx_abapgit_exception . METHODS serialize_macros IMPORTING !is_clskey TYPE seoclskey RETURNING VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. DATA mv_skip_testclass TYPE abap_bool . METHODS calculate_skip_testclass IMPORTING !it_source TYPE zif_abapgit_definitions=>ty_string_tt RETURNING VALUE(rv_skip_testclass) TYPE abap_bool . METHODS serialize_abap_old IMPORTING !is_clskey TYPE seoclskey RETURNING VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt RAISING zcx_abapgit_exception . METHODS serialize_abap_new IMPORTING !is_clskey TYPE seoclskey RETURNING VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt RAISING zcx_abapgit_exception cx_sy_dyn_call_error . METHODS remove_signatures CHANGING !ct_source TYPE zif_abapgit_definitions=>ty_string_tt . METHODS read_include IMPORTING !is_clskey TYPE seoclskey !iv_type TYPE seop_include_ext_app RETURNING VALUE(rt_source) TYPE seop_source_string RAISING zcx_abapgit_exception. METHODS reduce CHANGING !ct_source TYPE zif_abapgit_definitions=>ty_string_tt . ENDCLASS. CLASS zcl_abapgit_field_rules DEFINITION FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_field_rules. CLASS-METHODS create RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_item, tabname TYPE tabname, fieldname TYPE fieldname, fill_rule TYPE zif_abapgit_field_rules=>ty_fill_rule, END OF ty_item, ty_items TYPE SORTED TABLE OF ty_item WITH UNIQUE KEY tabname fieldname. DATA mt_item TYPE ty_items. METHODS fill_value IMPORTING iv_rule TYPE zif_abapgit_field_rules=>ty_fill_rule iv_package TYPE devclass CHANGING cv_value TYPE any. ENDCLASS. CLASS zcl_abapgit_function_module DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_function_module. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_sap_namespace DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_sap_namespace. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_sap_package DEFINITION CREATE PRIVATE FRIENDS ZCL_abapgit_factory . PUBLIC SECTION. INTERFACES zif_abapgit_sap_package . METHODS constructor IMPORTING !iv_package TYPE devclass . PROTECTED SECTION. PRIVATE SECTION. DATA: mv_package TYPE devclass. METHODS get_transport_layer RETURNING VALUE(rv_transport_layer) TYPE devlayer RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_sap_report DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_sap_report. PROTECTED SECTION. PRIVATE SECTION. METHODS authorization_check IMPORTING iv_mode TYPE csequence is_item TYPE zif_abapgit_definitions=>ty_item RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_tabl_compar DEFINITION CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_comparator . METHODS constructor IMPORTING !ii_local TYPE REF TO zif_abapgit_xml_input. PROTECTED SECTION. TYPES: ty_founds TYPE STANDARD TABLE OF rsfindlst WITH NON-UNIQUE DEFAULT KEY . TYPES: ty_seu_obj TYPE STANDARD TABLE OF seu_obj WITH NON-UNIQUE DEFAULT KEY . DATA mi_local TYPE REF TO zif_abapgit_xml_input. METHODS get_where_used_recursive IMPORTING !iv_object_name TYPE csequence !iv_depth TYPE i !iv_object_type TYPE euobj-id !it_scope TYPE ty_seu_obj RETURNING VALUE(rt_founds_all) TYPE ty_founds RAISING zcx_abapgit_exception . METHODS is_structure_used_in_db_table IMPORTING !iv_object_name TYPE dd02v-tabname RETURNING VALUE(rv_is_structure_used_in_db_tab) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS validate IMPORTING !ii_remote_version TYPE REF TO zif_abapgit_xml_input !ii_local_version TYPE REF TO zif_abapgit_xml_input !ii_log TYPE REF TO zif_abapgit_log RETURNING VALUE(rv_message) TYPE string RAISING zcx_abapgit_exception . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_tabl_ddl DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS read_data IMPORTING !iv_name TYPE tadir-obj_name RETURNING VALUE(rs_data) TYPE zif_abapgit_object_tabl=>ty_internal . METHODS serialize IMPORTING !is_data TYPE zif_abapgit_object_tabl=>ty_internal RETURNING VALUE(rv_ddl) TYPE string . METHODS deserialize IMPORTING !iv_ddl TYPE string RETURNING VALUE(rs_data) TYPE zif_abapgit_object_tabl=>ty_internal . METHODS serialize_adt IMPORTING !iv_name TYPE tadir-obj_name RETURNING VALUE(rv_ddl) TYPE string RAISING cx_static_check . PROTECTED SECTION. PRIVATE SECTION. METHODS parse_top_annotations CHANGING !cs_data TYPE zif_abapgit_object_tabl=>ty_internal !cv_ddl TYPE string . METHODS parse_field_annotations EXPORTING !es_dd08v TYPE dd08v CHANGING !cv_ddl TYPE string . METHODS parse_field IMPORTING !iv_field TYPE string CHANGING !cs_data TYPE zif_abapgit_object_tabl=>ty_internal . METHODS serialize_top IMPORTING !is_data TYPE zif_abapgit_object_tabl=>ty_internal RETURNING VALUE(rv_ddl) TYPE string . METHODS serialize_extend IMPORTING !is_dd03p TYPE dd03p !is_data TYPE zif_abapgit_object_tabl=>ty_internal RETURNING VALUE(rv_ddl) TYPE string . METHODS serialize_field_annotations IMPORTING !iv_fieldname TYPE clike !is_data TYPE zif_abapgit_object_tabl=>ty_internal RETURNING VALUE(rv_ddl) TYPE string . METHODS serialize_fkey_annotations IMPORTING !iv_fieldname TYPE clike !is_data TYPE zif_abapgit_object_tabl=>ty_internal RETURNING VALUE(rv_ddl) TYPE string . METHODS serialize_field_foreign_key IMPORTING !iv_fieldname TYPE clike !is_data TYPE zif_abapgit_object_tabl=>ty_internal RETURNING VALUE(rv_ddl) TYPE string . METHODS serialize_value_help IMPORTING !iv_fieldname TYPE clike !is_data TYPE zif_abapgit_object_tabl=>ty_internal RETURNING VALUE(rv_ddl) TYPE string . METHODS escape_string IMPORTING !iv_string TYPE clike RETURNING VALUE(rv_string) TYPE string . METHODS unescape_string IMPORTING !iv_string TYPE clike RETURNING VALUE(rv_string) TYPE string . METHODS serialize_type IMPORTING !is_dd03p TYPE dd03p RETURNING VALUE(rv_type) TYPE string . METHODS parse_type IMPORTING !iv_token TYPE string CHANGING !cs_dd03p TYPE dd03p . ENDCLASS. CLASS zcl_abapgit_i18n_params DEFINITION FINAL CREATE PRIVATE. PUBLIC SECTION. DATA ms_params TYPE zif_abapgit_definitions=>ty_i18n_params READ-ONLY . CLASS-METHODS new IMPORTING !iv_main_language TYPE spras DEFAULT zif_abapgit_definitions=>c_english !iv_main_language_only TYPE abap_bool DEFAULT abap_false !it_translation_langs TYPE zif_abapgit_definitions=>ty_languages OPTIONAL !iv_use_lxe TYPE abap_bool DEFAULT abap_false !is_params TYPE zif_abapgit_definitions=>ty_i18n_params OPTIONAL RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_i18n_params . METHODS constructor IMPORTING !iv_main_language TYPE spras DEFAULT zif_abapgit_definitions=>c_english !iv_main_language_only TYPE abap_bool DEFAULT abap_false !it_translation_langs TYPE zif_abapgit_definitions=>ty_languages OPTIONAL !iv_use_lxe TYPE abap_bool DEFAULT abap_false !is_params TYPE zif_abapgit_definitions=>ty_i18n_params OPTIONAL . METHODS is_lxe_applicable RETURNING VALUE(rv_yes) TYPE abap_bool . METHODS build_language_filter RETURNING VALUE(rt_language_filter) TYPE zif_abapgit_environment=>ty_system_language_filter . METHODS trim_saplang_list CHANGING ct_sap_langs TYPE zif_abapgit_definitions=>ty_sap_langu_tab RAISING zcx_abapgit_exception. METHODS trim_saplang_keyed_table IMPORTING iv_lang_field_name TYPE abap_compname iv_keep_master_lang TYPE abap_bool DEFAULT abap_false "sy-langu OPTIONAL CHANGING ct_tab TYPE STANDARD TABLE RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mt_language_filter TYPE zif_abapgit_environment=>ty_system_language_filter. CLASS-METHODS iso_langs_to_lang_filter IMPORTING it_iso_filter TYPE zif_abapgit_definitions=>ty_languages RETURNING VALUE(rt_language_filter) TYPE zif_abapgit_environment=>ty_system_language_filter. ENDCLASS. CLASS zcl_abapgit_longtexts DEFINITION CREATE PRIVATE FRIENDS ZCL_abapgit_factory. PUBLIC SECTION. INTERFACES zif_abapgit_longtexts. PROTECTED SECTION. METHODS read IMPORTING !iv_object_name TYPE clike !iv_longtext_id TYPE dokil-id !it_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt !iv_main_lang_only TYPE abap_bool DEFAULT abap_false !iv_clear_fields TYPE abap_bool DEFAULT abap_true RETURNING VALUE(rt_longtexts) TYPE zif_abapgit_longtexts=>ty_longtexts RAISING zcx_abapgit_exception . PRIVATE SECTION. CONSTANTS c_docu_state_active TYPE dokstate VALUE 'A' ##NO_TEXT. METHODS escape_name IMPORTING !iv_longtext_id TYPE dokil-id !iv_object_name TYPE clike RETURNING VALUE(rv_object) TYPE dokil-object. ENDCLASS. CLASS zcl_abapgit_lxe_texts DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_lxe_texts . CLASS-METHODS class_constructor. CLASS-METHODS get_translation_languages IMPORTING !iv_main_language TYPE spras !it_i18n_languages TYPE zif_abapgit_definitions=>ty_languages RETURNING VALUE(rt_languages) TYPE zif_abapgit_definitions=>ty_languages RAISING zcx_abapgit_exception. CLASS-METHODS get_installed_languages RETURNING VALUE(rt_languages) TYPE zif_abapgit_definitions=>ty_languages RAISING zcx_abapgit_exception. CLASS-METHODS convert_lang_string_to_table IMPORTING !iv_langs TYPE string !iv_skip_main_language TYPE spras OPTIONAL RETURNING VALUE(rt_languages) TYPE zif_abapgit_definitions=>ty_languages RAISING zcx_abapgit_exception . CLASS-METHODS convert_table_to_lang_string IMPORTING !it_languages TYPE zif_abapgit_definitions=>ty_languages RETURNING VALUE(rv_langs) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS detect_unsupported_languages IMPORTING !it_languages TYPE zif_abapgit_definitions=>ty_languages RETURNING VALUE(rt_unsupported_languages) TYPE zif_abapgit_definitions=>ty_languages RAISING zcx_abapgit_exception . CLASS-METHODS is_object_supported IMPORTING iv_object_type TYPE tadir-object RETURNING VALUE(rv_yes) TYPE abap_bool. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_custmnr TYPE lxecustmnr VALUE '999999' ##NEEDED. " The value for ABAP system translation is always 999999 (from lxecustmnr docs) TYPES: BEGIN OF ty_lxe_translation, source_lang TYPE lxeisolang, target_lang TYPE lxeisolang, custmnr TYPE lxecustmnr, objtype TYPE trobjtype, objname TYPE lxeobjname, text_pairs TYPE zif_abapgit_lxe_texts=>ty_text_pairs, END OF ty_lxe_translation. TYPES: ty_lxe_translations TYPE STANDARD TABLE OF ty_lxe_translation WITH DEFAULT KEY . CLASS-DATA gt_installed_languages_cache TYPE zif_abapgit_definitions=>ty_languages. CLASS-DATA gt_supported_obj_types TYPE STANDARD TABLE OF tadir-object. DATA mo_i18n_params TYPE REF TO zcl_abapgit_i18n_params. DATA mi_xml_out TYPE REF TO zif_abapgit_xml_output. DATA mi_xml_in TYPE REF TO zif_abapgit_xml_input. DATA mo_files TYPE REF TO zcl_abapgit_objects_files. METHODS serialize_xml IMPORTING !iv_lxe_text_name TYPE string DEFAULT 'LXE_TEXTS' !iv_object_type TYPE tadir-object !iv_object_name TYPE tadir-obj_name RAISING zcx_abapgit_exception . METHODS serialize_as_po IMPORTING !iv_object_type TYPE tadir-object !iv_object_name TYPE tadir-obj_name RAISING zcx_abapgit_exception . " Implementation of deserialize_xml is not complete (but kept as future option) METHODS deserialize_xml IMPORTING !iv_lxe_text_name TYPE string DEFAULT 'LXE_TEXTS' !iv_object_type TYPE tadir-object OPTIONAL !iv_object_name TYPE tadir-obj_name OPTIONAL RAISING zcx_abapgit_exception ##NEEDED. METHODS deserialize_from_po IMPORTING !iv_object_type TYPE tadir-object !iv_object_name TYPE tadir-obj_name RAISING zcx_abapgit_exception . METHODS get_lang_iso4 IMPORTING iv_src TYPE laiso RETURNING VALUE(rv_iso4) TYPE lxeisolang RAISING zcx_abapgit_exception. METHODS get_lxe_object_list IMPORTING iv_object_type TYPE trobjtype iv_object_name TYPE sobj_name RETURNING VALUE(rt_obj_list) TYPE lxe_tt_colob . METHODS read_lxe_object_text_pair IMPORTING iv_s_lang TYPE lxeisolang iv_t_lang TYPE lxeisolang iv_custmnr TYPE lxecustmnr iv_objtype TYPE trobjtype iv_objname TYPE lxeobjname iv_read_only TYPE abap_bool DEFAULT abap_true RETURNING VALUE(rt_text_pairs_tmp) TYPE ty_lxe_translation-text_pairs RAISING zcx_abapgit_exception. METHODS write_lxe_object_text_pair IMPORTING iv_s_lang TYPE lxeisolang iv_t_lang TYPE lxeisolang iv_custmnr TYPE lxecustmnr iv_objtype TYPE trobjtype iv_objname TYPE lxeobjname it_pcx_s1 TYPE ty_lxe_translation-text_pairs RAISING zcx_abapgit_exception. METHODS read_text_items IMPORTING iv_object_type TYPE tadir-object iv_object_name TYPE tadir-obj_name RETURNING VALUE(rt_text_items) TYPE ty_lxe_translations RAISING zcx_abapgit_exception. CLASS-METHODS langu_to_laiso_safe IMPORTING iv_langu TYPE sy-langu RETURNING VALUE(rv_laiso) TYPE laiso RAISING zcx_abapgit_exception. CLASS-METHODS iso4_to_iso2 IMPORTING iv_lxe_lang TYPE lxeisolang RETURNING VALUE(rv_laiso) TYPE laiso RAISING zcx_abapgit_exception. CLASS-METHODS check_langs_versus_installed IMPORTING it_languages TYPE zif_abapgit_definitions=>ty_languages it_installed TYPE zif_abapgit_definitions=>ty_languages EXPORTING et_intersection TYPE zif_abapgit_definitions=>ty_languages et_missfits TYPE zif_abapgit_definitions=>ty_languages. ENDCLASS. CLASS zcl_abapgit_po_file DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_i18n_file. METHODS constructor IMPORTING iv_lang TYPE laiso. METHODS parse IMPORTING iv_xdata TYPE xstring RAISING zcx_abapgit_exception. METHODS push_text_pairs IMPORTING iv_objtype TYPE trobjtype iv_objname TYPE lxeobjname it_text_pairs TYPE zif_abapgit_lxe_texts=>ty_text_pairs RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_comment, translator TYPE i VALUE 1, extracted TYPE i VALUE 2, reference TYPE i VALUE 3, flag TYPE i VALUE 4, previous TYPE i VALUE 5, END OF c_comment. TYPES: BEGIN OF ty_comment, kind TYPE i, text TYPE string, END OF ty_comment. TYPES: BEGIN OF ty_msg_pair, source TYPE string, target TYPE string, comments TYPE STANDARD TABLE OF ty_comment WITH KEY kind text, END OF ty_msg_pair. DATA mv_lang TYPE laiso. DATA mt_pairs TYPE SORTED TABLE OF ty_msg_pair WITH UNIQUE KEY source. METHODS build_po_body RETURNING VALUE(ro_buf) TYPE REF TO zcl_abapgit_string_buffer. METHODS build_po_head RETURNING VALUE(ro_buf) TYPE REF TO zcl_abapgit_string_buffer. METHODS parse_po IMPORTING iv_data TYPE string RAISING zcx_abapgit_exception. CLASS-METHODS get_comment_marker IMPORTING iv_comment_kind TYPE i RETURNING VALUE(rv_marker) TYPE string. CLASS-METHODS quote IMPORTING iv_text TYPE string RETURNING VALUE(rv_text) TYPE string. CLASS-METHODS unquote IMPORTING iv_text TYPE string RETURNING VALUE(rv_text) TYPE string RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_properties_file DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_i18n_file. CONSTANTS: c_properties_feature TYPE string VALUE 'TRANSL'. METHODS constructor IMPORTING iv_lang TYPE laiso. METHODS parse IMPORTING iv_xdata TYPE xstring RAISING zcx_abapgit_exception. METHODS push_text_pairs IMPORTING it_translation TYPE string_table. METHODS get_translations EXPORTING ev_data TYPE data RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mv_lang TYPE laiso. DATA mt_translation TYPE string_table. ENDCLASS. CLASS zcl_abapgit_sotr_handler DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_sotr, header TYPE sotr_head, entries TYPE sotr_text_tt, END OF ty_sotr . TYPES: ty_sotr_tt TYPE STANDARD TABLE OF ty_sotr WITH DEFAULT KEY . TYPES: ty_sotr_use_tt TYPE STANDARD TABLE OF sotr_use WITH DEFAULT KEY . CLASS-METHODS read_sotr IMPORTING !iv_pgmid TYPE pgmid DEFAULT 'R3TR' !iv_object TYPE trobjtype !iv_obj_name TYPE csequence !io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params EXPORTING !et_sotr TYPE ty_sotr_tt !et_sotr_use TYPE ty_sotr_use_tt RAISING zcx_abapgit_exception . CLASS-METHODS create_sotr IMPORTING !iv_package TYPE devclass !io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . CLASS-METHODS create_sotr_from_data IMPORTING !iv_package TYPE devclass !it_sotr TYPE ty_sotr_tt !it_sotr_use TYPE ty_sotr_use_tt RAISING zcx_abapgit_exception . CLASS-METHODS delete_sotr IMPORTING !iv_pgmid TYPE pgmid DEFAULT 'R3TR' !iv_object TYPE trobjtype !iv_obj_name TYPE csequence RAISING zcx_abapgit_exception . CLASS-METHODS delete_sotr_package IMPORTING !iv_package TYPE devclass RAISING zcx_abapgit_exception . PROTECTED SECTION. CLASS-METHODS get_sotr_usage IMPORTING !iv_pgmid TYPE pgmid !iv_object TYPE trobjtype !iv_obj_name TYPE csequence RETURNING VALUE(rt_sotr_use) TYPE ty_sotr_use_tt. CLASS-METHODS get_sotr_4_concept IMPORTING !iv_concept TYPE sotr_conc RETURNING VALUE(rs_sotr) TYPE ty_sotr . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_sots_handler DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. TYPES: BEGIN OF ty_sots, header TYPE sotr_headu, entries TYPE sotr_textl_tt, END OF ty_sots. TYPES: ty_sots_tt TYPE STANDARD TABLE OF ty_sots WITH DEFAULT KEY. TYPES: ty_sots_use_tt TYPE STANDARD TABLE OF sotr_useu WITH DEFAULT KEY. CLASS-METHODS read_sots IMPORTING !iv_pgmid TYPE pgmid DEFAULT 'R3TR' !iv_object TYPE trobjtype !iv_obj_name TYPE csequence !io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params EXPORTING !et_sots TYPE ty_sots_tt !et_sots_use TYPE ty_sots_use_tt RAISING zcx_abapgit_exception. CLASS-METHODS create_sots IMPORTING !iv_package TYPE devclass !io_xml TYPE REF TO zif_abapgit_xml_input OPTIONAL RAISING zcx_abapgit_exception. CLASS-METHODS create_sots_from_data IMPORTING !iv_package TYPE devclass !it_sots TYPE ty_sots_tt OPTIONAL !it_sots_use TYPE ty_sots_use_tt OPTIONAL RAISING zcx_abapgit_exception. CLASS-METHODS delete_sots IMPORTING !iv_pgmid TYPE pgmid DEFAULT 'R3TR' !iv_object TYPE trobjtype !iv_obj_name TYPE csequence RAISING zcx_abapgit_exception. PROTECTED SECTION. CLASS-METHODS get_sots_usage IMPORTING !iv_pgmid TYPE pgmid !iv_object TYPE trobjtype !iv_obj_name TYPE csequence RETURNING VALUE(rt_sots_use) TYPE ty_sots_use_tt. CLASS-METHODS get_sots_4_concept IMPORTING !iv_concept TYPE sotr_conc RETURNING VALUE(rs_sots) TYPE ty_sots. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_objects DEFINITION CREATE PUBLIC . PUBLIC SECTION. TYPES: ty_types_tt TYPE SORTED TABLE OF tadir-object WITH UNIQUE KEY table_line . CLASS-METHODS serialize IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params RETURNING VALUE(rs_files_and_item) TYPE zif_abapgit_objects=>ty_serialization RAISING zcx_abapgit_exception . CLASS-METHODS deserialize IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks !ii_log TYPE REF TO zif_abapgit_log RETURNING VALUE(rt_accessed_files) TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RAISING zcx_abapgit_exception . CLASS-METHODS deserialize_checks IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks RAISING zcx_abapgit_exception . CLASS-METHODS delete IMPORTING !it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt !is_checks TYPE zif_abapgit_definitions=>ty_delete_checks OPTIONAL !ii_log TYPE REF TO zif_abapgit_log OPTIONAL RAISING zcx_abapgit_exception . CLASS-METHODS jump IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !is_sub_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL !iv_filename TYPE string OPTIONAL !iv_line_number TYPE i OPTIONAL !iv_new_window TYPE abap_bool DEFAULT abap_true RAISING zcx_abapgit_exception . CLASS-METHODS changed_by IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_filename TYPE string OPTIONAL RETURNING VALUE(rv_user) TYPE syuname . CLASS-METHODS is_supported IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_native_only TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_bool) TYPE abap_bool . CLASS-METHODS is_type_supported IMPORTING !iv_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type RETURNING VALUE(rv_bool) TYPE abap_bool . CLASS-METHODS exists IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item RETURNING VALUE(rv_bool) TYPE abap_bool . CLASS-METHODS supported_list RETURNING VALUE(rt_types) TYPE ty_types_tt . CLASS-METHODS is_active IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item RETURNING VALUE(rv_active) TYPE abap_bool RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_supported_types, obj_type TYPE tadir-object, supported TYPE abap_bool, END OF ty_supported_types. TYPES: ty_supported_types_tt TYPE SORTED TABLE OF ty_supported_types WITH UNIQUE KEY obj_type. TYPES: BEGIN OF ty_obj_serializer_item, item TYPE zif_abapgit_definitions=>ty_item, metadata TYPE zif_abapgit_definitions=>ty_metadata, END OF ty_obj_serializer_item . TYPES: ty_obj_serializer_map TYPE SORTED TABLE OF ty_obj_serializer_item WITH UNIQUE KEY item . CLASS-DATA gt_obj_serializer_map TYPE ty_obj_serializer_map . CLASS-DATA gt_supported_obj_types TYPE ty_supported_types_tt . CLASS-DATA gv_supported_obj_types_loaded TYPE abap_bool . CLASS-METHODS check_duplicates IMPORTING !it_files TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception . CLASS-METHODS class_name IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item RETURNING VALUE(rv_class_name) TYPE string . CLASS-METHODS update_package_tree IMPORTING !iv_package TYPE devclass . CLASS-METHODS delete_object IMPORTING !iv_package TYPE devclass !is_item TYPE zif_abapgit_definitions=>ty_item !iv_transport TYPE trkorr RAISING zcx_abapgit_exception . CLASS-METHODS compare_remote_to_local IMPORTING !ii_object TYPE REF TO zif_abapgit_object !it_remote TYPE zif_abapgit_git_definitions=>ty_files_tt !is_result TYPE zif_abapgit_definitions=>ty_result !ii_log TYPE REF TO zif_abapgit_log RAISING zcx_abapgit_exception . CLASS-METHODS deserialize_steps IMPORTING !it_steps TYPE zif_abapgit_objects=>ty_step_data_tt !ii_log TYPE REF TO zif_abapgit_log !iv_transport TYPE trkorr CHANGING !ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RAISING zcx_abapgit_exception . CLASS-METHODS deserialize_step IMPORTING !is_step TYPE zif_abapgit_objects=>ty_step_data !ii_log TYPE REF TO zif_abapgit_log !iv_transport TYPE trkorr CHANGING !ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RAISING zcx_abapgit_exception . CLASS-METHODS check_original_system IMPORTING !it_items TYPE zif_abapgit_definitions=>ty_items_tt !ii_log TYPE REF TO zif_abapgit_log !io_dot TYPE REF TO zcl_abapgit_dot_abapgit RAISING zcx_abapgit_exception . CLASS-METHODS update_original_system IMPORTING !it_items TYPE zif_abapgit_definitions=>ty_items_tt !ii_log TYPE REF TO zif_abapgit_log !io_dot TYPE REF TO zcl_abapgit_dot_abapgit !iv_transport TYPE trkorr RAISING zcx_abapgit_exception . CLASS-METHODS check_objects_locked IMPORTING !it_items TYPE zif_abapgit_definitions=>ty_items_tt RAISING zcx_abapgit_exception . CLASS-METHODS create_object IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL !is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL !iv_native_only TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_obj) TYPE REF TO zif_abapgit_object RAISING zcx_abapgit_exception . CLASS-METHODS map_tadir_to_items IMPORTING !it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt RETURNING VALUE(rt_items) TYPE zif_abapgit_definitions=>ty_items_tt . CLASS-METHODS map_results_to_items IMPORTING !it_results TYPE zif_abapgit_definitions=>ty_results_tt RETURNING VALUE(rt_items) TYPE zif_abapgit_definitions=>ty_items_tt . CLASS-METHODS get_deserialize_steps RETURNING VALUE(rt_steps) TYPE zif_abapgit_objects=>ty_step_data_tt . CLASS-METHODS check_main_package IMPORTING !iv_package TYPE devclass !iv_obj_type TYPE tadir-object RAISING zcx_abapgit_exception . CLASS-METHODS change_package_assignments IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !ii_log TYPE REF TO zif_abapgit_log . CLASS-METHODS get_extra_from_filename IMPORTING !iv_filename TYPE string RETURNING VALUE(rv_extra) TYPE string. ENDCLASS. CLASS zcl_abapgit_objects_factory DEFINITION CREATE PRIVATE . PUBLIC SECTION. CLASS-METHODS get_gui_jumper RETURNING VALUE(ri_gui_jumper) TYPE REF TO zif_abapgit_gui_jumper . PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA gi_gui_jumper TYPE REF TO zif_abapgit_gui_jumper . ENDCLASS. CLASS zcl_abapgit_objects_generic DEFINITION CREATE PUBLIC . PUBLIC SECTION. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras DEFAULT sy-langu io_field_rules TYPE REF TO zif_abapgit_field_rules OPTIONAL RAISING zcx_abapgit_exception . METHODS delete IMPORTING !iv_package TYPE devclass RAISING zcx_abapgit_exception . METHODS deserialize IMPORTING !iv_package TYPE devclass !io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS exists RETURNING VALUE(rv_bool) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS serialize IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . PROTECTED SECTION. TYPES: BEGIN OF ty_s_objkey, num TYPE n LENGTH 3, value TYPE c LENGTH 128, END OF ty_s_objkey . TYPES: ty_t_objkey TYPE SORTED TABLE OF ty_s_objkey WITH UNIQUE KEY num . DATA ms_object_header TYPE objh . DATA: mt_object_table TYPE STANDARD TABLE OF objsl WITH DEFAULT KEY . DATA: mt_object_method TYPE STANDARD TABLE OF objm WITH DEFAULT KEY . DATA ms_item TYPE zif_abapgit_definitions=>ty_item . DATA mv_language TYPE spras . METHODS after_import . METHODS before_export . METHODS corr_insert IMPORTING !iv_package TYPE devclass RAISING zcx_abapgit_exception . METHODS deserialize_data IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input !iv_package TYPE devclass RAISING zcx_abapgit_exception . METHODS distribute_name_to_components IMPORTING !it_key_component TYPE ddfields CHANGING !ct_objkey TYPE ty_t_objkey !cs_objkey TYPE ty_s_objkey !cv_non_value_pos TYPE numc3 . METHODS get_key_fields IMPORTING !iv_table TYPE objsl-tobj_name RETURNING VALUE(rt_keys) TYPE ddfields RAISING zcx_abapgit_exception . METHODS get_primary_table RETURNING VALUE(rv_table) TYPE objsl-tobj_name RAISING zcx_abapgit_exception . METHODS get_where_clause IMPORTING !iv_tobj_name TYPE objsl-tobj_name RETURNING VALUE(rv_where) TYPE string RAISING zcx_abapgit_exception . METHODS serialize_data IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS split_value_to_keys IMPORTING !it_key_component TYPE ddfields CHANGING !ct_objkey TYPE ty_t_objkey !cs_objkey TYPE ty_s_objkey !cv_non_value_pos TYPE numc3 . METHODS validate IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . PRIVATE SECTION. DATA mo_field_rules TYPE REF TO zif_abapgit_field_rules . METHODS apply_clear_logic IMPORTING !iv_table TYPE objsl-tobj_name CHANGING !ct_data TYPE STANDARD TABLE . METHODS apply_fill_logic IMPORTING !iv_table TYPE objsl-tobj_name !iv_package TYPE devclass CHANGING !ct_data TYPE STANDARD TABLE . ENDCLASS. CLASS zcl_abapgit_objects_super DEFINITION ABSTRACT CREATE PUBLIC. PUBLIC SECTION. CONSTANTS c_user_unknown TYPE syuname VALUE 'UNKNOWN'. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL. METHODS get_accessed_files RETURNING VALUE(rt_files) TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt. PROTECTED SECTION. DATA: ms_item TYPE zif_abapgit_definitions=>ty_item, mv_language TYPE spras, mo_files TYPE REF TO zcl_abapgit_objects_files, mo_i18n_params TYPE REF TO zcl_abapgit_i18n_params. METHODS get_metadata RETURNING VALUE(rs_metadata) TYPE zif_abapgit_definitions=>ty_metadata . METHODS corr_insert IMPORTING !iv_package TYPE devclass !ig_object_class TYPE any OPTIONAL RAISING zcx_abapgit_exception . METHODS tadir_insert IMPORTING !iv_package TYPE devclass RAISING zcx_abapgit_exception . METHODS tadir_delete RAISING zcx_abapgit_exception . METHODS exists_a_lock_entry_for IMPORTING !iv_lock_object TYPE string !iv_argument TYPE csequence OPTIONAL !iv_prefix TYPE csequence OPTIONAL RETURNING VALUE(rv_exists_a_lock_entry) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS set_default_package IMPORTING !iv_package TYPE devclass . METHODS set_default_transport IMPORTING !iv_transport TYPE trkorr. METHODS serialize_longtexts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output !iv_longtext_id TYPE dokil-id OPTIONAL !it_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt OPTIONAL !iv_longtext_name TYPE string DEFAULT 'LONGTEXTS' RAISING zcx_abapgit_exception . METHODS deserialize_longtexts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input !iv_longtext_id TYPE dokil-id OPTIONAL !iv_longtext_name TYPE string DEFAULT 'LONGTEXTS' RAISING zcx_abapgit_exception . METHODS delete_longtexts IMPORTING !iv_longtext_id TYPE dokil-id RAISING zcx_abapgit_exception . METHODS is_active RETURNING VALUE(rv_active) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS delete_ddic IMPORTING !iv_objtype TYPE string !iv_no_ask TYPE abap_bool DEFAULT abap_true !iv_no_ask_delete_append TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception . METHODS set_abap_language_version CHANGING !cv_abap_language_version TYPE uccheck RAISING zcx_abapgit_exception . METHODS clear_abap_language_version CHANGING !cv_abap_language_version TYPE uccheck RAISING zcx_abapgit_exception . PRIVATE SECTION. ENDCLASS. "! Provides common functionality for the abapGit integration of objects based on ABAP File Formats (AFF). "! It inherits from {@link ZCL_ABAPGIT_OBJECTS_SUPER} and implements the interface {@link ZIF_ABAPGIT_OBJECT}. "!

"! Each subclass must implement at least the abstract method ZIF_ABAPGIT_OBJECT~CHANGED_BY. "! In case you deal with a DDIC object, the methods GET_METADATA and ZIF_ABAPGIT_OBJECT~GET_DESERIALIZE_STEPS "! have to be redefined in the subclass. "!

"! In case the object has an additional file to the json file, the subclass needs "! to redefine the method GET_ADDITIONAL_EXTENSIONS. "!

"! This common class fully relies on the implementation of the object-specific AFF handler "! (it inherits from {@link CL_AFF_OBJECT_HANDLER}). "! Precisely, for the existence check-, serialization-, deserialization- or deletion-functionality, the corresponding "! AFF object handler method is called. CLASS zcl_abapgit_object_common_aff DEFINITION INHERITING FROM zcl_abapgit_objects_super ABSTRACT CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object ABSTRACT METHODS changed_by . METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. TYPES: BEGIN OF ty_extension_mapper_pair, "! file extension extension TYPE string, "! instance of {@link CL_AFF_FILE_NAME_MAPPER} providing file names for file extensions file_name_mapper TYPE REF TO object, END OF ty_extension_mapper_pair, ty_extension_mapper_pairs TYPE STANDARD TABLE OF ty_extension_mapper_pair WITH DEFAULT KEY. "! Delivers other file extensions than json to be considered at serialize or deserialize of an object METHODS get_additional_extensions RETURNING VALUE(rv_additional_extensions) TYPE ty_extension_mapper_pairs ##NEEDED. "! Delivers an instance of AFF object handler ({@link IF_AFF_OBJECT_HANDLER}) METHODS get_object_handler RETURNING VALUE(ro_object_handler) TYPE REF TO object RAISING zcx_abapgit_exception. METHODS create_aff_setting_deserialize FINAL RETURNING VALUE(ro_settings_deserialize) TYPE REF TO object RAISING zcx_abapgit_exception. PRIVATE SECTION. METHODS is_file_empty IMPORTING io_object_json_file TYPE REF TO object RETURNING VALUE(rv_is_empty) TYPE abap_bool. CLASS-METHODS remove_abap_language_version IMPORTING iv_json_as_xstring TYPE xstring RETURNING VALUE(rv_json_as_xstring_wo_alv) TYPE xstring RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_aplo DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_bgqc DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. PRIVATE SECTION. CONSTANTS c_bgqc_name TYPE string VALUE 'BGQCNAME'. CONSTANTS c_bgqc_wbi_p TYPE string VALUE 'CL_BGQC_WBI_P'. CONSTANTS c_select_changed_by TYPE string VALUE 'IF_BGQC_WBI_P~SELECT_CHANGED_BY'. ENDCLASS. CLASS zcl_abapgit_object_cdbo DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. METHODS zif_abapgit_object~changed_by REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_table_name TYPE tabname VALUE 'CDB_OBJH' ##NO_TEXT. ENDCLASS. CLASS zcl_abapgit_object_chkc DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_chko DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_chkv DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_dras DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. METHODS zif_abapgit_object~get_deserialize_steps REDEFINITION. PROTECTED SECTION. METHODS get_additional_extensions REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_drty DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. METHODS zif_abapgit_object~get_deserialize_steps REDEFINITION. PROTECTED SECTION. METHODS get_additional_extensions REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_dsfd DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. METHODS zif_abapgit_object~get_deserialize_steps REDEFINITION. PROTECTED SECTION. METHODS get_additional_extensions REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_dsfi DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. METHODS zif_abapgit_object~get_deserialize_steps REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_dteb DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION . METHODS zif_abapgit_object~get_deserialize_steps REDEFINITION. PROTECTED SECTION. METHODS get_additional_extensions REDEFINITION . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_eeec DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS: zif_abapgit_object~changed_by REDEFINITION . PROTECTED SECTION. METHODS: get_object_handler REDEFINITION. ENDCLASS. CLASS zcl_abapgit_object_evtb DEFINITION INHERITING FROM zcl_abapgit_object_common_aff CREATE PUBLIC. PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: c_table_name TYPE tabname VALUE 'EVTB_HEADER'. ENDCLASS. CLASS zcl_abapgit_object_gsmp DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_nont DEFINITION INHERITING FROM zcl_abapgit_object_common_aff CREATE PUBLIC. PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_table_name TYPE tabname VALUE 'NONT_HEADER'. ENDCLASS. CLASS zcl_abapgit_object_ront DEFINITION INHERITING FROM zcl_abapgit_object_common_aff CREATE PUBLIC. PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_table_name TYPE tabname VALUE 'RONT_HEADER'. ENDCLASS. CLASS zcl_abapgit_object_sajc DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_sajt DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_smbc DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_swcr DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS: zif_abapgit_object~changed_by REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_uiad DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_uipg DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_uist DEFINITION INHERITING FROM zcl_abapgit_object_common_aff FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS zif_abapgit_object~changed_by REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_tabl DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. "! get additional data like table authorization group "! @parameter iv_tabname | name of the table METHODS read_extras IMPORTING iv_tabname TYPE ddobjname RETURNING VALUE(rs_tabl_extras) TYPE zif_abapgit_object_tabl=>ty_tabl_extras. "! Update additional data "! @parameter iv_tabname | name of the table "! @parameter is_tabl_extras | additional table data METHODS update_extras IMPORTING iv_tabname TYPE ddobjname is_tabl_extras TYPE zif_abapgit_object_tabl=>ty_tabl_extras. "! Delete additional data "! @parameter iv_tabname | name of the table METHODS delete_extras IMPORTING iv_tabname TYPE ddobjname. "! Serialize IDoc Segment type/definition if exits "! @raising zcx_abapgit_exception | Exceptions METHODS serialize_idoc_segment CHANGING cs_internal TYPE zif_abapgit_object_tabl=>ty_internal RAISING zcx_abapgit_exception. "! Deserialize IDoc Segment type/definition if exits "! @parameter iv_package | Target package "! @parameter rv_deserialized | It's a segment and was deserialized "! @raising zcx_abapgit_exception | Exceptions METHODS deserialize_idoc_segment IMPORTING is_internal TYPE zif_abapgit_object_tabl=>ty_internal iv_transport TYPE trkorr iv_package TYPE devclass RETURNING VALUE(rv_deserialized) TYPE abap_bool RAISING zcx_abapgit_exception. "! Delete the IDoc Segment type if exists "! @parameter rv_deleted | It's a segment and was deleted "! @raising zcx_abapgit_exception | Exceptions METHODS delete_idoc_segment RETURNING VALUE(rv_deleted) TYPE abap_bool RAISING zcx_abapgit_exception. PRIVATE SECTION. CONSTANTS c_longtext_id_tabl TYPE dokil-id VALUE 'TB' ##NO_TEXT. METHODS deserialize_indexes IMPORTING !is_internal TYPE zif_abapgit_object_tabl=>ty_internal RAISING zcx_abapgit_exception . METHODS clear_dd03p_fields CHANGING !ct_dd03p TYPE zif_abapgit_object_tabl=>ty_dd03p_tt . "! Check if structure is an IDoc segment "! @parameter rv_is_idoc_segment | It's an IDoc segment or not METHODS is_idoc_segment RETURNING VALUE(rv_is_idoc_segment) TYPE abap_bool . METHODS clear_dd03p_fields_common CHANGING !cs_dd03p TYPE dd03p . METHODS clear_dd03p_fields_dataelement CHANGING !cs_dd03p TYPE dd03p . METHODS serialize_texts CHANGING !cs_internal TYPE zif_abapgit_object_tabl=>ty_internal RAISING zcx_abapgit_exception . METHODS deserialize_texts CHANGING !cs_internal TYPE zif_abapgit_object_tabl=>ty_internal RAISING zcx_abapgit_exception . METHODS is_db_table_category IMPORTING !iv_tabclass TYPE dd02l-tabclass RETURNING VALUE(rv_is_db_table_type) TYPE dd02l-tabclass . ENDCLASS. CLASS zcl_abapgit_object_acid DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS: create_object RETURNING VALUE(ro_aab) TYPE REF TO cl_aab_id RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_aifc DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. TYPES: BEGIN OF ty_aif_key_s, ns TYPE c LENGTH 6, ifname TYPE c LENGTH 10, ifver TYPE c LENGTH 5, END OF ty_aif_key_s. TYPES: BEGIN OF ty_icd_data_key_s, depl_scenario TYPE c LENGTH 20, ns TYPE c LENGTH 6, ifname TYPE c LENGTH 10, ifver2 TYPE c LENGTH 4, END OF ty_icd_data_key_s. TYPES: BEGIN OF ty_icd_data_key, depl_scenario TYPE c LENGTH 20, ns TYPE c LENGTH 6, ifname TYPE c LENGTH 10, ifver2 TYPE c LENGTH 4, ifver TYPE c LENGTH 5, END OF ty_icd_data_key. TYPES: BEGIN OF ty_table_data_s, tabname TYPE tabname, table_data TYPE REF TO data, END OF ty_table_data_s. TYPES: ty_table_data_t TYPE SORTED TABLE OF ty_table_data_s WITH UNIQUE KEY tabname. DATA ms_icd_data_key TYPE ty_icd_data_key_s. METHODS handle_table_data IMPORTING !iv_tabname TYPE tabname !it_data TYPE STANDARD TABLE RAISING zcx_abapgit_exception. METHODS clear_client CHANGING !ct_data TYPE STANDARD TABLE RAISING zcx_abapgit_exception. METHODS authorization_check RETURNING VALUE(rv_success) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS get_content_compress IMPORTING !io_log TYPE REF TO zif_abapgit_log !is_ifkeys TYPE ty_aif_key_s !iv_package TYPE devclass RAISING zcx_abapgit_exception. METHODS validate_interface IMPORTING !is_ifkeys TYPE ty_aif_key_s RETURNING VALUE(rv_success) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS compress_interface IMPORTING !is_ifkeys TYPE ty_aif_key_s RETURNING VALUE(rv_success) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS execute_checks IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input RETURNING VALUE(rv_success) TYPE abap_bool RAISING zcx_abapgit_exception. PRIVATE SECTION. TYPES: BEGIN OF ty_content_s, tabname TYPE tabname, END OF ty_content_s. TYPES: ty_content_t TYPE STANDARD TABLE OF ty_content_s WITH NON-UNIQUE DEFAULT KEY. DATA mo_abapgit_util TYPE REF TO object. ENDCLASS. CLASS zcl_abapgit_object_amsd DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. METHODS: clear_fields CHANGING cs_logical_db_schema TYPE any, clear_field IMPORTING iv_fieldname TYPE csequence CHANGING cs_logical_db_schema TYPE any, fill_metadata_from_db CHANGING cs_logical_db_schema TYPE any RAISING zcx_abapgit_exception, get_wb_object_operator RETURNING VALUE(ri_wb_object_operator) TYPE REF TO object RAISING zcx_abapgit_exception. DATA: mr_logical_db_schema TYPE REF TO data, mv_logical_db_schema_key TYPE seu_objkey, mi_persistence TYPE REF TO if_wb_object_persist, mi_wb_object_operator TYPE REF TO object. ENDCLASS. CLASS zcl_abapgit_object_apis DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_model TYPE string VALUE 'ARS_S_API_ABAPGIT'. DATA mo_handler TYPE REF TO object. METHODS initialize. ENDCLASS. CLASS zcl_abapgit_object_aqbg DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_aqqu DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_aqsg DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_area DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_asfc DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_auth DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mv_fieldname TYPE authx-fieldname. ENDCLASS. CLASS zcl_abapgit_object_avar DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. METHODS: create_object RETURNING VALUE(ro_aab_var) TYPE REF TO cl_aab_variant RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_avas DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. TYPES: BEGIN OF ty_header, guid TYPE guid_32, attribute TYPE cls_attribute_name, object TYPE pak_object_key, END OF ty_header . TYPES: BEGIN OF ty_avas, header TYPE ty_header, values TYPE cls_value_assignments, links TYPE cls_linked_objects, END OF ty_avas . METHODS insert_assignments IMPORTING !is_avas TYPE ty_avas RAISING zcx_abapgit_exception . METHODS instantiate RETURNING VALUE(ro_avas) TYPE REF TO cl_cls_attr_value_assignment RAISING zcx_abapgit_exception . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_bdef DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mi_persistence TYPE REF TO if_wb_object_persist . DATA mi_wb_object_operator TYPE REF TO object . DATA mv_behaviour_definition_key TYPE seu_objkey . DATA mr_behaviour_definition TYPE REF TO data . METHODS clear_fields CHANGING !cs_metadata TYPE any . METHODS clear_field IMPORTING !iv_fieldname TYPE csequence CHANGING !cs_metadata TYPE any . METHODS get_wb_object_operator RETURNING VALUE(ri_wb_object_operator) TYPE REF TO object RAISING zcx_abapgit_exception . METHODS merge_object_data IMPORTING !io_object_data TYPE REF TO object RETURNING VALUE(ro_object_data_merged) TYPE REF TO if_wb_object_data_model RAISING zcx_abapgit_exception . METHODS get_object_data IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input RETURNING VALUE(ro_object_data) TYPE REF TO if_wb_object_data_model RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_char DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_char, cls_attribute TYPE cls_attribute, cls_attributet TYPE STANDARD TABLE OF cls_attributet WITH DEFAULT KEY, cls_attr_value TYPE STANDARD TABLE OF cls_attr_value WITH DEFAULT KEY, cls_attr_valuet TYPE STANDARD TABLE OF cls_attr_valuet WITH DEFAULT KEY, END OF ty_char . CONSTANTS c_longtext_id_char TYPE dokil-id VALUE 'CH'. METHODS instantiate_char_and_lock IMPORTING !iv_type_group TYPE cls_object_type_group !iv_activation_state TYPE pak_activation_state RETURNING VALUE(ro_char) TYPE REF TO cl_cls_attribute RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_chdo DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. METHODS after_import RAISING zcx_abapgit_exception . METHODS delete_tadir_cdnames IMPORTING !is_cdnames TYPE cdnames RAISING zcx_abapgit_exception . METHODS delete_tadir_tabl IMPORTING !is_tcdrs TYPE tcdrs RAISING zcx_abapgit_exception . PRIVATE SECTION. TYPES: BEGIN OF ty_change_document, reports_generated TYPE SORTED TABLE OF tcdrps WITH UNIQUE KEY object reportname, objects TYPE SORTED TABLE OF tcdobs WITH UNIQUE KEY object tabname, objects_text TYPE SORTED TABLE OF tcdobts WITH UNIQUE KEY spras object, END OF ty_change_document. DATA: mv_object TYPE cdobjectcl. ENDCLASS. CLASS zcl_abapgit_object_cmod DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_cmpt DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. DATA: mo_cmp_db TYPE REF TO object, mv_name TYPE c LENGTH 30. ENDCLASS. CLASS zcl_abapgit_object_cus0 DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_img_activity_texts TYPE STANDARD TABLE OF cus_imgact WITH NON-UNIQUE DEFAULT KEY, BEGIN OF ty_img_activity, header TYPE cus_imgach, texts TYPE ty_img_activity_texts, END OF ty_img_activity. DATA: mv_img_activity TYPE cus_img_ac. ENDCLASS. CLASS zcl_abapgit_object_cus1 DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_activity_titles TYPE STANDARD TABLE OF cus_actt WITH NON-UNIQUE DEFAULT KEY, ty_objects TYPE STANDARD TABLE OF cus_actobj WITH NON-UNIQUE DEFAULT KEY, ty_objects_title TYPE STANDARD TABLE OF cus_actobt WITH NON-UNIQUE DEFAULT KEY, BEGIN OF ty_customzing_activity, activity_header TYPE cus_acth, activity_customer_exit TYPE cus_actext, activity_title TYPE ty_activity_titles, objects TYPE ty_objects, objects_title TYPE ty_objects_title, END OF ty_customzing_activity. DATA: mv_customizing_activity TYPE cus_img_ac. ENDCLASS. CLASS zcl_abapgit_object_cus2 DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_attribute_titles TYPE STANDARD TABLE OF cus_atrt WITH NON-UNIQUE DEFAULT KEY, ty_attribute_countries TYPE STANDARD TABLE OF cus_atrcou WITH NON-UNIQUE DEFAULT KEY, ty_attribute_components TYPE STANDARD TABLE OF tfm18 WITH NON-UNIQUE DEFAULT KEY, ty_attribute_comp_variants TYPE STANDARD TABLE OF cus_atrvco WITH NON-UNIQUE DEFAULT KEY. TYPES: BEGIN OF ty_customizing_attribute, header TYPE cus_atrh, titles TYPE ty_attribute_titles, countries TYPE ty_attribute_countries, components TYPE ty_attribute_components, components_variants TYPE ty_attribute_comp_variants, END OF ty_customizing_attribute. DATA: mv_img_attribute TYPE cus_atr. ENDCLASS. CLASS zcl_abapgit_object_dcls DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_ddls DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. METHODS open_adt_stob IMPORTING iv_ddls_name TYPE tadir-obj_name RAISING zcx_abapgit_exception. PRIVATE SECTION. METHODS is_baseinfo_supported RETURNING VALUE(rv_supported) TYPE abap_bool . METHODS read_baseinfo RETURNING VALUE(rv_baseinfo_string) TYPE string. METHODS format_source_before_serialize CHANGING cv_string TYPE string. ENDCLASS. CLASS zcl_abapgit_object_ddlx DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. DATA mi_persistence TYPE REF TO if_wb_object_persist . METHODS get_persistence RETURNING VALUE(ri_persistence) TYPE REF TO if_wb_object_persist RAISING zcx_abapgit_exception . METHODS clear_fields CHANGING !cg_data TYPE any . METHODS clear_field IMPORTING !iv_fieldname TYPE csequence CHANGING !cg_metadata TYPE any . ENDCLASS. CLASS zcl_abapgit_object_devc DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES: zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mv_local_devclass TYPE devclass . METHODS get_package RETURNING VALUE(ri_package) TYPE REF TO if_package RAISING zcx_abapgit_exception . METHODS update_pinf_usages IMPORTING !ii_package TYPE REF TO if_package !it_usage_data TYPE scomppdata RAISING zcx_abapgit_exception . METHODS set_lock IMPORTING !ii_package TYPE REF TO if_package !iv_lock TYPE abap_bool RAISING zcx_abapgit_exception . METHODS unlock_and_raise_error IMPORTING !ii_package TYPE REF TO if_package RAISING zcx_abapgit_exception . METHODS is_empty IMPORTING !iv_package_name TYPE devclass RETURNING VALUE(rv_is_empty) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS load_package IMPORTING !iv_package_name TYPE devclass RETURNING VALUE(ri_package) TYPE REF TO if_package RAISING zcx_abapgit_exception . METHODS is_local IMPORTING !iv_package_name TYPE devclass RETURNING VALUE(rv_is_local) TYPE abap_bool . METHODS remove_obsolete_tadir IMPORTING !iv_package_name TYPE devclass . METHODS adjust_sw_component CHANGING cv_dlvunit TYPE dlvunit. ENDCLASS. CLASS zcl_abapgit_object_dial DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_dialog_module, tdct TYPE tdct, dia_pars TYPE STANDARD TABLE OF diapar WITH NON-UNIQUE DEFAULT KEY, END OF ty_dialog_module. METHODS: _read_tdct RETURNING VALUE(rs_tdct) TYPE tdct. ENDCLASS. CLASS zcl_abapgit_object_doct DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_id TYPE dokhl-id VALUE 'TX' ##NO_TEXT. CONSTANTS c_name TYPE string VALUE 'DOC' ##NO_TEXT. DATA mi_longtexts TYPE REF TO zif_abapgit_longtexts . ENDCLASS. CLASS zcl_abapgit_object_docv DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_data, doctitle TYPE dsyst-doktitle, head TYPE thead, lines TYPE tline_tab, END OF ty_data. CONSTANTS c_typ TYPE dokhl-typ VALUE 'E' ##NO_TEXT. CONSTANTS c_version TYPE dokhl-dokversion VALUE '0001' ##NO_TEXT. CONSTANTS c_name TYPE string VALUE 'DOC' ##NO_TEXT. DATA mv_id TYPE dokhl-id. DATA mv_doc_object TYPE dokhl-object. METHODS read RETURNING VALUE(rs_data) TYPE ty_data. ENDCLASS. CLASS zcl_abapgit_object_doma DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_dd01_text, ddlanguage TYPE dd01v-ddlanguage, ddtext TYPE dd01v-ddtext, END OF ty_dd01_text . TYPES: BEGIN OF ty_dd07_text, valpos TYPE dd07v-valpos, ddlanguage TYPE dd07v-ddlanguage, domvalue_l TYPE dd07v-domvalue_l, domvalue_h TYPE dd07v-domvalue_h, ddtext TYPE dd07v-ddtext, domval_ld TYPE dd07v-domval_ld, domval_hd TYPE dd07v-domval_hd, END OF ty_dd07_text . TYPES: ty_dd01_texts TYPE STANDARD TABLE OF ty_dd01_text . TYPES: ty_dd07_texts TYPE STANDARD TABLE OF ty_dd07_text . CONSTANTS c_longtext_id_doma TYPE dokil-id VALUE 'DO' ##NO_TEXT. METHODS serialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output !it_dd07v TYPE dd07v_tab RAISING zcx_abapgit_exception . METHODS deserialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input !is_dd01v TYPE dd01v !it_dd07v TYPE dd07v_tab RAISING zcx_abapgit_exception . METHODS handle_dependencies IMPORTING !iv_step TYPE zif_abapgit_definitions=>ty_deserialization_step CHANGING !cv_exit TYPE dd01v-convexit !cv_done TYPE abap_bool. METHODS adjust_exit CHANGING !cv_exit TYPE dd01v-convexit. METHODS check_exit IMPORTING !iv_exit TYPE dd01v-convexit RETURNING VALUE(rv_done) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_object_drul DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. METHODS: clear_fields CHANGING cs_dependency_rule TYPE any, clear_field IMPORTING iv_fieldname TYPE csequence CHANGING cs_dependency_rule TYPE any, fill_metadata_from_db CHANGING cs_dependency_rule TYPE any RAISING zcx_abapgit_exception, get_wb_object_operator RETURNING VALUE(ri_wb_object_operator) TYPE REF TO object RAISING zcx_abapgit_exception. DATA: mr_dependency_rule TYPE REF TO data, mv_dependency_rule_key TYPE seu_objkey, mi_persistence TYPE REF TO if_wb_object_persist, mi_wb_object_operator TYPE REF TO object. ENDCLASS. CLASS zcl_abapgit_object_dsys DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: c_typ TYPE dokhl-typ VALUE 'E', c_id TYPE dokhl-id VALUE 'HY'. DATA: mv_doc_object TYPE sobj_name. TYPES: BEGIN OF ty_data, doctitle TYPE dsyst-doktitle, head TYPE thead, lines TYPE tline_tab, END OF ty_data. METHODS deserialize_dsys IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception. METHODS get_main_lang RETURNING VALUE(rv_language) TYPE spras. ENDCLASS. CLASS zcl_abapgit_object_dtdc DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. METHODS: clear_fields CHANGING cs_dynamic_cache TYPE any, clear_field IMPORTING iv_fieldname TYPE csequence CHANGING cs_dynamic_cache TYPE any, fill_metadata_from_db CHANGING cs_dynamic_cache TYPE any RAISING zcx_abapgit_exception, get_wb_object_operator RETURNING VALUE(ri_wb_object_operator) TYPE REF TO object RAISING zcx_abapgit_exception, has_own_wb_data_class RETURNING VALUE(rv_supported) TYPE abap_bool. DATA: mr_dynamic_cache TYPE REF TO data, mv_dynamic_cache_key TYPE seu_objkey, mv_has_own_wb_data_class TYPE abap_bool, mi_persistence TYPE REF TO if_wb_object_persist, mi_wb_object_operator TYPE REF TO object. ENDCLASS. CLASS zcl_abapgit_object_dtel DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_dd04_text, ddlanguage TYPE dd04t-ddlanguage, ddtext TYPE dd04t-ddtext, reptext TYPE dd04t-reptext, scrtext_s TYPE dd04t-scrtext_s, scrtext_m TYPE dd04t-scrtext_m, scrtext_l TYPE dd04t-scrtext_l, END OF ty_dd04_text . TYPES: ty_dd04_texts TYPE STANDARD TABLE OF ty_dd04_text . CONSTANTS c_longtext_id_dtel TYPE dokil-id VALUE 'DE' ##NO_TEXT. CONSTANTS c_longtext_id_dtel_suppl TYPE dokil-id VALUE 'DZ' ##NO_TEXT. METHODS serialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input !is_dd04v TYPE dd04v RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_ecatt_super DEFINITION INHERITING FROM zcl_abapgit_objects_super ABSTRACT CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. METHODS: get_object_type ABSTRACT RETURNING VALUE(rv_object_type) TYPE etobj_type, get_upload ABSTRACT RETURNING VALUE(ro_upload) TYPE REF TO cl_apl_ecatt_upload, get_download ABSTRACT RETURNING VALUE(ro_download) TYPE REF TO cl_apl_ecatt_download, get_lock_object ABSTRACT RETURNING VALUE(rv_lock_object) TYPE eqeobj. PRIVATE SECTION. TYPES: BEGIN OF ty_last_changed, luser TYPE syuname, ldate TYPE d, ltime TYPE t, END OF ty_last_changed. CONSTANTS: BEGIN OF c_name, version TYPE string VALUE 'VERSION' ##NO_TEXT, versions TYPE string VALUE 'VERSIONS' ##NO_TEXT, END OF c_name, c_default_version TYPE etobj_ver VALUE '1' ##NO_TEXT. CLASS-METHODS: is_change_more_recent_than IMPORTING is_currently_changed TYPE ty_last_changed is_last_changed TYPE ty_last_changed RETURNING VALUE(rv_is_change_more_recent) TYPE abap_bool. DATA: mv_object_name TYPE etobj_name. METHODS: get_changed_date IMPORTING ii_document TYPE REF TO if_ixml_document RETURNING VALUE(rv_changed_date) TYPE d, get_changed_time IMPORTING ii_document TYPE REF TO if_ixml_document RETURNING VALUE(rv_changed_time) TYPE t, get_changed_by_user IMPORTING ii_document TYPE REF TO if_ixml_document RETURNING VALUE(rv_changed_by_user) TYPE syuname, get_change_information IMPORTING is_version_info TYPE etversinfo RETURNING VALUE(rs_change_information) TYPE ty_last_changed RAISING cx_ecatt_apl zcx_abapgit_exception, clear_attributes CHANGING ci_document TYPE REF TO if_ixml_document, clear_elements CHANGING ci_document TYPE REF TO if_ixml_document, get_version_from_node IMPORTING ii_node TYPE REF TO if_ixml_node RETURNING VALUE(rv_version) TYPE string, deserialize_version IMPORTING ii_version_node TYPE REF TO if_ixml_node iv_package TYPE devclass RAISING zcx_abapgit_exception, serialize_version IMPORTING iv_version TYPE etversinfo-version CHANGING ci_node TYPE REF TO if_ixml_element RAISING cx_ecatt zcx_abapgit_exception, clear_element IMPORTING iv_name TYPE csequence CHANGING ci_document TYPE REF TO if_ixml_document, clear_element_collection IMPORTING iv_name TYPE csequence CHANGING ci_document TYPE REF TO if_ixml_document, serialize_versions IMPORTING it_version_info TYPE etversinfo_tabtype CHANGING ci_document TYPE REF TO if_ixml_document RAISING cx_ecatt zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_ecat DEFINITION INHERITING FROM zcl_abapgit_object_ecatt_super FINAL CREATE PUBLIC . PUBLIC SECTION. PROTECTED SECTION. METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, get_download REDEFINITION, get_lock_object REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_ecsd DEFINITION INHERITING FROM zcl_abapgit_object_ecatt_super FINAL CREATE PUBLIC . PUBLIC SECTION. PROTECTED SECTION. METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, get_download REDEFINITION, get_lock_object REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_ecsp DEFINITION INHERITING FROM zcl_abapgit_object_ecatt_super FINAL CREATE PUBLIC . PUBLIC SECTION. PROTECTED SECTION. METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, get_download REDEFINITION, get_lock_object REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_ectc DEFINITION INHERITING FROM zcl_abapgit_object_ecatt_super FINAL CREATE PUBLIC . PUBLIC SECTION. PROTECTED SECTION. METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, get_download REDEFINITION, get_lock_object REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_ectd DEFINITION INHERITING FROM zcl_abapgit_object_ecatt_super FINAL CREATE PUBLIC . PUBLIC SECTION. PROTECTED SECTION. METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, get_download REDEFINITION, get_lock_object REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_ecvo DEFINITION INHERITING FROM zcl_abapgit_object_ecatt_super FINAL CREATE PUBLIC . PUBLIC SECTION. PROTECTED SECTION. METHODS: get_object_type REDEFINITION, get_upload REDEFINITION, get_download REDEFINITION, get_lock_object REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_enhc DEFINITION INHERITING FROM zcl_abapgit_objects_super. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mv_composite_id TYPE enhcompositename. ENDCLASS. CLASS zcl_abapgit_object_enho DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS: factory IMPORTING iv_tool TYPE enhtooltype RETURNING VALUE(ri_enho) TYPE REF TO zif_abapgit_object_enho RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_enhs DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS: factory IMPORTING iv_tool TYPE enhtooltype RETURNING VALUE(ri_enho) TYPE REF TO zif_abapgit_object_enhs RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_enqu DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_dd27p TYPE STANDARD TABLE OF dd27p WITH DEFAULT KEY. METHODS _clear_dd27p_fields CHANGING ct_dd27p TYPE ty_dd27p. ENDCLASS. CLASS zcl_abapgit_object_ensc DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_fdt0 DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. METHODS check_is_local RETURNING VALUE(rv_is_local) TYPE abap_bool . METHODS get_application_id RETURNING VALUE(rv_application_id) TYPE fdt_admn_0000s-application_id . METHODS before_xml_deserialize IMPORTING !iv_package TYPE devclass EXPORTING !ev_create TYPE abap_bool !ev_is_local TYPE abap_bool CHANGING !co_dom_tree TYPE REF TO if_ixml_document RAISING zcx_abapgit_exception . METHODS filter_xml_serialize CHANGING !co_ixml_element TYPE REF TO if_ixml_element RAISING zcx_abapgit_exception . METHODS set_field IMPORTING !iv_name TYPE string !iv_value TYPE string DEFAULT '' CHANGING !co_ixml_element TYPE REF TO if_ixml_element RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_form DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: c_objectname_form TYPE thead-tdobject VALUE 'FORM' ##NO_TEXT. CONSTANTS: c_objectname_tdlines TYPE thead-tdobject VALUE 'TDLINES' ##NO_TEXT. CONSTANTS: c_extension_xml TYPE string VALUE 'xml' ##NO_TEXT. DATA: mv_form_name TYPE itcta-tdform. TYPES: BEGIN OF ty_s_form_data, form_header TYPE itcta, text_header TYPE thead, orig_language TYPE sy-langu, pages TYPE STANDARD TABLE OF itctg WITH DEFAULT KEY, page_windows TYPE STANDARD TABLE OF itcth WITH DEFAULT KEY, paragraphs TYPE STANDARD TABLE OF itcdp WITH DEFAULT KEY, strings TYPE STANDARD TABLE OF itcds WITH DEFAULT KEY, tabs TYPE STANDARD TABLE OF itcdq WITH DEFAULT KEY, windows TYPE STANDARD TABLE OF itctw WITH DEFAULT KEY, END OF ty_s_form_data, ty_t_form_data TYPE STANDARD TABLE OF ty_s_form_data WITH DEFAULT KEY, ty_t_form_header TYPE STANDARD TABLE OF itcta WITH DEFAULT KEY, ty_s_form_header TYPE LINE OF ty_t_form_header, ty_t_text_header TYPE STANDARD TABLE OF thead WITH DEFAULT KEY, ty_s_text_header TYPE LINE OF ty_t_text_header, ty_t_lines TYPE tline_tab. METHODS get_last_changes IMPORTING iv_form_name TYPE zif_abapgit_definitions=>ty_item-obj_name RETURNING VALUE(rs_last_changed) TYPE ty_s_form_header. METHODS build_extra_from_header IMPORTING is_header TYPE ty_s_form_header RETURNING VALUE(rv_result) TYPE string. METHODS build_extra_from_header_old IMPORTING is_header TYPE ty_s_form_header RETURNING VALUE(rv_result) TYPE string. METHODS _save_form IMPORTING it_lines TYPE ty_t_lines CHANGING cs_form_data TYPE ty_s_form_data. METHODS extract_tdlines IMPORTING is_form_data TYPE ty_s_form_data RETURNING VALUE(rt_lines) TYPE ty_t_lines RAISING zcx_abapgit_exception. METHODS _clear_changed_fields CHANGING cs_form_data TYPE ty_s_form_data. METHODS compress_lines IMPORTING is_form_data TYPE ty_s_form_data it_lines TYPE ty_t_lines RAISING zcx_abapgit_exception. METHODS find_form IMPORTING iv_object_name TYPE zif_abapgit_definitions=>ty_item-obj_name RETURNING VALUE(rt_text_header) TYPE ty_t_text_header. METHODS _read_form IMPORTING is_text_header TYPE ty_s_text_header EXPORTING ev_form_found TYPE abap_bool es_form_data TYPE ty_s_form_data et_lines TYPE ty_t_lines. METHODS _sort_tdlines_by_windows CHANGING ct_form_windows TYPE ty_s_form_data-windows ct_lines TYPE ty_t_lines. METHODS order_check_and_insert RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_ftgl DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mv_toggle_id TYPE c LENGTH 40, "sftgl_ft_id mr_toggle TYPE REF TO data. METHODS: clear_field IMPORTING iv_fieldname TYPE string CHANGING cg_header TYPE any. ENDCLASS. CLASS zcl_abapgit_object_g4ba DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_g4bs DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_iamu DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_internet_appl_comp_binary, attributes TYPE w3mimeattr, source TYPE w3mimetabtype, length TYPE i, extension TYPE string, END OF ty_internet_appl_comp_binary. DATA: mi_mime_api TYPE REF TO if_w3_api_mime. METHODS: get_extension IMPORTING iv_name TYPE csequence iv_data TYPE xstring RETURNING VALUE(rv_extension) TYPE string, load_mime_api RAISING zcx_abapgit_exception, read RETURNING VALUE(rs_internet_appl_comp_binary) TYPE ty_internet_appl_comp_binary RAISING zcx_abapgit_exception, save IMPORTING is_internet_appl_comp_binary TYPE ty_internet_appl_comp_binary RAISING zcx_abapgit_exception, lock IMPORTING iv_changable TYPE abap_bool RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_iarp DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: ms_name TYPE w3resokey. METHODS: read EXPORTING es_attributes TYPE w3resoattr et_parameters TYPE w3resopara_tabletype RAISING zcx_abapgit_exception, save IMPORTING is_attributes TYPE w3resoattr it_parameters TYPE w3resopara_tabletype RAISING zcx_abapgit_exception, w3_api_load RETURNING VALUE(ri_resource) TYPE REF TO if_w3_api_resource RAISING zcx_abapgit_exception, w3_api_get_attributes IMPORTING ii_resource TYPE REF TO if_w3_api_resource RETURNING VALUE(rs_attributes) TYPE w3resoattr RAISING zcx_abapgit_exception, w3_api_get_parameters IMPORTING ii_resource TYPE REF TO if_w3_api_resource RETURNING VALUE(rt_parameters) TYPE w3resopara_tabletype RAISING zcx_abapgit_exception, w3_api_create_new IMPORTING is_attributes TYPE w3resoattr RETURNING VALUE(ri_resource) TYPE REF TO if_w3_api_resource RAISING zcx_abapgit_exception, w3_api_set_attributes IMPORTING ii_resource TYPE REF TO if_w3_api_resource is_attributes TYPE w3resoattr RAISING zcx_abapgit_exception, w3_api_set_parameters IMPORTING ii_resource TYPE REF TO if_w3_api_resource it_parameters TYPE w3resopara_tabletype RAISING zcx_abapgit_exception, w3_api_save IMPORTING ii_resource TYPE REF TO if_w3_api_resource RAISING zcx_abapgit_exception, w3_api_set_changeable IMPORTING ii_resource TYPE REF TO if_w3_api_resource iv_changeable TYPE abap_bool DEFAULT abap_true RAISING zcx_abapgit_exception, w3_api_delete IMPORTING ii_resource TYPE REF TO if_w3_api_resource RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_iasp DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mv_name TYPE itsappl. METHODS: read EXPORTING es_attr TYPE w3servattr et_parameters TYPE w3servpara_tabletype RAISING zcx_abapgit_exception, save IMPORTING is_attr TYPE w3servattr it_parameters TYPE w3servpara_tabletype RAISING zcx_abapgit_exception, w3_api_load RETURNING VALUE(ri_service) TYPE REF TO if_w3_api_service RAISING zcx_abapgit_exception, w3_api_get_attributes IMPORTING ii_service TYPE REF TO if_w3_api_service RETURNING VALUE(rs_attributes) TYPE w3servattr, w3_api_get_parameters IMPORTING ii_service TYPE REF TO if_w3_api_service RETURNING VALUE(rt_parameters) TYPE w3servpara_tabletype, w3_api_create_new IMPORTING is_attributes TYPE w3servattr RETURNING VALUE(ri_service) TYPE REF TO if_w3_api_service RAISING zcx_abapgit_exception, w3_api_set_attributes IMPORTING ii_service TYPE REF TO if_w3_api_service is_attributes TYPE w3servattr RAISING zcx_abapgit_exception, w3_api_set_parameters IMPORTING ii_service TYPE REF TO if_w3_api_service it_parameters TYPE w3servpara_tabletype RAISING zcx_abapgit_exception, w3_api_save IMPORTING ii_service TYPE REF TO if_w3_api_service RAISING zcx_abapgit_exception, w3_api_set_changeable IMPORTING ii_service TYPE REF TO if_w3_api_service iv_changeable TYPE abap_bool DEFAULT abap_true RAISING zcx_abapgit_exception, w3_api_delete IMPORTING ii_service TYPE REF TO if_w3_api_service RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_iatu DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS: read EXPORTING es_attr TYPE w3tempattr ev_source TYPE string RAISING zcx_abapgit_exception, save IMPORTING is_attr TYPE w3tempattr iv_source TYPE string RAISING zcx_abapgit_exception, w3_api_load IMPORTING is_name TYPE iacikeyt RETURNING VALUE(ri_template) TYPE REF TO if_w3_api_template RAISING zcx_abapgit_exception, w3_api_set_changeable IMPORTING iv_changeable TYPE abap_bool ii_template TYPE REF TO if_w3_api_template RAISING zcx_abapgit_exception, w3_api_delete IMPORTING ii_template TYPE REF TO if_w3_api_template RAISING zcx_abapgit_exception, w3_api_save IMPORTING ii_template TYPE REF TO if_w3_api_template RAISING zcx_abapgit_exception, w3_api_get_attributes IMPORTING ii_template TYPE REF TO if_w3_api_template RETURNING VALUE(rs_attributes) TYPE w3tempattr RAISING zcx_abapgit_exception, w3_api_get_source IMPORTING ii_template TYPE REF TO if_w3_api_template RETURNING VALUE(rt_source) TYPE w3htmltabtype RAISING zcx_abapgit_exception, w3_api_create_new IMPORTING is_template_data TYPE w3tempattr RETURNING VALUE(ri_template) TYPE REF TO if_w3_api_template RAISING zcx_abapgit_exception, w3_api_set_attributes IMPORTING ii_template TYPE REF TO if_w3_api_template is_attr TYPE w3tempattr RAISING zcx_abapgit_exception, w3_api_set_source IMPORTING ii_template TYPE REF TO if_w3_api_template it_source TYPE w3htmltabtype RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_iaxu DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. DATA: mv_source_style_2006 TYPE w3style VALUE 'XML', mv_generator_class TYPE w3styleclass VALUE 'CL_ITS_GENERATE_XML3'. METHODS: read RETURNING VALUE(rs_attr) TYPE w3tempattr RAISING zcx_abapgit_exception, save IMPORTING is_attr TYPE w3tempattr RAISING zcx_abapgit_exception, w3_api_load IMPORTING is_name TYPE iacikeyt EXPORTING eo_xml_api TYPE REF TO object es_attr TYPE w3tempattr RAISING zcx_abapgit_exception, w3_api_set_changeable IMPORTING io_xml_api TYPE REF TO object iv_changeable TYPE abap_bool RAISING zcx_abapgit_exception, w3_api_delete IMPORTING io_xml_api TYPE REF TO object RAISING zcx_abapgit_exception, w3_api_save IMPORTING io_xml_api TYPE REF TO object RAISING zcx_abapgit_exception, w3_api_create_new IMPORTING is_attr TYPE w3tempattr RETURNING VALUE(ro_xml_api) TYPE REF TO object RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_idoc DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. CLASS-METHODS clear_idoc_segement_fields CHANGING cg_structure TYPE any. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_idoc, attributes TYPE edi_iapi01, t_syntax TYPE STANDARD TABLE OF edi_iapi02 WITH NON-UNIQUE DEFAULT KEY, END OF ty_idoc. DATA: mv_idoctyp TYPE edi_iapi00-idoctyp. CLASS-METHODS clear_idoc_segement_field IMPORTING iv_fieldname TYPE csequence CHANGING cg_structure TYPE any. METHODS is_closed RETURNING VALUE(rv_closed) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_object_iext DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_extention, attributes TYPE edi_iapi01, t_syntax TYPE STANDARD TABLE OF edi_iapi03 WITH NON-UNIQUE DEFAULT KEY, END OF ty_extention. CONSTANTS c_dataname_iext TYPE string VALUE 'IEXT' ##NO_TEXT. DATA: mv_extension TYPE edi_cimtyp. ENDCLASS. CLASS zcl_abapgit_object_iobj DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS: clear_field IMPORTING iv_fieldname TYPE string CHANGING cg_metadata TYPE any. ENDCLASS. CLASS zcl_abapgit_object_iwmo DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . PRIVATE SECTION. METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_iwom DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . PRIVATE SECTION. METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_iwpr DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . PRIVATE SECTION. METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_iwsg DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . PRIVATE SECTION. METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_iwsv DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . PRIVATE SECTION. METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_iwvb DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . PRIVATE SECTION. METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_jobd DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_jd_name TYPE c LENGTH 32. ENDCLASS. CLASS zcl_abapgit_object_msag DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_t100_text, sprsl TYPE t100-sprsl, msgnr TYPE t100-msgnr, text TYPE t100-text, END OF ty_t100_text . TYPES: ty_t100_texts TYPE STANDARD TABLE OF ty_t100_text . TYPES: ty_t100s TYPE STANDARD TABLE OF t100 WITH NON-UNIQUE DEFAULT KEY . CONSTANTS c_longtext_id_msag TYPE dokil-id VALUE 'NA'. METHODS serialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS serialize_longtexts_msag IMPORTING !it_t100 TYPE ty_t100s !ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS delete_msgid IMPORTING !iv_message_id TYPE arbgb RAISING zcx_abapgit_exception. METHODS free_access_permission IMPORTING !iv_message_id TYPE arbgb . METHODS delete_documentation IMPORTING !iv_message_id TYPE arbgb RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_nrob DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS: delete_intervals IMPORTING iv_object TYPE inri-object RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_nspc DEFINITION 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 !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_nspc, namespace TYPE trnspacet-namespace, replicense TYPE trnspacet-replicense, sscrflag TYPE trnspacet-sscrflag, sapflag TYPE trnspacet-sapflag, gen_only TYPE trnspacet-gen_only, END OF ty_nspc . TYPES: BEGIN OF ty_nspc_text, spras TYPE trnspacett-spras, descriptn TYPE trnspacett-descriptn, owner TYPE trnspacett-owner, END OF ty_nspc_text . TYPES: ty_nspc_texts TYPE STANDARD TABLE OF ty_nspc_text . DATA mv_component TYPE cvers-component. METHODS serialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input !iv_namespace TYPE namespace RAISING zcx_abapgit_exception . METHODS add_to_transport IMPORTING !iv_package TYPE devclass RAISING zcx_abapgit_exception . METHODS serialize_sw_component IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_sw_component IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_oa2p DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mv_profile TYPE c LENGTH 30. ENDCLASS. CLASS zcl_abapgit_object_odso DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. METHODS: clear_field IMPORTING iv_fieldname TYPE string CHANGING cg_metadata TYPE any. ENDCLASS. CLASS zcl_abapgit_object_otgr DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_otgr, cls_type_group TYPE cls_type_group, texts TYPE STANDARD TABLE OF cls_type_groupt WITH DEFAULT KEY, elements TYPE STANDARD TABLE OF cls_tygr_element WITH DEFAULT KEY, END OF ty_otgr . METHODS instantiate_and_lock_otgr RETURNING VALUE(ro_otgr) TYPE REF TO cl_cls_object_type_group RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_para DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS unlock IMPORTING !iv_paramid TYPE memoryid . ENDCLASS. CLASS zcl_abapgit_object_pdxx_super DEFINITION INHERITING FROM zcl_abapgit_objects_super ABSTRACT. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. DATA ms_objkey TYPE hrsobject. METHODS check_subrc_for IMPORTING iv_call TYPE clike OPTIONAL RAISING zcx_abapgit_exception. PRIVATE SECTION. ENDCLASS. INTERFACE iUFTsvrpxwdUTiJUSNzxoTkdegmNBa DEFERRED. * renamed: zcl_abapgit_object_pdts :: lif_task_definition INTERFACE iUFTsvrpxwdUTiJUSNzxoTkdegmNBa. TYPES: BEGIN OF ty_task_data, short_text TYPE hr_mcshort, plvar TYPE plvar, wi_text TYPE witext, method TYPE hrs1201, method_binding TYPE hrsmtbind, starting_events TYPE hrsevtab, starting_events_binding TYPE hrsevbind, terminating_events TYPE hrsetmtab, terminating_events_binding TYPE hrsevbind, descriptions TYPE wstexts, END OF ty_task_data. METHODS clear_origin_data. METHODS get_definition RETURNING VALUE(rs_result) TYPE ty_task_data. METHODS get_container RETURNING VALUE(ri_result) TYPE REF TO if_swf_cnt_container. METHODS get_user_container RETURNING VALUE(ri_result) TYPE REF TO if_swf_cnt_container. METHODS import_container IMPORTING iv_xml_string TYPE xstring RAISING zcx_abapgit_exception. METHODS create_task RAISING zcx_abapgit_exception. METHODS save IMPORTING iv_package TYPE devclass OPTIONAL RAISING zcx_abapgit_exception. METHODS change_wi_text RAISING zcx_abapgit_exception. METHODS change_method RAISING zcx_abapgit_exception. METHODS change_start_events RAISING zcx_abapgit_exception. METHODS change_terminating_events RAISING zcx_abapgit_exception. METHODS change_text RAISING zcx_abapgit_exception. ENDINTERFACE. CLASS zcl_abapgit_object_pdts DEFINITION INHERITING FROM zcl_abapgit_object_pdxx_super FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. METHODS zif_abapgit_object~serialize REDEFINITION. METHODS zif_abapgit_object~deserialize REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. DATA mv_objid TYPE hrobjid. METHODS get_container_xml IMPORTING ii_task TYPE REF TO iUFTsvrpxwdUTiJUSNzxoTkdegmNBa RETURNING VALUE(ri_first_element) TYPE REF TO if_ixml_element RAISING zcx_abapgit_exception. METHODS extract_container IMPORTING io_xml TYPE REF TO zif_abapgit_xml_input RETURNING VALUE(rv_result) TYPE xstring. ENDCLASS. CLASS zcl_abapgit_object_pers DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_personalization_object, pers_reg TYPE spers_reg, pers_reg_text TYPE spers_regt, END OF ty_personalization_object. DATA: mv_pers_key TYPE spers_key. METHODS: get_personalization_object IMPORTING iv_create TYPE abap_bool OPTIONAL iv_view_only TYPE abap_bool OPTIONAL RETURNING VALUE(ro_personalization_object) TYPE REF TO cl_pers_reg RAISING zcx_abapgit_exception. ENDCLASS. CLASS kHGwlqJyKbsVHldwKaGddDbbHeNaet DEFINITION DEFERRED. INTERFACE iUFTsqJyKbsVHldwKaGdXoRoiJNIwT DEFERRED. * renamed: zcl_abapgit_object_pinf :: lif_package_interface_facade INTERFACE iUFTsqJyKbsVHldwKaGdXoRoiJNIwT. TYPES ty_tpak_package_interf_elem_tt TYPE STANDARD TABLE OF tpak_package_interf_elem_ref WITH DEFAULT KEY. METHODS: get_elements RETURNING VALUE(rt_elements) TYPE ty_tpak_package_interf_elem_tt RAISING zcx_abapgit_exception, set_elements_changeable IMPORTING iv_changeable TYPE abap_bool RAISING zcx_abapgit_exception, save_elements RAISING zcx_abapgit_exception, get_all_attributes RETURNING VALUE(rs_package_interface_data) TYPE scompidtln RAISING zcx_abapgit_exception, set_changeable IMPORTING iv_changeable TYPE abap_bool RAISING zcx_abapgit_exception, delete RAISING zcx_abapgit_exception, save RAISING zcx_abapgit_exception, remove_elements IMPORTING it_elements TYPE tpak_package_interf_elem_list RAISING zcx_abapgit_exception, add_elements IMPORTING it_elements_data TYPE scomeldata RAISING zcx_abapgit_exception, set_all_attributes IMPORTING is_package_interface_data TYPE scompidtln is_data_sign TYPE scompisign RAISING zcx_abapgit_exception, get_changeable RETURNING VALUE(rv_changeable) TYPE abap_bool RAISING zcx_abapgit_exception. ENDINTERFACE. * renamed: zcl_abapgit_object_pinf :: lcl_package_interface_facade CLASS kHGwlqJyKbsVHldwKaGddDbbHeNaet DEFINITION. PUBLIC SECTION. INTERFACES: iUFTsqJyKbsVHldwKaGdXoRoiJNIwT. METHODS: constructor IMPORTING ii_interface TYPE REF TO if_package_interface. PRIVATE SECTION. DATA: mi_interface TYPE REF TO if_package_interface. ENDCLASS. CLASS zcl_abapgit_object_pinf DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_pinf, attributes TYPE scompidtln, elements TYPE STANDARD TABLE OF scomeldtln WITH DEFAULT KEY, END OF ty_pinf . TYPES: ty_elements TYPE STANDARD TABLE OF tpak_package_interf_elem_ref WITH DEFAULT KEY . METHODS create_or_load IMPORTING !is_pinf TYPE ty_pinf !iv_package TYPE devclass RETURNING VALUE(ri_interface) TYPE REF TO iUFTsqJyKbsVHldwKaGdXoRoiJNIwT RAISING zcx_abapgit_exception . METHODS delete_elements IMPORTING !ii_interface TYPE REF TO iUFTsqJyKbsVHldwKaGdXoRoiJNIwT RAISING zcx_abapgit_exception . METHODS update_attributes IMPORTING !iv_package TYPE devclass !is_pinf TYPE ty_pinf !ii_interface TYPE REF TO iUFTsqJyKbsVHldwKaGdXoRoiJNIwT RAISING zcx_abapgit_exception . METHODS update_elements IMPORTING !iv_package TYPE devclass !is_pinf TYPE ty_pinf !ii_interface TYPE REF TO iUFTsqJyKbsVHldwKaGdXoRoiJNIwT RAISING zcx_abapgit_exception . METHODS load IMPORTING iv_name TYPE scomifnam RETURNING VALUE(ri_interface) TYPE REF TO iUFTsqJyKbsVHldwKaGdXoRoiJNIwT. METHODS create_facade IMPORTING ii_interface TYPE REF TO if_package_interface RETURNING VALUE(ri_facade) TYPE REF TO iUFTsqJyKbsVHldwKaGdXoRoiJNIwT. ENDCLASS. CLASS zcl_abapgit_object_prag DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_pragma, pragma TYPE c LENGTH 40, extension TYPE c LENGTH 1, signature TYPE c LENGTH 10, description TYPE c LENGTH 255, END OF ty_pragma. ENDCLASS. CLASS zcl_abapgit_object_saxx_super DEFINITION INHERITING FROM zcl_abapgit_objects_super ABSTRACT CREATE PUBLIC . * common class for SAPC and SAMC objects PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. METHODS get_persistence_class_name ABSTRACT RETURNING VALUE(rv_persistence_class_name) TYPE seoclsname . METHODS get_data_class_name ABSTRACT RETURNING VALUE(rv_data_class_name) TYPE seoclsname . METHODS get_data_structure_name ABSTRACT RETURNING VALUE(rv_data_structure_name) TYPE string . PRIVATE SECTION. DATA mi_persistence TYPE REF TO if_wb_object_persist . DATA mi_appl_obj_data TYPE REF TO if_wb_object_data_model . DATA mv_data_structure_name TYPE string . DATA mv_appl_obj_cls_name TYPE seoclsname . DATA mv_persistence_cls_name TYPE seoclsname . METHODS create_channel_objects RAISING zcx_abapgit_exception . METHODS get_data EXPORTING !eg_data TYPE any RAISING zcx_abapgit_exception . METHODS lock RAISING zcx_abapgit_exception . METHODS unlock RAISING zcx_abapgit_exception . METHODS get_names . ENDCLASS. CLASS zcl_abapgit_object_samc DEFINITION INHERITING FROM zcl_abapgit_object_saxx_super FINAL CREATE PUBLIC . PUBLIC SECTION. PROTECTED SECTION. METHODS get_data_class_name REDEFINITION . METHODS get_data_structure_name REDEFINITION . METHODS get_persistence_class_name REDEFINITION . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_sapc DEFINITION INHERITING FROM zcl_abapgit_object_saxx_super FINAL CREATE PUBLIC . PUBLIC SECTION. PROTECTED SECTION. METHODS get_data_class_name REDEFINITION . METHODS get_data_structure_name REDEFINITION . METHODS get_persistence_class_name REDEFINITION . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_scp1 DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. TYPES: BEGIN OF ty_scp1, scprattr TYPE scprattr, scprtext TYPE STANDARD TABLE OF scprtext WITH DEFAULT KEY, scprvals TYPE STANDARD TABLE OF scprvals WITH DEFAULT KEY, scprvall TYPE STANDARD TABLE OF scprvall WITH DEFAULT KEY, scprreca TYPE STANDARD TABLE OF scprreca WITH DEFAULT KEY, scprfldv TYPE STANDARD TABLE OF scprfldv WITH DEFAULT KEY, subprofs TYPE STANDARD TABLE OF scprpprl WITH DEFAULT KEY, END OF ty_scp1 . METHODS dequeue . METHODS enqueue RAISING zcx_abapgit_exception . METHODS save IMPORTING !is_scp1 TYPE ty_scp1 RAISING zcx_abapgit_exception . METHODS save_hier IMPORTING !is_scp1 TYPE ty_scp1 RAISING zcx_abapgit_exception . METHODS adjust_inbound CHANGING !cs_scp1 TYPE ty_scp1 . METHODS adjust_outbound CHANGING !cs_scp1 TYPE ty_scp1 . METHODS load CHANGING !cs_scp1 TYPE ty_scp1 . METHODS load_hier CHANGING !cs_scp1 TYPE ty_scp1 . METHODS call_delete_fms IMPORTING !iv_profile_id TYPE scpr_id RAISING zcx_abapgit_exception . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_scvi DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_screen_variant, shdsvci TYPE shdsvci, shdsvtxci TYPE STANDARD TABLE OF shdsvtxci WITH DEFAULT KEY, shdsvfvci TYPE STANDARD TABLE OF shdsvfvci WITH DEFAULT KEY, shdguixt TYPE STANDARD TABLE OF shdguixt WITH DEFAULT KEY, shdgxtcode TYPE STANDARD TABLE OF shdgxtcode WITH DEFAULT KEY, END OF ty_screen_variant . ENDCLASS. CLASS zcl_abapgit_object_sfbf DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_longtext_id_sfbf TYPE dokil-id VALUE 'BF'. DATA mv_bf TYPE sfw_bfunction. METHODS: unlock, activate RAISING zcx_abapgit_exception, create RETURNING VALUE(ro_bf) TYPE REF TO cl_sfw_bf RAISING zcx_abapgit_exception, get RETURNING VALUE(ro_bf) TYPE REF TO cl_sfw_bf RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_sfbs DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_longtext_id_sfbs TYPE dokil-id VALUE 'BS'. DATA mv_bfset TYPE sfw_bset. METHODS: unlock, activate RAISING zcx_abapgit_exception, create RETURNING VALUE(ro_bfs) TYPE REF TO cl_sfw_bfs RAISING zcx_abapgit_exception, get RETURNING VALUE(ro_bfs) TYPE REF TO cl_sfw_bfs RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_sfpf DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . CLASS-METHODS fix_oref IMPORTING !ii_document TYPE REF TO if_ixml_document RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_layout_file_ext TYPE string VALUE 'xdp'. METHODS: load RETURNING VALUE(ri_wb_form) TYPE REF TO if_fp_wb_form RAISING zcx_abapgit_exception, form_to_xstring RETURNING VALUE(rv_xstr) TYPE xstring RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_sfpi DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS: load RETURNING VALUE(ri_wb_interface) TYPE REF TO if_fp_wb_interface RAISING zcx_abapgit_exception, interface_to_xstring RETURNING VALUE(rv_xstr) TYPE xstring RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_sfsw DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_longtext_id_sfsw TYPE dokil-id VALUE 'SW'. DATA mv_switch TYPE sfw_switch_id. METHODS: unlock, activate RAISING zcx_abapgit_exception, create RETURNING VALUE(ro_switch) TYPE REF TO cl_sfw_sw RAISING zcx_abapgit_exception, get RETURNING VALUE(ro_switch) TYPE REF TO cl_sfw_sw RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_shi3 DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. METHODS has_authorization IMPORTING !iv_devclass TYPE devclass !iv_structure_id TYPE hier_guid !iv_activity TYPE activ_auth RAISING zcx_abapgit_exception . METHODS is_used IMPORTING !iv_structure_id TYPE hier_guid RAISING zcx_abapgit_exception . METHODS delete_tree_structure IMPORTING !iv_structure_id TYPE hier_guid . PRIVATE SECTION. DATA mv_tree_id TYPE ttree-id. METHODS insert_transport IMPORTING !iv_transport TYPE trkorr RAISING zcx_abapgit_exception. METHODS jump_se43 RAISING zcx_abapgit_exception. METHODS jump_sbach04 RAISING zcx_abapgit_exception. METHODS clear_fields CHANGING !cs_head TYPE ttree !ct_nodes TYPE hier_iface_t. ENDCLASS. CLASS zcl_abapgit_object_shi5 DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_ttree_extt TYPE STANDARD TABLE OF ttree_extt WITH NON-UNIQUE DEFAULT KEY, BEGIN OF ty_extension, header TYPE ttree_ext, texts TYPE ty_ttree_extt, sequences TYPE STANDARD TABLE OF ttrees WITH NON-UNIQUE DEFAULT KEY, END OF ty_extension. DATA: mv_extension TYPE hier_names. ENDCLASS. CLASS zcl_abapgit_object_shi8 DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mv_assignment_id TYPE hier_sfw_id. ENDCLASS. CLASS zcl_abapgit_object_shlp DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS handle_dependencies IMPORTING !iv_step TYPE zif_abapgit_definitions=>ty_deserialization_step CHANGING !cv_exit TYPE dd30v-selmexit !cv_done TYPE abap_bool. METHODS adjust_exit CHANGING !cv_exit TYPE dd30v-selmexit. METHODS check_exit IMPORTING !iv_exit TYPE dd30v-selmexit RETURNING VALUE(rv_done) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_object_shma DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_sicf DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. TYPES ty_hash TYPE c LENGTH 25. TYPES: ty_icfhandler_tt TYPE STANDARD TABLE OF icfhandler WITH DEFAULT KEY . TYPES: BEGIN OF ty_sicf_key, icf_name TYPE icfservice-icf_name, icfparguid TYPE icfservice-icfparguid, END OF ty_sicf_key . METHODS serialize_otr IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_otr IMPORTING !iv_package TYPE devclass !io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS read IMPORTING !iv_clear TYPE abap_bool DEFAULT abap_true EXPORTING !es_icfservice TYPE icfservice !es_icfdocu TYPE icfdocu !et_icfhandler TYPE ty_icfhandler_tt !ev_url TYPE string RAISING zcx_abapgit_exception . METHODS insert_sicf IMPORTING !is_icfservice TYPE icfservice !is_icfdocu TYPE icfdocu !it_icfhandler TYPE ty_icfhandler_tt !iv_package TYPE devclass !iv_url TYPE string RAISING zcx_abapgit_exception . METHODS change_sicf IMPORTING !is_icfservice TYPE icfservice !is_icfdocu TYPE icfdocu !it_icfhandler TYPE ty_icfhandler_tt !iv_package TYPE devclass !iv_parent TYPE icfparguid RAISING zcx_abapgit_exception . METHODS to_icfhndlist IMPORTING !it_list TYPE ty_icfhandler_tt RETURNING VALUE(rt_list) TYPE icfhndlist . METHODS find_parent IMPORTING !iv_url TYPE string RETURNING VALUE(rv_parent) TYPE icfparguid RAISING zcx_abapgit_exception . CLASS-METHODS get_hash_from_object IMPORTING !iv_obj_name TYPE tadir-obj_name RETURNING VALUE(rv_hash) TYPE ty_hash RAISING zcx_abapgit_exception. CLASS-METHODS get_icfaltname IMPORTING !is_icfservice TYPE icfservice RETURNING VALUE(rv_icfaltnme) TYPE icfservice-icfaltnme. ENDCLASS. CLASS zcl_abapgit_object_sktd DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mr_data TYPE REF TO data . DATA mv_object_key TYPE seu_objkey . DATA mi_persistence TYPE REF TO if_wb_object_persist . DATA mi_wb_object_operator TYPE REF TO object . METHODS clear_fields CHANGING !cs_data TYPE any . METHODS clear_field IMPORTING !iv_fieldname TYPE csequence CHANGING !cs_data TYPE any . METHODS get_wb_object_operator RETURNING VALUE(ri_wb_object_operator) TYPE REF TO object RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_smim DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS get_filename IMPORTING iv_url TYPE string RETURNING VALUE(rv_filename) TYPE string. METHODS find_content IMPORTING iv_url TYPE string RETURNING VALUE(rv_content) TYPE xstring RAISING zcx_abapgit_exception. METHODS build_filename IMPORTING iv_filename TYPE string RETURNING VALUE(rv_filename) TYPE string. METHODS get_url_for_io EXPORTING ev_url TYPE string ev_is_folder TYPE abap_bool RAISING zcx_abapgit_not_found zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_smtg DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mv_template_id TYPE c LENGTH 30, mo_structdescr TYPE REF TO cl_abap_structdescr. METHODS: clear_field IMPORTING iv_fieldname TYPE string CHANGING cg_header TYPE any, get_structure RETURNING VALUE(ro_structdescr) TYPE REF TO cl_abap_structdescr RAISING zcx_abapgit_exception, add_component IMPORTING iv_fielname TYPE string iv_structure_name TYPE string CHANGING ct_components TYPE abap_component_tab RAISING zcx_abapgit_exception, get_template EXPORTING es_template TYPE any RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_sobj DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . PRIVATE SECTION. METHODS get_field_rules RETURNING VALUE(ri_rules) TYPE REF TO zif_abapgit_field_rules. METHODS is_locked RETURNING VALUE(rv_is_locked) TYPE abap_bool. METHODS is_objtype_locked RETURNING VALUE(rv_is_locked) TYPE abap_bool. METHODS is_program_locked RETURNING VALUE(rv_is_locked) TYPE abap_bool. METHODS get_program RETURNING VALUE(rv_program) TYPE tojtb-progname. ENDCLASS. CLASS zcl_abapgit_object_sod1 DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: c_xml_transformation_name TYPE string VALUE 'SOD1', c_data_model_class_name TYPE string VALUE 'CL_APS_ODA_WBI_SOD1_DATA_MODEL'. METHODS create_wb_object_operator IMPORTING !is_object_type TYPE wbobjtype !iv_object_key TYPE seu_objkey !iv_transport_request TYPE trkorr OPTIONAL !iv_do_commits TYPE abap_bool DEFAULT abap_true !iv_run_in_test_mode TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ro_wb_object_operator) TYPE REF TO object RAISING zcx_abapgit_exception. METHODS get_wb_object_operator IMPORTING !is_object_type TYPE wbobjtype !iv_object_key TYPE seu_objkey !iv_transport_request TYPE trkorr OPTIONAL RETURNING VALUE(ro_wb_object_operator) TYPE REF TO object RAISING zcx_abapgit_exception. METHODS clear_metadata_fields CHANGING !cs_data TYPE any. METHODS clear_content_fields CHANGING !cs_data TYPE any. METHODS clear_field IMPORTING !iv_fieldname TYPE csequence CHANGING !cs_metadata TYPE any. ENDCLASS. CLASS zcl_abapgit_object_sod2 DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: c_xml_transformation_name TYPE string VALUE 'SOD2', c_data_model_class_name TYPE string VALUE 'CL_APS_ODA_WBI_SOD2_DATA_MODEL'. METHODS create_wb_object_operator IMPORTING !is_object_type TYPE wbobjtype !iv_object_key TYPE seu_objkey !iv_transport_request TYPE trkorr OPTIONAL !iv_do_commits TYPE abap_bool DEFAULT abap_true !iv_run_in_test_mode TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ro_wb_object_operator) TYPE REF TO object RAISING zcx_abapgit_exception. METHODS get_wb_object_operator IMPORTING !is_object_type TYPE wbobjtype !iv_object_key TYPE seu_objkey !iv_transport_request TYPE trkorr OPTIONAL RETURNING VALUE(ro_wb_object_operator) TYPE REF TO object RAISING zcx_abapgit_exception. METHODS clear_metadata_fields CHANGING !cs_data TYPE any. METHODS clear_content_fields CHANGING !cs_data TYPE any. METHODS clear_field IMPORTING !iv_fieldname TYPE csequence CHANGING !cs_metadata TYPE any. ENDCLASS. CLASS zcl_abapgit_object_sots DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES: zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_sots, header TYPE sotr_headu, entries TYPE sotr_textl_tt, END OF ty_sots, ty_sots_tt TYPE STANDARD TABLE OF ty_sots WITH NON-UNIQUE DEFAULT KEY. METHODS: read_sots RETURNING VALUE(rt_sots) TYPE ty_sots_tt, create_sots IMPORTING is_sots TYPE ty_sots iv_package TYPE devclass iv_object TYPE trobjtype RAISING zcx_abapgit_exception, get_raw_text_filename IMPORTING is_entry TYPE sotr_textl RETURNING VALUE(rv_filename) TYPE string. ENDCLASS. CLASS zcl_abapgit_object_splo DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_sppf DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_sprx DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES: zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_proxy, data TYPE string VALUE 'PROXY_DATA' ##NO_TEXT, header TYPE string VALUE 'PROXY_HEADER' ##NO_TEXT, END OF c_proxy . DATA mv_object TYPE sproxhdr-object . DATA mv_obj_name TYPE sproxhdr-obj_name . METHODS load_db RETURNING VALUE(rs_data) TYPE sprx_db_data . METHODS get_object_and_name EXPORTING !ev_object TYPE sproxhdr-object !ev_obj_name TYPE sproxhdr-obj_name . METHODS delta_handling IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input EXPORTING !et_sproxhdr_new TYPE sprx_hdr_t !et_sproxdat_new TYPE sprx_dat_t RAISING zcx_abapgit_exception . METHODS check_sprx_tadir RAISING zcx_abapgit_exception . METHODS save IMPORTING !it_sproxhdr_new TYPE sprx_hdr_t !it_sproxdat_new TYPE sprx_dat_t . ENDCLASS. CLASS zcl_abapgit_object_sqsc DEFINITION 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 !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. 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. METHODS: delete_interface_if_it_exists IMPORTING iv_package TYPE devclass iv_transport TYPE trkorr iv_interface TYPE ty_abap_name RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_srfc DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_srvb DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. METHODS: clear_fields CHANGING cs_service_binding TYPE any, clear_field IMPORTING iv_fieldname TYPE csequence CHANGING cs_service_binding TYPE any. METHODS get_wb_object_operator RETURNING VALUE(ro_object_operator) TYPE REF TO object RAISING zcx_abapgit_exception . METHODS merge_object_data IMPORTING !io_object_data TYPE REF TO object RETURNING VALUE(ro_object_data_merged) TYPE REF TO if_wb_object_data_model RAISING zcx_abapgit_exception . METHODS get_object_data IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input RETURNING VALUE(ro_object_data) TYPE REF TO if_wb_object_data_model RAISING zcx_abapgit_exception . METHODS is_ai_supported RETURNING VALUE(rv_ai_supported) TYPE abap_bool. DATA: mi_persistence TYPE REF TO if_wb_object_persist, mv_is_inactive_supported TYPE abap_bool, mv_service_binding_key TYPE seu_objkey, mr_service_binding TYPE REF TO data, mr_srvb_svrs_config TYPE REF TO object, mo_object_operator TYPE REF TO object. ENDCLASS. CLASS zcl_abapgit_object_srvd DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mv_service_definition_key TYPE seu_objkey . DATA mr_service_definition TYPE REF TO data . CONSTANTS c_source_file TYPE string VALUE 'srvdsrv' ##NO_TEXT. CONSTANTS c_xml_parent_name TYPE string VALUE 'SRVD' ##NO_TEXT. DATA mo_object_operator TYPE REF TO object . METHODS clear_fields CHANGING !cs_metadata TYPE any . METHODS clear_field IMPORTING !iv_fieldname TYPE csequence CHANGING !cs_metadata TYPE any . METHODS get_object_data IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input RETURNING VALUE(ro_object_data) TYPE REF TO if_wb_object_data_model RAISING zcx_abapgit_exception . METHODS get_wb_object_operator RETURNING VALUE(ro_object_operator) TYPE REF TO object RAISING zcx_abapgit_exception . METHODS merge_object_data IMPORTING !io_object_data TYPE REF TO object RETURNING VALUE(ro_object_data_merged) TYPE REF TO if_wb_object_data_model RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_ssfo DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_string_range TYPE RANGE OF string . CLASS-DATA gt_range_node_codes TYPE ty_string_range . CONSTANTS c_prefix TYPE string VALUE 'File:'. METHODS fix_ids IMPORTING !ii_xml_doc TYPE REF TO if_ixml_document . METHODS sort_texts IMPORTING !ii_xml_doc TYPE REF TO if_ixml_document RAISING zcx_abapgit_exception . METHODS get_range_node_codes RETURNING VALUE(rt_range_node_codes) TYPE ty_string_range . METHODS deserialize_sources IMPORTING !ii_node TYPE REF TO if_ixml_node RAISING zcx_abapgit_exception. METHODS serialize_sources IMPORTING !ii_node TYPE REF TO if_ixml_node RAISING zcx_abapgit_exception. METHODS get_hash_for_path IMPORTING !ii_node TYPE REF TO if_ixml_node RETURNING VALUE(rv_hash) TYPE string RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_ssst DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. CONSTANTS: c_style_active TYPE tdactivate VALUE 'A'. PROTECTED SECTION. PRIVATE SECTION. METHODS validate_font IMPORTING iv_tdfamily TYPE tdfamily RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_stvi DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_transaction_variant, shdtvciu TYPE shdtvciu, shdttciu TYPE STANDARD TABLE OF shdttciu WITH DEFAULT KEY, shdfvguicu TYPE STANDARD TABLE OF shdfvguicu WITH DEFAULT KEY, shdtvsvciu TYPE STANDARD TABLE OF shdtvsvciu WITH DEFAULT KEY, END OF ty_transaction_variant. ENDCLASS. CLASS zcl_abapgit_object_styl DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_style, header TYPE itcda, paragraphs TYPE STANDARD TABLE OF itcdp WITH DEFAULT KEY, strings TYPE STANDARD TABLE OF itcds WITH DEFAULT KEY, tabs TYPE STANDARD TABLE OF itcdq WITH DEFAULT KEY, END OF ty_style. ENDCLASS. CLASS zcl_abapgit_object_sucu DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_susc DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. CONSTANTS c_transobjecttype_class TYPE c LENGTH 1 VALUE 'C' ##NO_TEXT. METHODS has_authorization IMPORTING !iv_class TYPE tobc-oclss !iv_activity TYPE activ_auth RAISING zcx_abapgit_exception . METHODS is_used IMPORTING !iv_auth_object_class TYPE tobc-oclss RAISING zcx_abapgit_exception . PRIVATE SECTION. METHODS delete_class IMPORTING !iv_auth_object_class TYPE tobc-oclss . METHODS put_delete_to_transport RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_sush DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. METHODS clear_metadata CHANGING cs_data_head TYPE any ct_usobx TYPE table ct_usobt TYPE table ct_usobx_ext TYPE table ct_usobt_ext TYPE table. ENDCLASS. CLASS zcl_abapgit_object_suso DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_longtext_id_suso TYPE dokil-id VALUE 'UO'. DATA: mv_objectname TYPE tobj-objct. METHODS: delete_documentation RAISING zcx_abapgit_exception, pre_check RAISING zcx_abapgit_exception, regenerate_sap_all. ENDCLASS. CLASS zcl_abapgit_object_sxci DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_classic_badi_implementation, implementation_data TYPE impl_data, function_codes TYPE seex_fcode_table, control_composites TYPE seex_coco_table, customer_includes TYPE seex_table_table, screens TYPE seex_screen_table, filters TYPE seex_filter_table, END OF ty_classic_badi_implementation. ENDCLASS. CLASS zcl_abapgit_object_sxsd DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item iv_language TYPE spras io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL. PROTECTED SECTION. PRIVATE SECTION. DATA ms_badi_attr TYPE sxc_attr. ENDCLASS. CLASS zcl_abapgit_object_tobj DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_tobj, tddat TYPE tddat, tvdir TYPE tvdir, tvimf TYPE STANDARD TABLE OF tvimf WITH DEFAULT KEY, END OF ty_tobj. METHODS: read_extra IMPORTING iv_tabname TYPE vim_name RETURNING VALUE(rs_tobj) TYPE ty_tobj, update_extra IMPORTING is_tobj TYPE ty_tobj, delete_extra IMPORTING iv_tabname TYPE vim_name. ENDCLASS. CLASS zcl_abapgit_object_tran DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_param_values TYPE STANDARD TABLE OF rsparam WITH NON-UNIQUE DEFAULT KEY , ty_tstca TYPE STANDARD TABLE OF tstca WITH DEFAULT KEY. CONSTANTS: c_oo_program TYPE c LENGTH 9 VALUE '\PROGRAM=' ##NO_TEXT, c_oo_class TYPE c LENGTH 7 VALUE '\CLASS=' ##NO_TEXT, c_oo_method TYPE c LENGTH 8 VALUE '\METHOD=' ##NO_TEXT, c_oo_tcode TYPE tcode VALUE 'OS_APPLICATION' ##NO_TEXT, c_oo_frclass TYPE c LENGTH 30 VALUE 'CLASS' ##NO_TEXT, c_oo_frmethod TYPE c LENGTH 30 VALUE 'METHOD' ##NO_TEXT, c_oo_frupdtask TYPE c LENGTH 30 VALUE 'UPDATE_MODE' ##NO_TEXT, c_oo_synchron TYPE c VALUE 'S' ##NO_TEXT, c_oo_asynchron TYPE c VALUE 'U' ##NO_TEXT, c_true TYPE c VALUE 'X' ##NO_TEXT, c_false TYPE c VALUE space ##NO_TEXT, BEGIN OF c_variant_type, dialog TYPE rglif-docutype VALUE 'D' ##NO_TEXT, report TYPE rglif-docutype VALUE 'R' ##NO_TEXT, variant TYPE rglif-docutype VALUE 'V' ##NO_TEXT, parameters TYPE rglif-docutype VALUE 'P' ##NO_TEXT, object TYPE rglif-docutype VALUE 'O' ##NO_TEXT, END OF c_variant_type. DATA: mt_bcdata TYPE STANDARD TABLE OF bdcdata . METHODS transaction_read IMPORTING iv_transaction TYPE tcode EXPORTING es_transaction TYPE tstc es_gui_attr TYPE tstcc RAISING zcx_abapgit_exception. METHODS shift_param CHANGING !ct_rsparam TYPE s_param !cs_tstcp TYPE tstcp . METHODS add_data IMPORTING !iv_fnam TYPE bdcdata-fnam !iv_fval TYPE clike . METHODS call_se93 RAISING zcx_abapgit_exception . METHODS set_oo_parameters IMPORTING !it_rsparam TYPE s_param CHANGING !cs_rsstcd TYPE rsstcd . METHODS split_parameters CHANGING !ct_rsparam TYPE s_param !cs_rsstcd TYPE rsstcd !cs_tstcp TYPE tstcp !cs_tstc TYPE tstc . METHODS split_parameters_comp IMPORTING !ig_type TYPE any !ig_param TYPE any CHANGING !cg_value TYPE any . METHODS serialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS deserialize_oo_transaction IMPORTING !iv_package TYPE devclass !is_tstc TYPE tstc !is_tstcc TYPE tstcc !is_tstct TYPE tstct !is_rsstcd TYPE rsstcd RAISING zcx_abapgit_exception . METHODS save_authorizations IMPORTING iv_transaction TYPE tstc-tcode it_authorizations TYPE ty_tstca RAISING zcx_abapgit_exception. METHODS clear_functiongroup_globals. METHODS is_variant_transaction IMPORTING is_tstcp TYPE tstcp RETURNING VALUE(rv_variant_transaction) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_object_ttyp DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_longtext_id_ttyp TYPE dokil-id VALUE 'TT'. ENDCLASS. CLASS zcl_abapgit_object_type DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: c_prefix TYPE c LENGTH 3 VALUE '%_C'. METHODS read EXPORTING ev_ddtext TYPE ddtypet-ddtext et_source TYPE abaptxt255_tab RAISING zcx_abapgit_exception. METHODS create IMPORTING iv_ddtext TYPE ddtypet-ddtext it_source TYPE abaptxt255_tab iv_devclass TYPE devclass RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_ucsa DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_version, active TYPE r3state VALUE 'A', inactive TYPE r3state VALUE 'I', END OF c_version . TYPES: ty_id TYPE c LENGTH 30. METHODS: get_persistence IMPORTING iv_id TYPE ty_id RETURNING VALUE(ro_persistence) TYPE REF TO object, clear_dynamic_fields CHANGING cg_complete_comm_assembly TYPE any, clear_field IMPORTING iv_fieldname TYPE csequence CHANGING cg_header TYPE any. ENDCLASS. CLASS zcl_abapgit_object_udmo DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. METHODS corr_insert REDEFINITION . PRIVATE SECTION. TYPES: " You are reminded that the text serialisation / de-serialisation methods depend upon a common type. " To make the dependency explicit, there is one common definition. BEGIN OF ty_udmo_text_type. TYPES sprache TYPE dm40t-sprache. TYPES dmoid TYPE dm40t-dmoid. TYPES langbez TYPE dm40t-langbez. TYPES as4local TYPE dm40t-as4local. TYPES END OF ty_udmo_text_type . DATA mv_data_model TYPE uddmodl . DATA mv_text_object TYPE doku_obj . DATA mv_lxe_text_name TYPE lxeobjname . DATA mv_activation_state TYPE as4local . DATA ms_object_type TYPE rsdeo . CONSTANTS c_transport_object_class TYPE trobjtype VALUE 'SUDM' ##NO_TEXT. CONSTANTS c_lxe_text_type TYPE lxeobjtype VALUE 'IM' ##NO_TEXT. CONSTANTS c_correction_object_type TYPE rsdeo-objtype VALUE 'UDMO' ##NO_TEXT. CONSTANTS c_active_state TYPE as4local VALUE 'A' ##NO_TEXT. METHODS is_name_permitted RAISING zcx_abapgit_exception . METHODS update_tree . METHODS serialize_short_texts IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_short_texts IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS serialize_long_texts IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_long_texts IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS serialize_entities IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_entities IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS access_modify RETURNING VALUE(rv_result) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS access_free RETURNING VALUE(rv_result) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS deserialize_model IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS serialize_model IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_ueno DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES BEGIN OF ty_docu. TYPES language TYPE dm40t-sprache. TYPES header TYPE thead. TYPES content TYPE xstring. TYPES itf TYPE tsftext. TYPES END OF ty_docu. TYPES ty_docu_lines TYPE STANDARD TABLE OF ty_docu WITH DEFAULT KEY. DATA mv_entity_id TYPE udentity. CONSTANTS c_text_object_type TYPE lxeobjtype VALUE 'IM' ##NO_TEXT. CONSTANTS c_active_state TYPE as4local VALUE 'A' ##NO_TEXT. METHODS build_text_name IMPORTING iv_id TYPE tdid RETURNING VALUE(rv_result) TYPE doku_obj. METHODS is_name_permitted RAISING zcx_abapgit_exception. METHODS delete_docu_uen RAISING zcx_abapgit_exception. METHODS delete_docu_url RAISING zcx_abapgit_exception. METHODS delete_docu_usp RAISING zcx_abapgit_exception. METHODS deserialize_docu_uen IMPORTING io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception. METHODS deserialize_docu_url IMPORTING io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception. METHODS deserialize_docu_usp IMPORTING io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception. METHODS serialize_docu_uen IMPORTING io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception. METHODS serialize_docu_url IMPORTING io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception. METHODS serialize_docu_xxxx IMPORTING iv_id TYPE tdid RETURNING VALUE(rt_result) TYPE ty_docu_lines. METHODS serialize_docu_usp IMPORTING io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception. METHODS deserialize_docu_xxxx IMPORTING it_docu TYPE ty_docu_lines RAISING zcx_abapgit_exception. METHODS get_generic RETURNING VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . METHODS get_field_rules RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. CLASS zcl_abapgit_object_vcls DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. * See include MTOBJCON: CONSTANTS c_cluster_type TYPE c VALUE 'C' ##NO_TEXT. CONSTANTS c_mode_insert TYPE obj_para-maint_mode VALUE 'I' ##NO_TEXT. METHODS is_locked IMPORTING !iv_tabname TYPE tabname !iv_argument TYPE seqg3-garg RETURNING VALUE(rv_is_locked) TYPE abap_bool RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_view DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. "! get additional data like table authorization group "! @parameter iv_name | name of the view METHODS read_extras IMPORTING iv_name TYPE ddobjname RETURNING VALUE(rs_tabl_extras) TYPE zif_abapgit_object_tabl=>ty_tabl_extras. "! Update additional data "! @parameter iv_name | name of the table "! @parameter iv_transport | transport request "! @parameter is_tabl_extras | additional view data METHODS update_extras IMPORTING iv_name TYPE ddobjname iv_transport TYPE trkorr is_tabl_extras TYPE zif_abapgit_object_tabl=>ty_tabl_extras RAISING zcx_abapgit_exception. "! Delete additional data "! @parameter iv_name | name of the view "! @parameter iv_transport | transport request METHODS delete_extras IMPORTING iv_name TYPE ddobjname iv_transport TYPE trkorr RAISING zcx_abapgit_exception. METHODS insert_transport IMPORTING iv_name TYPE ddobjname iv_transport TYPE trkorr RAISING zcx_abapgit_exception. PRIVATE SECTION. TYPES: ty_dd26v TYPE STANDARD TABLE OF dd26v WITH NON-UNIQUE DEFAULT KEY, ty_dd27p TYPE STANDARD TABLE OF dd27p WITH NON-UNIQUE DEFAULT KEY, ty_dd28j TYPE STANDARD TABLE OF dd28j WITH NON-UNIQUE DEFAULT KEY, ty_dd28v TYPE STANDARD TABLE OF dd28v WITH NON-UNIQUE DEFAULT KEY, BEGIN OF ty_dd25_text, ddlanguage TYPE dd25t-ddlanguage, ddtext TYPE dd25t-ddtext, END OF ty_dd25_text , ty_dd25_texts TYPE STANDARD TABLE OF ty_dd25_text. CONSTANTS c_longtext_id_view TYPE dokil-id VALUE 'VW'. METHODS: read_view IMPORTING iv_language TYPE sy-langu EXPORTING ev_state TYPE ddgotstate es_dd25v TYPE dd25v es_dd09l TYPE dd09l et_dd26v TYPE ty_dd26v et_dd27p TYPE ty_dd27p et_dd28j TYPE ty_dd28j et_dd28v TYPE ty_dd28v es_extras TYPE zif_abapgit_object_tabl=>ty_tabl_extras RAISING zcx_abapgit_exception, serialize_texts IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception, deserialize_texts IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input is_dd25v TYPE dd25v RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_w3xx_super DEFINITION INHERITING FROM zcl_abapgit_objects_super ABSTRACT CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . TYPES: ty_wwwparams_tt TYPE STANDARD TABLE OF wwwparams WITH DEFAULT KEY . CONSTANTS: BEGIN OF c_param_names, version TYPE w3_name VALUE 'version', fileext TYPE w3_name VALUE 'fileextension', filesize TYPE w3_name VALUE 'filesize', filename TYPE w3_name VALUE 'filename', mimetype TYPE w3_name VALUE 'mimetype', END OF c_param_names . METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. TYPES ty_bdcdata TYPE STANDARD TABLE OF bdcdata WITH NON-UNIQUE DEFAULT KEY. METHODS change_bdc_jump_data ABSTRACT CHANGING ct_bdcdata TYPE ty_bdcdata. PRIVATE SECTION. DATA ms_key TYPE wwwdatatab. METHODS get_ext IMPORTING it_params TYPE ty_wwwparams_tt RETURNING VALUE(rv_ext) TYPE string RAISING zcx_abapgit_exception. METHODS normalize_params IMPORTING iv_size TYPE i CHANGING ct_params TYPE ty_wwwparams_tt " Param table to patch RAISING zcx_abapgit_exception. METHODS strip_params CHANGING ct_params TYPE ty_wwwparams_tt RAISING zcx_abapgit_exception. METHODS find_param IMPORTING it_params TYPE ty_wwwparams_tt iv_name TYPE w3_name RETURNING VALUE(rv_value) TYPE string RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_w3ht DEFINITION INHERITING FROM zcl_abapgit_object_w3xx_super FINAL. PROTECTED SECTION. METHODS: change_bdc_jump_data REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_w3mi DEFINITION INHERITING FROM zcl_abapgit_object_w3xx_super FINAL. PROTECTED SECTION. METHODS: change_bdc_jump_data REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_wapa DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_page, attributes TYPE o2pagattr, event_handlers TYPE o2pagevh_tabletype, parameters TYPE o2pagpar_tabletype, types TYPE rswsourcet, END OF ty_page. TYPES: ty_pages_tt TYPE STANDARD TABLE OF ty_page WITH DEFAULT KEY. CONSTANTS: c_active TYPE so2_version VALUE 'A'. METHODS: get_page_content IMPORTING io_page TYPE REF TO cl_o2_api_pages RETURNING VALUE(rv_content) TYPE xstring RAISING zcx_abapgit_exception, to_page_content IMPORTING iv_content TYPE xstring RETURNING VALUE(rt_content) TYPE o2pageline_table RAISING zcx_abapgit_exception, read_page IMPORTING is_page TYPE o2pagattr iv_no_files_add TYPE abap_bool OPTIONAL RETURNING VALUE(rs_page) TYPE ty_page RAISING zcx_abapgit_exception, create_new_application IMPORTING is_attributes TYPE o2applattr it_nodes TYPE o2applnode_table it_navgraph TYPE o2applgrap_table RETURNING VALUE(ro_bsp) TYPE REF TO cl_o2_api_application RAISING zcx_abapgit_exception, create_new_page IMPORTING is_page_attributes TYPE o2pagattr RETURNING VALUE(ro_page) TYPE REF TO cl_o2_api_pages RAISING zcx_abapgit_exception, delete_superfluous_pages IMPORTING it_local_pages TYPE o2pagelist it_remote_pages TYPE ty_pages_tt RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_wdca DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. METHODS read EXPORTING !es_outline TYPE wdy_cfg_outline_data !et_data TYPE wdy_cfg_persist_data_appl_tab RAISING zcx_abapgit_exception . METHODS save IMPORTING !is_outline TYPE wdy_cfg_outline_data !it_data TYPE wdy_cfg_persist_data_appl_tab !iv_package TYPE devclass !iv_transport TYPE trkorr RAISING zcx_abapgit_exception . METHODS delete IMPORTING !iv_package TYPE devclass !iv_transport TYPE trkorr RAISING zcx_abapgit_exception . METHODS check IMPORTING !it_messages TYPE cts_messages RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_wdcc DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_wdya DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_longtext_id_wdya TYPE dokil-id VALUE 'WA'. METHODS read EXPORTING es_app TYPE wdy_application et_properties TYPE wdy_app_property_table RAISING zcx_abapgit_exception. METHODS save IMPORTING is_app TYPE wdy_application it_properties TYPE wdy_app_property_table iv_package TYPE devclass RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_wdyn DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_longtext_id_wc TYPE dokil-id VALUE 'WC' ##NO_TEXT. CONSTANTS c_longtext_id_wd TYPE dokil-id VALUE 'WD' ##NO_TEXT. CONSTANTS c_longtext_name_wc TYPE string VALUE 'LONGTEXTS_WC' ##NO_TEXT. DATA: mt_components TYPE TABLE OF wdy_ctlr_compo_vrs, mt_sources TYPE TABLE OF wdy_ctlr_compo_source_vrs. METHODS: get_limu_objects RETURNING VALUE(rt_objects) TYPE wdy_md_transport_keys, read RETURNING VALUE(rs_component) TYPE wdy_component_metadata RAISING zcx_abapgit_exception, read_controller IMPORTING is_key TYPE wdy_md_controller_key RETURNING VALUE(rs_controller) TYPE wdy_md_controller_meta_data RAISING zcx_abapgit_exception, read_definition IMPORTING is_key TYPE wdy_md_component_key RETURNING VALUE(rs_definition) TYPE wdy_md_component_meta_data RAISING zcx_abapgit_exception, read_view IMPORTING is_key TYPE wdy_md_view_key RETURNING VALUE(rs_view) TYPE wdy_md_view_meta_data RAISING zcx_abapgit_exception, recover_controller IMPORTING is_controller TYPE wdy_md_controller_meta_data RAISING zcx_abapgit_exception, recover_definition IMPORTING is_definition TYPE wdy_md_component_meta_data iv_package TYPE devclass RAISING zcx_abapgit_exception, recover_view IMPORTING is_view TYPE wdy_md_view_meta_data RAISING zcx_abapgit_exception, delta_controller IMPORTING is_controller TYPE wdy_md_controller_meta_data RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object RAISING zcx_abapgit_exception, delta_definition IMPORTING is_definition TYPE wdy_md_component_meta_data VALUE(iv_package) TYPE devclass RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object RAISING zcx_abapgit_exception, delta_view IMPORTING is_view TYPE wdy_md_view_meta_data RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object RAISING zcx_abapgit_exception, deserialize_sources IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception, serialize_sources IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception, add_fm_param_exporting IMPORTING iv_name TYPE string ig_value TYPE any CHANGING ct_param TYPE abap_func_parmbind_tab, add_fm_param_tables IMPORTING iv_name TYPE string CHANGING ct_value TYPE ANY TABLE ct_param TYPE abap_func_parmbind_tab, add_fm_exception IMPORTING iv_name TYPE string iv_value TYPE i CHANGING ct_exception TYPE abap_func_excpbind_tab, add_with_inactive_parts RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_webi DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_webi, veptext TYPE veptext, pvepheader TYPE STANDARD TABLE OF vepheader WITH DEFAULT KEY, pvepfunction TYPE STANDARD TABLE OF vepfunction WITH DEFAULT KEY, pvepfault TYPE STANDARD TABLE OF vepfault WITH DEFAULT KEY, pvepparameter TYPE STANDARD TABLE OF vepparameter WITH DEFAULT KEY, pveptype TYPE STANDARD TABLE OF veptype WITH DEFAULT KEY, pvepelemtype TYPE STANDARD TABLE OF vepelemtype WITH DEFAULT KEY, pveptabletype TYPE STANDARD TABLE OF veptabletype WITH DEFAULT KEY, pvepstrutype TYPE STANDARD TABLE OF vepstrutype WITH DEFAULT KEY, pveptypesoapext TYPE STANDARD TABLE OF veptypesoapext WITH DEFAULT KEY, pvepeletypsoap TYPE STANDARD TABLE OF vepeletypsoap WITH DEFAULT KEY, pveptabtypsoap TYPE STANDARD TABLE OF veptabtypsoap WITH DEFAULT KEY, pvepfuncsoapext TYPE STANDARD TABLE OF vepfuncsoapext WITH DEFAULT KEY, pvepfieldref TYPE STANDARD TABLE OF vepfieldref WITH DEFAULT KEY, pvependpoint TYPE STANDARD TABLE OF vependpoint WITH DEFAULT KEY, pvepvisoapext TYPE STANDARD TABLE OF vepvisoapext WITH DEFAULT KEY, pvepparasoapext TYPE STANDARD TABLE OF vepparasoapext WITH DEFAULT KEY, pwsheader TYPE STANDARD TABLE OF wsheader WITH DEFAULT KEY, pwssoapprop TYPE STANDARD TABLE OF wssoapprop WITH DEFAULT KEY, END OF ty_webi. DATA: mi_vi TYPE REF TO if_ws_md_vif. METHODS: handle_endpoint IMPORTING is_webi TYPE ty_webi RAISING zcx_abapgit_exception cx_ws_md_exception, handle_types IMPORTING is_webi TYPE ty_webi RAISING zcx_abapgit_exception cx_ws_md_exception, handle_soap IMPORTING is_webi TYPE ty_webi RAISING zcx_abapgit_exception cx_ws_md_exception, handle_function IMPORTING is_webi TYPE ty_webi RAISING zcx_abapgit_exception cx_ws_md_exception. METHODS handle_single_parameter IMPORTING iv_parameter_type TYPE vepparamtype iv_name TYPE vepparameter-vepparam ii_function TYPE REF TO if_ws_md_vif_func RETURNING VALUE(ri_parameter) TYPE REF TO if_ws_md_vif_param RAISING zcx_abapgit_exception cx_ws_md_exception. METHODS sort CHANGING cs_webi TYPE ty_webi. ENDCLASS. CLASS zcl_abapgit_object_xinx DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_extension_index, dd12v TYPE dd12v, t_dd17v TYPE STANDARD TABLE OF dd17v WITH NON-UNIQUE DEFAULT KEY, END OF ty_extension_index. CONSTANTS: c_objtype_extension_index TYPE trobjtype VALUE 'XINX'. CONSTANTS c_longtext_id_xinx TYPE dokil-id VALUE 'XI'. DATA: mv_name TYPE ddobjname, mv_id TYPE ddobjectid. METHODS: xinx_delete_docu IMPORTING iv_objname TYPE ddobjname iv_id TYPE ddobjectid. ENDCLASS. CLASS zcl_abapgit_object_xslt DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS: get RETURNING VALUE(ro_xslt) TYPE REF TO cl_o2_api_xsltdesc RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_objects_bridge DEFINITION FINAL CREATE PUBLIC INHERITING FROM zcl_abapgit_objects_super. PUBLIC SECTION. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING cx_sy_create_object_error zcx_abapgit_exception. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. DATA mo_plugin TYPE REF TO object. CLASS-METHODS initialize. " Metadata flags (late_deser, delete_tadir, and ddic) are not required by abapGit anymore " We keep them to stay compatible with old bridge implementation TYPES: BEGIN OF ty_metadata, class TYPE string, version TYPE string, late_deser TYPE abap_bool, delete_tadir TYPE abap_bool, ddic TYPE abap_bool, END OF ty_metadata . TYPES: BEGIN OF ty_s_objtype_map, obj_typ TYPE tadir-object, plugin_class TYPE seoclsname, END OF ty_s_objtype_map, ty_t_objtype_map TYPE SORTED TABLE OF ty_s_objtype_map WITH UNIQUE KEY obj_typ. CLASS-DATA gv_init TYPE abap_bool. CLASS-DATA gt_objtype_map TYPE ty_t_objtype_map. ENDCLASS. CLASS zcl_abapgit_objects_program DEFINITION INHERITING FROM zcl_abapgit_objects_super CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_cua, adm TYPE rsmpe_adm, sta TYPE STANDARD TABLE OF rsmpe_stat WITH DEFAULT KEY, fun TYPE STANDARD TABLE OF rsmpe_funt WITH DEFAULT KEY, men TYPE STANDARD TABLE OF rsmpe_men WITH DEFAULT KEY, mtx TYPE STANDARD TABLE OF rsmpe_mnlt WITH DEFAULT KEY, act TYPE STANDARD TABLE OF rsmpe_act WITH DEFAULT KEY, but TYPE STANDARD TABLE OF rsmpe_but WITH DEFAULT KEY, pfk TYPE STANDARD TABLE OF rsmpe_pfk WITH DEFAULT KEY, set TYPE STANDARD TABLE OF rsmpe_staf WITH DEFAULT KEY, doc TYPE STANDARD TABLE OF rsmpe_atrt WITH DEFAULT KEY, tit TYPE STANDARD TABLE OF rsmpe_titt WITH DEFAULT KEY, biv TYPE STANDARD TABLE OF rsmpe_buts WITH DEFAULT KEY, END OF ty_cua. METHODS serialize_program IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL !is_item TYPE zif_abapgit_definitions=>ty_item !io_files TYPE REF TO zcl_abapgit_objects_files !iv_program TYPE syrepid OPTIONAL !iv_extra TYPE clike OPTIONAL RAISING zcx_abapgit_exception. METHODS deserialize_program IMPORTING !is_progdir TYPE zif_abapgit_sap_report=>ty_progdir !it_source TYPE abaptxt255_tab !it_tpool TYPE textpool_table !iv_package TYPE devclass RAISING zcx_abapgit_exception. PROTECTED SECTION. TYPES: ty_spaces_tt TYPE STANDARD TABLE OF i WITH DEFAULT KEY . TYPES: BEGIN OF ty_dynpro, header TYPE rpy_dyhead, containers TYPE dycatt_tab, fields TYPE dyfatc_tab, flow_logic TYPE swydyflow, spaces TYPE ty_spaces_tt, nat_header TYPE d020s, nat_fields TYPE STANDARD TABLE OF d021s WITH DEFAULT KEY, nat_texts TYPE STANDARD TABLE OF d021t WITH DEFAULT KEY, END OF ty_dynpro . TYPES: ty_dynpro_tt TYPE STANDARD TABLE OF ty_dynpro WITH DEFAULT KEY . METHODS strip_generation_comments CHANGING ct_source TYPE STANDARD TABLE. " tab of string or charX METHODS serialize_dynpros IMPORTING !iv_program_name TYPE syrepid RETURNING VALUE(rt_dynpro) TYPE ty_dynpro_tt RAISING zcx_abapgit_exception . METHODS serialize_cua IMPORTING !iv_program_name TYPE syrepid RETURNING VALUE(rs_cua) TYPE ty_cua RAISING zcx_abapgit_exception . METHODS deserialize_dynpros IMPORTING !it_dynpros TYPE ty_dynpro_tt RAISING zcx_abapgit_exception . METHODS deserialize_textpool IMPORTING !iv_program TYPE syrepid !it_tpool TYPE textpool_table !iv_language TYPE sy-langu OPTIONAL !iv_is_include TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception . METHODS deserialize_cua IMPORTING !iv_program_name TYPE syrepid !is_cua TYPE ty_cua RAISING zcx_abapgit_exception . METHODS is_any_dynpro_locked IMPORTING !iv_program TYPE syrepid RETURNING VALUE(rv_is_any_dynpro_locked) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS is_cua_locked IMPORTING !iv_program TYPE syrepid RETURNING VALUE(rv_is_cua_locked) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS is_text_locked IMPORTING !iv_program TYPE syrepid RETURNING VALUE(rv_is_text_locked) TYPE abap_bool RAISING zcx_abapgit_exception . CLASS-METHODS add_tpool IMPORTING !it_tpool TYPE textpool_table RETURNING VALUE(rt_tpool) TYPE zif_abapgit_definitions=>ty_tpool_tt . CLASS-METHODS read_tpool IMPORTING !it_tpool TYPE zif_abapgit_definitions=>ty_tpool_tt RETURNING VALUE(rt_tpool) TYPE zif_abapgit_definitions=>ty_tpool_tt . PRIVATE SECTION. CONSTANTS: BEGIN OF c_state, active TYPE r3state VALUE 'A', inactive TYPE r3state VALUE 'I', END OF c_state. CONSTANTS c_native_dynpro TYPE c LENGTH 2 VALUE 'IN'. METHODS: uncondense_flow IMPORTING it_flow TYPE swydyflow it_spaces TYPE ty_spaces_tt RETURNING VALUE(rt_flow) TYPE swydyflow. CLASS-METHODS auto_correct_cua_adm IMPORTING is_cua TYPE ty_cua CHANGING cs_adm TYPE rsmpe_adm. METHODS get_program_title IMPORTING !it_tpool TYPE textpool_table RETURNING VALUE(rv_title) TYPE repti . METHODS insert_program IMPORTING !is_progdir TYPE zif_abapgit_sap_report=>ty_progdir !it_source TYPE abaptxt255_tab !iv_title TYPE repti !iv_package TYPE devclass !iv_state TYPE progdir-state DEFAULT c_state-inactive RAISING zcx_abapgit_exception . METHODS update_program IMPORTING !is_progdir TYPE zif_abapgit_sap_report=>ty_progdir !it_source TYPE abaptxt255_tab !iv_title TYPE repti !iv_state TYPE progdir-state DEFAULT c_state-inactive RAISING zcx_abapgit_exception . METHODS is_exit_include IMPORTING !iv_program TYPE syrepid RETURNING VALUE(rv_is_exit_include) TYPE abap_bool. METHODS deserialize_exit_include IMPORTING !is_progdir TYPE zif_abapgit_sap_report=>ty_progdir !it_source TYPE abaptxt255_tab !it_tpool TYPE textpool_table !iv_package TYPE devclass RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_object_clas DEFINITION INHERITING FROM zcl_abapgit_objects_program CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. DATA: mi_object_oriented_object_fct TYPE REF TO zif_abapgit_oo_object_fnc, mv_skip_testclass TYPE abap_bool, mv_classpool_name TYPE progname. METHODS: deserialize_abap IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input iv_package TYPE devclass RAISING zcx_abapgit_exception, deserialize_descr IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception, deserialize_docu IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception, deserialize_tpool IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception, deserialize_tpool_i18n IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception, deserialize_sotr IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input iv_package TYPE devclass RAISING zcx_abapgit_exception, deserialize_exceptions IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception, serialize_xml IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception, serialize_attr IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output !iv_clsname TYPE seoclsname RAISING zcx_abapgit_exception, serialize_descr_class IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output !iv_clsname TYPE seoclsname RAISING zcx_abapgit_exception, serialize_descr_compo IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output !iv_clsname TYPE seoclsname RAISING zcx_abapgit_exception, serialize_descr_subco IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output !iv_clsname TYPE seoclsname RAISING zcx_abapgit_exception, serialize_docu IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output !it_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus OPTIONAL !iv_clsname TYPE seoclsname RAISING zcx_abapgit_exception, serialize_tpool IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output !iv_clsname TYPE seoclsname RETURNING VALUE(rt_tpool) TYPE textpool_table RAISING zcx_abapgit_exception, serialize_tpool_i18n IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output !it_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus OPTIONAL !iv_clsname TYPE seoclsname !it_tpool_main TYPE textpool_table RAISING zcx_abapgit_exception, serialize_sotr IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception, source_apack_replacement CHANGING !ct_source TYPE seop_source_string RAISING zcx_abapgit_exception, repo_apack_replacement CHANGING !ct_source TYPE seop_source_string RAISING zcx_abapgit_exception. PRIVATE SECTION. CONSTANTS: BEGIN OF c_longtext_name, attributes TYPE string VALUE 'LONGTEXTS_CA', methods TYPE string VALUE 'LONGTEXTS_CO', events TYPE string VALUE 'LONGTEXTS_CE', types TYPE string VALUE 'LONGTEXTS_CT', END OF c_longtext_name. CONSTANTS: BEGIN OF c_longtext_id, class TYPE dokil-id VALUE 'CL', attributes TYPE dokil-id VALUE 'CA', methods TYPE dokil-id VALUE 'CO', events TYPE dokil-id VALUE 'CE', types TYPE dokil-id VALUE 'CT', END OF c_longtext_id. METHODS deserialize_pre_ddic IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input !iv_package TYPE devclass RAISING zcx_abapgit_exception. METHODS is_class_locked RETURNING VALUE(rv_is_class_locked) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS interface_replacement IMPORTING !iv_from_interface TYPE seoclsname !iv_to_interface TYPE seoclsname CHANGING !ct_source TYPE seop_source_string. ENDCLASS. CLASS zcl_abapgit_object_fugr DEFINITION INHERITING FROM zcl_abapgit_objects_program CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: c_longtext_id_prog TYPE dokil-id VALUE 'RE', c_longtext_id_func TYPE dokil-id VALUE 'FU', c_longtext_id_func_exc TYPE dokil-id VALUE 'FX'. TYPES: ty_rs38l_incl_tt TYPE STANDARD TABLE OF rs38l_incl WITH DEFAULT KEY . TYPES: BEGIN OF ty_function, funcname TYPE rs38l_fnam, global_flag TYPE rs38l-global, remote_call TYPE rs38l-remote, update_task TYPE rs38l-utask, short_text TYPE tftit-stext, remote_basxml TYPE rs38l-basxml_enabled, import TYPE STANDARD TABLE OF rsimp WITH DEFAULT KEY, changing TYPE STANDARD TABLE OF rscha WITH DEFAULT KEY, export TYPE STANDARD TABLE OF rsexp WITH DEFAULT KEY, tables TYPE STANDARD TABLE OF rstbl WITH DEFAULT KEY, exception TYPE STANDARD TABLE OF rsexc WITH DEFAULT KEY, documentation TYPE STANDARD TABLE OF rsfdo WITH DEFAULT KEY, exception_classes TYPE abap_bool, END OF ty_function . TYPES: ty_function_tt TYPE STANDARD TABLE OF ty_function WITH DEFAULT KEY . TYPES: ty_sobj_name_tt TYPE STANDARD TABLE OF sobj_name WITH DEFAULT KEY . TYPES: BEGIN OF ty_tpool_i18n, language TYPE langu, textpool TYPE zif_abapgit_definitions=>ty_tpool_tt, END OF ty_tpool_i18n . TYPES: ty_tpools_i18n TYPE STANDARD TABLE OF ty_tpool_i18n . DATA mt_includes_cache TYPE ty_sobj_name_tt . DATA mt_includes_all TYPE ty_sobj_name_tt . METHODS check_rfc_parameters IMPORTING !is_function TYPE ty_function RAISING zcx_abapgit_exception . METHODS update_where_used IMPORTING !it_includes TYPE ty_sobj_name_tt . METHODS main_name RETURNING VALUE(rv_program) TYPE program RAISING zcx_abapgit_exception . METHODS functions RETURNING VALUE(rt_functab) TYPE ty_rs38l_incl_tt RAISING zcx_abapgit_exception . METHODS includes RETURNING VALUE(rt_includes) TYPE ty_sobj_name_tt RAISING zcx_abapgit_exception . METHODS serialize_functions RETURNING VALUE(rt_functions) TYPE ty_function_tt RAISING zcx_abapgit_exception . METHODS deserialize_functions IMPORTING !it_functions TYPE ty_function_tt !ii_log TYPE REF TO zif_abapgit_log !iv_version TYPE uccheck !iv_package TYPE devclass !iv_transport TYPE trkorr RAISING zcx_abapgit_exception . METHODS serialize_function_docs IMPORTING !iv_prog_name TYPE syrepid !it_functions TYPE ty_function_tt !ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_function_docs IMPORTING !iv_prog_name TYPE syrepid !it_functions TYPE ty_function_tt !ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS serialize_xml IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_xml IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input !iv_version TYPE uccheck !iv_package TYPE devclass !iv_transport TYPE trkorr RAISING zcx_abapgit_exception . METHODS serialize_includes RAISING zcx_abapgit_exception . METHODS deserialize_includes IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input !iv_package TYPE devclass !ii_log TYPE REF TO zif_abapgit_log RAISING zcx_abapgit_exception . METHODS is_function_group_locked RETURNING VALUE(rv_is_functions_group_locked) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS is_any_include_locked RETURNING VALUE(rv_is_any_include_locked) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS is_any_function_module_locked RETURNING VALUE(rv_any_function_module_locked) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS get_abap_version IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input RETURNING VALUE(rv_abap_version) TYPE progdir-uccheck RAISING zcx_abapgit_exception . METHODS update_func_group_short_text IMPORTING !iv_group TYPE rs38l-area !iv_short_text TYPE tftit-stext . METHODS serialize_texts IMPORTING !iv_prog_name TYPE syrepid !ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_texts IMPORTING !iv_prog_name TYPE syrepid !ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS is_part_of_other_fugr IMPORTING !iv_include TYPE sobj_name RETURNING VALUE(rv_belongs_to_other_fugr) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_object_fugs DEFINITION INHERITING FROM zcl_abapgit_object_fugr FINAL CREATE PUBLIC . PUBLIC SECTION. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_intf DEFINITION FINAL INHERITING FROM zcl_abapgit_objects_program. PUBLIC SECTION. INTERFACES zif_abapgit_object. TYPES: BEGIN OF ty_docu, lines TYPE tlinetab, i18n_lines TYPE zif_abapgit_lang_definitions=>ty_i18n_lines, END OF ty_docu. TYPES: BEGIN OF ty_intf, vseointerf TYPE vseointerf, docu TYPE ty_docu, description_int TYPE zif_abapgit_oo_object_fnc=>ty_seoclasstx_tt, description TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt, description_sub TYPE zif_abapgit_oo_object_fnc=>ty_seosubcotx_tt, END OF ty_intf. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. METHODS deserialize_proxy IMPORTING iv_transport TYPE trkorr RAISING zcx_abapgit_exception . METHODS deserialize_docu IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input !is_docu TYPE ty_docu RAISING zcx_abapgit_exception . METHODS serialize_docu IMPORTING !it_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus OPTIONAL !iv_clsname TYPE seoclsname RETURNING VALUE(rs_docu) TYPE ty_docu RAISING zcx_abapgit_exception. METHODS serialize_descr_class IMPORTING !iv_clsname TYPE seoclsname RETURNING VALUE(rs_description) TYPE ty_intf-description_int RAISING zcx_abapgit_exception. METHODS serialize_descr_compo IMPORTING !iv_clsname TYPE seoclsname RETURNING VALUE(rs_description) TYPE ty_intf-description RAISING zcx_abapgit_exception. METHODS serialize_descr_subco IMPORTING !iv_clsname TYPE seoclsname RETURNING VALUE(rs_description) TYPE ty_intf-description_sub RAISING zcx_abapgit_exception. METHODS serialize_xml IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . PRIVATE SECTION. CONSTANTS: BEGIN OF c_longtext_name, attributes TYPE string VALUE 'LONGTEXTS_IA', methods TYPE string VALUE 'LONGTEXTS_IO', events TYPE string VALUE 'LONGTEXTS_IE', END OF c_longtext_name. CONSTANTS: BEGIN OF c_longtext_id, interface TYPE dokil-id VALUE 'IF', attributes TYPE dokil-id VALUE 'IA', methods TYPE dokil-id VALUE 'IO', events TYPE dokil-id VALUE 'IE', END OF c_longtext_id. DATA mv_aff_enabled TYPE abap_bool. DATA mi_object_oriented_object_fct TYPE REF TO zif_abapgit_oo_object_fnc . METHODS deserialize_pre_ddic IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input iv_package TYPE devclass RAISING zcx_abapgit_exception. METHODS deserialize_descr_class IMPORTING it_description TYPE zif_abapgit_oo_object_fnc=>ty_seoclasstx_tt OPTIONAL. METHODS deserialize_descr_compo IMPORTING it_description TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt OPTIONAL. METHODS deserialize_descr_subco IMPORTING it_description TYPE zif_abapgit_oo_object_fnc=>ty_seosubcotx_tt OPTIONAL. METHODS read_xml IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input RETURNING VALUE(rs_intf) TYPE ty_intf RAISING zcx_abapgit_exception. METHODS read_json RETURNING VALUE(rs_intf) TYPE ty_intf RAISING zcx_abapgit_exception. METHODS extract_languages_for_transl IMPORTING is_intf TYPE ty_intf RETURNING VALUE(rs_result) TYPE zif_abapgit_definitions=>ty_languages. ENDCLASS. CLASS zcl_abapgit_object_prog DEFINITION INHERITING FROM zcl_abapgit_objects_program FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_tpool_i18n, language TYPE langu, textpool TYPE zif_abapgit_definitions=>ty_tpool_tt, END OF ty_tpool_i18n . TYPES: ty_tpools_i18n TYPE STANDARD TABLE OF ty_tpool_i18n . CONSTANTS c_longtext_id_prog TYPE dokil-id VALUE 'RE' ##NO_TEXT. METHODS deserialize_with_ext IMPORTING !is_progdir TYPE zif_abapgit_sap_report=>ty_progdir !it_source TYPE abaptxt255_tab !iv_package TYPE devclass RAISING zcx_abapgit_exception . METHODS serialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_output RAISING zcx_abapgit_exception . METHODS deserialize_texts IMPORTING !ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . METHODS is_program_locked RETURNING VALUE(rv_is_program_locked) TYPE abap_bool RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_migrations DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. CLASS-METHODS run RAISING zcx_abapgit_exception zcx_abapgit_not_found. PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS migrate_offline_repos. ENDCLASS. CLASS zcl_abapgit_persist_background DEFINITION CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_xml, method TYPE string, username TYPE string, password TYPE string, settings TYPE zif_abapgit_background=>ty_settings_tt, END OF ty_xml . TYPES: BEGIN OF ty_background, key TYPE zif_abapgit_persistence=>ty_value. INCLUDE TYPE ty_xml. TYPES: END OF ty_background . TYPES: ty_background_keys TYPE STANDARD TABLE OF ty_background WITH DEFAULT KEY . METHODS constructor . METHODS list RETURNING VALUE(rt_list) TYPE ty_background_keys RAISING zcx_abapgit_exception . METHODS get_by_key IMPORTING !iv_key TYPE ty_background-key RETURNING VALUE(rs_data) TYPE ty_background RAISING zcx_abapgit_exception zcx_abapgit_not_found . METHODS modify IMPORTING !is_data TYPE ty_background RAISING zcx_abapgit_exception . METHODS delete IMPORTING !iv_key TYPE ty_background-key RAISING zcx_abapgit_exception . METHODS exists IMPORTING !iv_key TYPE ty_background-key RETURNING VALUE(rv_yes) TYPE abap_bool RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. DATA mo_db TYPE REF TO zcl_abapgit_persistence_db . METHODS from_xml IMPORTING !iv_string TYPE string RETURNING VALUE(rs_xml) TYPE ty_xml RAISING zcx_abapgit_exception . METHODS to_xml IMPORTING !is_background TYPE ty_background RETURNING VALUE(rv_string) TYPE string . ENDCLASS. CLASS zcl_abapgit_persist_factory DEFINITION CREATE PRIVATE . PUBLIC SECTION. CLASS-METHODS get_repo RETURNING VALUE(ri_repo) TYPE REF TO zif_abapgit_persist_repo . CLASS-METHODS get_repo_cs RETURNING VALUE(ri_repo_cs) TYPE REF TO zif_abapgit_persist_repo_cs . CLASS-METHODS get_settings RETURNING VALUE(ri_settings) TYPE REF TO zif_abapgit_persist_settings . PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA gi_repo TYPE REF TO zif_abapgit_persist_repo . CLASS-DATA gi_repo_cs TYPE REF TO zif_abapgit_persist_repo_cs . CLASS-DATA gi_settings TYPE REF TO zif_abapgit_persist_settings . ENDCLASS. CLASS zcl_abapgit_persist_migrate DEFINITION CREATE PUBLIC. PUBLIC SECTION. CLASS-METHODS: run RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_text TYPE string VALUE 'Generated by abapGit' ##NO_TEXT. CLASS-METHODS table_create RAISING zcx_abapgit_exception. CLASS-METHODS table_exists RETURNING VALUE(rv_exists) TYPE abap_bool. CLASS-METHODS lock_create RAISING zcx_abapgit_exception. CLASS-METHODS lock_exists RETURNING VALUE(rv_exists) TYPE abap_bool. CLASS-METHODS gui_status_create RAISING zcx_abapgit_exception. CLASS-METHODS gui_status_exists RETURNING VALUE(rv_exists) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_persist_packages DEFINITION CREATE PRIVATE . PUBLIC SECTION. TYPES: BEGIN OF ty_package, devclass TYPE scompkdtln-devclass, component TYPE scompkdtln-component, comp_posid TYPE scompkdtln-comp_posid, END OF ty_package . TYPES: ty_packages TYPE HASHED TABLE OF ty_package WITH UNIQUE KEY devclass . METHODS init . METHODS modify IMPORTING !iv_package TYPE scompkdtln-devclass !iv_component TYPE scompkdtln-component OPTIONAL !iv_comp_posid TYPE scompkdtln-comp_posid OPTIONAL RAISING zcx_abapgit_exception . METHODS read IMPORTING !iv_package TYPE scompkdtln-devclass RETURNING VALUE(rs_package) TYPE ty_package . CLASS-METHODS get_instance RETURNING VALUE(ro_persist) TYPE REF TO zcl_abapgit_persist_packages . PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA go_persist TYPE REF TO zcl_abapgit_persist_packages. DATA mt_packages TYPE ty_packages. METHODS from_xml IMPORTING iv_xml TYPE string RETURNING VALUE(rt_packages) TYPE ty_packages RAISING zcx_abapgit_exception. METHODS to_xml IMPORTING it_packages TYPE ty_packages RETURNING VALUE(rv_xml) TYPE string RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_persist_settings DEFINITION CREATE PRIVATE FRIENDS ZCL_abapgit_persist_factory . PUBLIC SECTION. INTERFACES zif_abapgit_persist_settings . PROTECTED SECTION. PRIVATE SECTION. DATA mo_settings TYPE REF TO zcl_abapgit_settings . ENDCLASS. CLASS zcl_abapgit_persistence_db DEFINITION CREATE PRIVATE . PUBLIC SECTION. CONSTANTS c_tabname TYPE c LENGTH 30 VALUE 'ZABAPGIT' ##NO_TEXT. CONSTANTS c_lock TYPE c LENGTH 30 VALUE 'EZABAPGIT' ##NO_TEXT. CONSTANTS: c_type_settings TYPE zif_abapgit_persistence=>ty_type VALUE 'SETTINGS' ##NO_TEXT, c_type_repo TYPE zif_abapgit_persistence=>ty_type VALUE 'REPO' ##NO_TEXT, c_type_repo_csum TYPE zif_abapgit_persistence=>ty_type VALUE 'REPO_CS' ##NO_TEXT, c_type_background TYPE zif_abapgit_persistence=>ty_type VALUE 'BACKGROUND' ##NO_TEXT, c_type_packages TYPE zif_abapgit_persistence=>ty_type VALUE 'PACKAGES' ##NO_TEXT, c_type_user TYPE zif_abapgit_persistence=>ty_type VALUE 'USER' ##NO_TEXT. CLASS-METHODS get_instance RETURNING VALUE(ro_db) TYPE REF TO zcl_abapgit_persistence_db . METHODS add IMPORTING !iv_type TYPE zif_abapgit_persistence=>ty_type !iv_value TYPE zif_abapgit_persistence=>ty_content-value !iv_data TYPE zif_abapgit_persistence=>ty_content-data_str RAISING zcx_abapgit_exception . METHODS delete IMPORTING !iv_type TYPE zif_abapgit_persistence=>ty_type !iv_value TYPE zif_abapgit_persistence=>ty_content-value RAISING zcx_abapgit_exception . METHODS list RETURNING VALUE(rt_content) TYPE zif_abapgit_persistence=>ty_contents . METHODS list_by_type IMPORTING !iv_type TYPE zif_abapgit_persistence=>ty_type RETURNING VALUE(rt_content) TYPE zif_abapgit_persistence=>ty_contents . METHODS list_by_keys IMPORTING it_keys TYPE zif_abapgit_persistence=>ty_repo_keys iv_type TYPE zif_abapgit_persistence=>ty_type RETURNING VALUE(rt_contents) TYPE zif_abapgit_persistence=>ty_contents. METHODS lock IMPORTING !iv_mode TYPE enqmode DEFAULT 'E' !iv_type TYPE zif_abapgit_persistence=>ty_type !iv_value TYPE zif_abapgit_persistence=>ty_content-value RAISING zcx_abapgit_exception . METHODS modify IMPORTING !iv_type TYPE zif_abapgit_persistence=>ty_type !iv_value TYPE zif_abapgit_persistence=>ty_content-value !iv_data TYPE zif_abapgit_persistence=>ty_content-data_str RAISING zcx_abapgit_exception . METHODS read IMPORTING !iv_type TYPE zif_abapgit_persistence=>ty_type !iv_value TYPE zif_abapgit_persistence=>ty_content-value RETURNING VALUE(rv_data) TYPE zif_abapgit_persistence=>ty_content-data_str RAISING zcx_abapgit_not_found . METHODS update IMPORTING !iv_type TYPE zif_abapgit_persistence=>ty_type !iv_value TYPE zif_abapgit_persistence=>ty_content-value !iv_data TYPE zif_abapgit_persistence=>ty_content-data_str RAISING zcx_abapgit_exception . CLASS-METHODS validate_entry_type IMPORTING !iv_type TYPE zif_abapgit_persistence=>ty_type RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA go_db TYPE REF TO zcl_abapgit_persistence_db . DATA mv_update_function TYPE funcname . METHODS get_update_function RETURNING VALUE(rv_funcname) TYPE funcname . METHODS validate_and_unprettify_xml IMPORTING !iv_xml TYPE string RETURNING VALUE(rv_xml) TYPE string RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_persistence_repo DEFINITION CREATE PROTECTED FRIENDS ZCL_abapgit_persist_factory . PUBLIC SECTION. INTERFACES zif_abapgit_persist_repo . INTERFACES zif_abapgit_persist_repo_cs . METHODS constructor . METHODS rewrite_repo_meta IMPORTING !iv_repo_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception zcx_abapgit_not_found. PROTECTED SECTION. PRIVATE SECTION. DATA mt_meta_fields TYPE STANDARD TABLE OF abap_compname. DATA mo_db TYPE REF TO zcl_abapgit_persistence_db . METHODS from_xml IMPORTING !iv_repo_xml_string TYPE string RETURNING VALUE(rs_repo) TYPE zif_abapgit_persistence=>ty_repo_xml RAISING zcx_abapgit_exception . METHODS to_xml IMPORTING !is_repo TYPE zif_abapgit_persistence=>ty_repo RETURNING VALUE(rv_repo_xml_string) TYPE string . METHODS get_next_id RETURNING VALUE(rv_next_repo_id) TYPE zif_abapgit_persistence=>ty_content-value RAISING zcx_abapgit_exception . METHODS get_repo_from_content IMPORTING is_content TYPE zif_abapgit_persistence=>ty_content RETURNING VALUE(rs_result) TYPE zif_abapgit_persistence=>ty_repo RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_persistence_user DEFINITION CREATE PRIVATE . PUBLIC SECTION. INTERFACES zif_abapgit_persist_user . CLASS-METHODS get_instance IMPORTING !iv_user TYPE sy-uname DEFAULT sy-uname RETURNING VALUE(ri_user) TYPE REF TO zif_abapgit_persist_user RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !iv_user TYPE sy-uname DEFAULT sy-uname RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_repo_config, url TYPE zif_abapgit_persistence=>ty_repo-url, login TYPE string, git_user TYPE zif_abapgit_git_definitions=>ty_git_user, last_change_seen TYPE string, END OF ty_repo_config . TYPES: ty_repo_configs TYPE STANDARD TABLE OF ty_repo_config WITH DEFAULT KEY . TYPES: BEGIN OF ty_user, default_git_user TYPE zif_abapgit_git_definitions=>ty_git_user, repo_show TYPE zif_abapgit_persistence=>ty_repo-key, hide_files TYPE abap_bool, changes_only TYPE abap_bool, order_by TYPE string, order_descending TYPE abap_bool, diff_first TYPE abap_bool, diff_unified TYPE abap_bool, favorites TYPE zif_abapgit_persist_user=>ty_favorites, repo_config TYPE ty_repo_configs, settings TYPE zif_abapgit_definitions=>ty_s_user_settings, show_folders TYPE abap_bool, list_settings TYPE zif_abapgit_definitions=>ty_list_settings, END OF ty_user . DATA mv_user TYPE sy-uname . DATA ms_user TYPE ty_user. CLASS-DATA gi_current_user TYPE REF TO zif_abapgit_persist_user . METHODS from_xml IMPORTING !iv_xml TYPE string RETURNING VALUE(rs_user) TYPE ty_user RAISING zcx_abapgit_exception . METHODS read RAISING zcx_abapgit_exception . METHODS read_repo_config IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url RETURNING VALUE(rs_repo_config) TYPE ty_repo_config RAISING zcx_abapgit_exception . METHODS to_xml IMPORTING !is_user TYPE ty_user RETURNING VALUE(rv_xml) TYPE string . METHODS update RAISING zcx_abapgit_exception . METHODS update_repo_config IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url !is_repo_config TYPE ty_repo_config RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_object_filter_tran DEFINITION CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_object_filter. METHODS set_filter_values IMPORTING iv_package TYPE tadir-devclass it_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt RAISING zcx_abapgit_exception . METHODS get_filter_values EXPORTING ev_package TYPE tadir-devclass et_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt. PROTECTED SECTION. TYPES: BEGIN OF ty_e071_filter, pgmid TYPE tadir-pgmid, object TYPE tadir-object, obj_name TYPE trobj_name, END OF ty_e071_filter, ty_e071_filter_tt TYPE STANDARD TABLE OF ty_e071_filter. METHODS adjust_local_filter IMPORTING it_e071_filter TYPE ty_e071_filter_tt iv_package TYPE tadir-devclass RETURNING VALUE(rt_filter) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception. PRIVATE SECTION. DATA mt_filter TYPE zif_abapgit_definitions=>ty_tadir_tt . DATA mt_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt . DATA mv_package TYPE tadir-devclass. METHODS generate_local_filter IMPORTING iv_package TYPE tadir-devclass it_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt RETURNING VALUE(rt_filter) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . METHODS init . METHODS get_all_sub_packages IMPORTING iv_package TYPE tadir-devclass RETURNING VALUE(rt_filter) TYPE zif_abapgit_definitions=>ty_tadir_tt. ENDCLASS. CLASS zcl_abapgit_repo_filter DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS apply IMPORTING it_filter TYPE zif_abapgit_definitions=>ty_tadir_tt CHANGING ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt . METHODS apply_object_filter IMPORTING it_filter TYPE zif_abapgit_definitions=>ty_tadir_tt io_dot TYPE REF TO zcl_abapgit_dot_abapgit OPTIONAL iv_devclass TYPE devclass OPTIONAL CHANGING ct_files TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception. PROTECTED SECTION. METHODS filter_generated_tadir CHANGING !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_merge DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_merge. METHODS constructor IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online !iv_source_branch TYPE string RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_ancestor_tt TYPE STANDARD TABLE OF zif_abapgit_definitions=>ty_ancestor WITH DEFAULT KEY . TYPES: ty_visit_tt TYPE STANDARD TABLE OF zif_abapgit_git_definitions=>ty_sha1 WITH DEFAULT KEY . DATA mo_repo TYPE REF TO zcl_abapgit_repo_online . DATA ms_merge TYPE zif_abapgit_merge=>ty_merge . DATA mt_conflicts TYPE zif_abapgit_merge=>ty_merge_conflict_tt . DATA mt_objects TYPE zif_abapgit_definitions=>ty_objects_tt . DATA mv_source_branch TYPE string . METHODS visit IMPORTING !iv_parent TYPE zif_abapgit_git_definitions=>ty_sha1 CHANGING !ct_visit TYPE ty_visit_tt . METHODS all_files RETURNING VALUE(rt_files) TYPE zif_abapgit_git_definitions=>ty_expanded_tt . METHODS calculate_result RAISING zcx_abapgit_exception . METHODS fetch_git RETURNING VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt RAISING zcx_abapgit_exception . METHODS find_ancestors IMPORTING !iv_commit TYPE zif_abapgit_git_definitions=>ty_sha1 RETURNING VALUE(rt_ancestors) TYPE ty_ancestor_tt RAISING zcx_abapgit_exception . METHODS find_first_common IMPORTING !it_list1 TYPE ty_ancestor_tt !it_list2 TYPE ty_ancestor_tt RETURNING VALUE(rs_common) TYPE zif_abapgit_definitions=>ty_ancestor RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_stage DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS method_description IMPORTING !iv_method TYPE zif_abapgit_definitions=>ty_method RETURNING VALUE(rv_description) TYPE string RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !iv_merge_source TYPE zif_abapgit_git_definitions=>ty_sha1 OPTIONAL . METHODS add IMPORTING !iv_path TYPE zif_abapgit_git_definitions=>ty_file-path !iv_filename TYPE zif_abapgit_git_definitions=>ty_file-filename !iv_data TYPE xstring !is_status TYPE zif_abapgit_definitions=>ty_result OPTIONAL RAISING zcx_abapgit_exception . METHODS reset IMPORTING !iv_path TYPE zif_abapgit_git_definitions=>ty_file-path !iv_filename TYPE zif_abapgit_git_definitions=>ty_file-filename RAISING zcx_abapgit_exception . METHODS rm IMPORTING !iv_path TYPE zif_abapgit_git_definitions=>ty_file-path !iv_filename TYPE zif_abapgit_git_definitions=>ty_file-filename !is_status TYPE zif_abapgit_definitions=>ty_result OPTIONAL RAISING zcx_abapgit_exception . METHODS ignore IMPORTING !iv_path TYPE zif_abapgit_git_definitions=>ty_file-path !iv_filename TYPE zif_abapgit_git_definitions=>ty_file-filename RAISING zcx_abapgit_exception . METHODS get_merge_source RETURNING VALUE(rv_source) TYPE zif_abapgit_git_definitions=>ty_sha1 . METHODS count RETURNING VALUE(rv_count) TYPE i . METHODS get_all RETURNING VALUE(rt_stage) TYPE zif_abapgit_definitions=>ty_stage_tt . PROTECTED SECTION. PRIVATE SECTION. DATA mt_stage TYPE zif_abapgit_definitions=>ty_stage_tt . DATA mv_merge_source TYPE zif_abapgit_git_definitions=>ty_sha1 . METHODS append IMPORTING !iv_path TYPE zif_abapgit_git_definitions=>ty_file-path !iv_filename TYPE zif_abapgit_git_definitions=>ty_file-filename !iv_method TYPE zif_abapgit_definitions=>ty_method !is_status TYPE zif_abapgit_definitions=>ty_result OPTIONAL !iv_data TYPE xstring OPTIONAL RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_stage_logic DEFINITION CREATE PRIVATE FRIENDS ZCL_abapgit_factory . PUBLIC SECTION. INTERFACES zif_abapgit_stage_logic . PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS: remove_ignored IMPORTING io_repo TYPE REF TO zcl_abapgit_repo_online CHANGING cs_files TYPE zif_abapgit_definitions=>ty_stage_files, remove_identical CHANGING cs_files TYPE zif_abapgit_definitions=>ty_stage_files. ENDCLASS. CLASS zcl_abapgit_repo_item_state DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS local RETURNING VALUE(rv_state) TYPE zif_abapgit_git_definitions=>ty_item_state. METHODS remote RETURNING VALUE(rv_state) TYPE zif_abapgit_git_definitions=>ty_item_state. METHODS is_reassigned RETURNING VALUE(rv_is_reassigned) TYPE abap_bool. METHODS is_unchanged RETURNING VALUE(rv_is_unchanged) TYPE abap_bool. METHODS sum_with_repo_item IMPORTING !is_repo_item TYPE zif_abapgit_definitions=>ty_repo_item. METHODS sum_with_status_item IMPORTING !is_status_item TYPE zif_abapgit_definitions=>ty_result. PROTECTED SECTION. PRIVATE SECTION. DATA mv_lstate TYPE zif_abapgit_git_definitions=>ty_item_state. DATA mv_rstate TYPE zif_abapgit_git_definitions=>ty_item_state. DATA mv_is_reassigned TYPE abap_bool. CLASS-METHODS reduce IMPORTING iv_prev TYPE zif_abapgit_git_definitions=>ty_item_state iv_cur TYPE zif_abapgit_git_definitions=>ty_item_state RETURNING VALUE(rv_new) TYPE zif_abapgit_git_definitions=>ty_item_state. ENDCLASS. CLASS zcl_abapgit_repo_labels DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_label_color, label TYPE string, color TYPE string, END OF ty_label_color, ty_label_colors TYPE STANDARD TABLE OF ty_label_color WITH KEY label. TYPES: BEGIN OF ty_color, cls TYPE string, fg TYPE string, bg TYPE string, border TYPE string, END OF ty_color. CONSTANTS c_allowed_chars TYPE string VALUE `-_. a-zA-Z0-9` ##NO_TEXT. " it is easier to allow chars, though potentially other chars can be added later if needed CLASS-METHODS class_constructor. CLASS-METHODS validate IMPORTING !iv_labels TYPE string RAISING zcx_abapgit_exception. CLASS-METHODS split IMPORTING !iv_labels TYPE string RETURNING VALUE(rt_labels) TYPE string_table. CLASS-METHODS normalize IMPORTING !iv_labels TYPE string RETURNING VALUE(rv_labels) TYPE string. CLASS-METHODS validate_colors IMPORTING !iv_config TYPE string RAISING zcx_abapgit_exception. CLASS-METHODS split_colors IMPORTING !iv_config TYPE string RETURNING VALUE(rt_label_colors) TYPE ty_label_colors. CLASS-METHODS split_colors_into_map IMPORTING !iv_config TYPE string RETURNING VALUE(ro_map) TYPE REF TO zcl_abapgit_string_map. CLASS-METHODS normalize_colors IMPORTING !iv_config TYPE string RETURNING VALUE(rv_config) TYPE string. CLASS-METHODS parse_color IMPORTING iv_color TYPE string RETURNING VALUE(rs_parsed) TYPE ty_color. PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA gv_regex TYPE string. CLASS-METHODS validate_one_label_color IMPORTING !is_lc TYPE ty_label_color !iv_index TYPE i DEFAULT 0 RAISING zcx_abapgit_exception. CLASS-METHODS validate_rgb_color IMPORTING !iv_color TYPE string !iv_index TYPE i DEFAULT 0 RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_repo_news DEFINITION FINAL CREATE PRIVATE. PUBLIC SECTION. TYPES: BEGIN OF ty_log, version TYPE string, pos_to_cur TYPE i, is_header TYPE abap_bool, is_important TYPE abap_bool, text TYPE string, END OF ty_log. TYPES: ty_logs TYPE STANDARD TABLE OF ty_log WITH DEFAULT KEY. CONSTANTS c_tail_length TYPE i VALUE 5 ##NO_TEXT. " Number of versions to display if no updates CLASS-METHODS create " TODO REFACTOR IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_repo_news RAISING zcx_abapgit_exception. METHODS get_log RETURNING VALUE(rt_log) TYPE ty_logs. METHODS has_news RETURNING VALUE(rv_boolean) TYPE abap_bool. METHODS has_important RETURNING VALUE(rv_boolean) TYPE abap_bool. METHODS has_updates RETURNING VALUE(rv_boolean) TYPE abap_bool. METHODS has_unseen RETURNING VALUE(rv_boolean) TYPE abap_bool. METHODS constructor IMPORTING !iv_rawdata TYPE xstring !iv_lastseen_version TYPE string !iv_current_version TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mt_log TYPE ty_logs . DATA mv_current_version TYPE string . DATA mv_lastseen_version TYPE string . DATA mv_latest_version TYPE string . METHODS latest_version RETURNING VALUE(rv_version) TYPE string . CLASS-METHODS parse_line IMPORTING !iv_line TYPE string !iv_current_version TYPE string RETURNING VALUE(rs_log) TYPE ty_log . CLASS-METHODS parse IMPORTING !it_lines TYPE string_table !iv_current_version TYPE string RETURNING VALUE(rt_log) TYPE ty_logs . ENDCLASS. CLASS zcl_abapgit_repo_requirements DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. TYPES ty_cvers TYPE STANDARD TABLE OF cvers WITH DEFAULT KEY. CLASS-METHODS requirements_popup IMPORTING !it_requirements TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt RAISING zcx_abapgit_exception. CLASS-METHODS is_requirements_met IMPORTING !it_requirements TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt RETURNING VALUE(rv_status) TYPE zif_abapgit_definitions=>ty_yes_no RAISING zcx_abapgit_exception. CLASS-METHODS inject_cvers IMPORTING !it_cvers TYPE ty_cvers. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_requirement_status, met TYPE abap_bool, component TYPE tdevc-dlvunit, description TYPE string, installed_release TYPE saprelease, installed_patch TYPE sappatchlv, required_release TYPE saprelease, required_patch TYPE sappatchlv, END OF ty_requirement_status . TYPES: ty_requirement_status_tt TYPE STANDARD TABLE OF ty_requirement_status WITH DEFAULT KEY . CLASS-DATA gt_cvers TYPE ty_cvers. CLASS-METHODS get_cvers RETURNING VALUE(rt_cvers) TYPE ty_cvers RAISING zcx_abapgit_exception. CLASS-METHODS show_requirement_popup IMPORTING !it_requirements TYPE ty_requirement_status_tt RAISING zcx_abapgit_exception . CLASS-METHODS get_requirement_met_status IMPORTING !it_requirements TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt RETURNING VALUE(rt_status) TYPE ty_requirement_status_tt RAISING zcx_abapgit_exception . CLASS-METHODS is_version_greater_or_equal IMPORTING !is_status TYPE ty_requirement_status RETURNING VALUE(rv_true) TYPE abap_bool . ENDCLASS. CLASS zcl_abapgit_version DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS normalize IMPORTING !iv_version TYPE string RETURNING VALUE(rv_version) TYPE string . CLASS-METHODS conv_str_to_version IMPORTING !iv_version TYPE csequence RETURNING VALUE(rs_version) TYPE zif_abapgit_definitions=>ty_version RAISING zcx_abapgit_exception . CLASS-METHODS check_dependant_version IMPORTING !is_current TYPE zif_abapgit_definitions=>ty_version !is_dependant TYPE zif_abapgit_definitions=>ty_version RAISING zcx_abapgit_exception . CLASS-METHODS compare IMPORTING !iv_a TYPE string OPTIONAL !iv_b TYPE string OPTIONAL !is_a TYPE zif_abapgit_definitions=>ty_version OPTIONAL !is_b TYPE zif_abapgit_definitions=>ty_version OPTIONAL RETURNING VALUE(rv_result) TYPE i . CLASS-METHODS get_version_constant_value IMPORTING iv_version_constant TYPE string RETURNING VALUE(rv_version) TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS version_to_numeric IMPORTING !iv_version TYPE string RETURNING VALUE(rv_version) TYPE i. ENDCLASS. CLASS zcl_abapgit_zip DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS encode_files IMPORTING !it_files TYPE zif_abapgit_definitions=>ty_files_item_tt RETURNING VALUE(rv_xstr) TYPE xstring RAISING zcx_abapgit_exception . CLASS-METHODS export IMPORTING !is_local_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings !iv_package TYPE devclass !io_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit !iv_show_log TYPE abap_bool DEFAULT abap_true !it_filter TYPE zif_abapgit_definitions=>ty_tadir_tt OPTIONAL RETURNING VALUE(rv_xstr) TYPE xstring RAISING zcx_abapgit_exception . CLASS-METHODS export_object IMPORTING !iv_object_type TYPE trobjtype !iv_object_name TYPE sobj_name !iv_main_language_only TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception . CLASS-METHODS export_package IMPORTING !iv_package TYPE devclass !iv_folder_logic TYPE string !iv_main_lang_only TYPE abap_bool !iv_ign_subpkg TYPE abap_bool OPTIONAL RAISING zcx_abapgit_exception . CLASS-METHODS load IMPORTING !iv_xstr TYPE xstring RETURNING VALUE(rt_files) TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception . CLASS-METHODS save_binstring_to_localfile IMPORTING !iv_filename TYPE string !iv_binstring TYPE xstring RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS filename IMPORTING !iv_str TYPE string EXPORTING !ev_path TYPE string !ev_filename TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS normalize_path CHANGING !ct_files TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception . CLASS-METHODS unzip_file IMPORTING !iv_xstr TYPE xstring RETURNING VALUE(rt_files) TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_dot_abapgit DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS build_default RETURNING VALUE(ro_dot_abapgit) TYPE REF TO zcl_abapgit_dot_abapgit . CLASS-METHODS deserialize IMPORTING !iv_xstr TYPE xstring RETURNING VALUE(ro_dot_abapgit) TYPE REF TO zcl_abapgit_dot_abapgit RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !is_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit . METHODS serialize RETURNING VALUE(rv_xstr) TYPE xstring RAISING zcx_abapgit_exception . METHODS to_file RETURNING VALUE(rs_file) TYPE zif_abapgit_git_definitions=>ty_file RAISING zcx_abapgit_exception . METHODS get_data RETURNING VALUE(rs_data) TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit . METHODS add_ignore IMPORTING !iv_path TYPE string !iv_filename TYPE string . METHODS is_ignored IMPORTING !iv_path TYPE string !iv_filename TYPE string RETURNING VALUE(rv_ignored) TYPE abap_bool . METHODS remove_ignore IMPORTING !iv_path TYPE string !iv_filename TYPE string . METHODS get_starting_folder RETURNING VALUE(rv_path) TYPE string . METHODS get_folder_logic RETURNING VALUE(rv_logic) TYPE string . METHODS set_folder_logic IMPORTING !iv_logic TYPE string . METHODS set_starting_folder IMPORTING !iv_path TYPE string . METHODS get_main_language RETURNING VALUE(rv_language) TYPE spras . METHODS get_i18n_languages RETURNING VALUE(rt_languages) TYPE zif_abapgit_definitions=>ty_languages RAISING zcx_abapgit_exception . METHODS set_i18n_languages IMPORTING it_languages TYPE zif_abapgit_definitions=>ty_languages RAISING zcx_abapgit_exception . METHODS determine_i18n_parameters IMPORTING !iv_main_language_only TYPE abap_bool RETURNING VALUE(rs_i18n_params) TYPE zif_abapgit_definitions=>ty_i18n_params RAISING zcx_abapgit_exception. METHODS get_signature RETURNING VALUE(rs_signature) TYPE zif_abapgit_git_definitions=>ty_file_signature RAISING zcx_abapgit_exception . METHODS use_lxe IMPORTING !iv_yes TYPE abap_bool DEFAULT abap_undefined RETURNING VALUE(rv_yes) TYPE abap_bool . METHODS get_requirements RETURNING VALUE(rt_requirements) TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt . METHODS set_requirements IMPORTING !it_requirements TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt . METHODS get_name RETURNING VALUE(rv_name) TYPE string. METHODS set_name IMPORTING !iv_name TYPE csequence. METHODS get_version_constant RETURNING VALUE(rv_version_constant) TYPE string . METHODS set_version_constant IMPORTING !iv_version_constant TYPE csequence . METHODS get_abap_language_version RETURNING VALUE(rv_abap_language_version) TYPE string . METHODS set_abap_language_version IMPORTING !iv_abap_language_version TYPE string . METHODS get_original_system RETURNING VALUE(rv_original_system) TYPE string . METHODS set_original_system IMPORTING !iv_original_system TYPE csequence . PROTECTED SECTION. PRIVATE SECTION. DATA ms_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit . CLASS-METHODS to_xml IMPORTING !is_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit RETURNING VALUE(rv_xml) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS from_xml IMPORTING !iv_xml TYPE string RETURNING VALUE(rs_data) TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit . ENDCLASS. CLASS zcl_abapgit_repo DEFINITION ABSTRACT CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_repo . ALIASES ms_data FOR zif_abapgit_repo~ms_data . ALIASES deserialize FOR zif_abapgit_repo~deserialize . ALIASES deserialize_checks FOR zif_abapgit_repo~deserialize_checks . ALIASES get_dot_abapgit FOR zif_abapgit_repo~get_dot_abapgit . ALIASES get_tadir_objects FOR zif_abapgit_repo~get_tadir_objects . ALIASES get_files_local FOR zif_abapgit_repo~get_files_local . ALIASES get_files_local_filtered FOR zif_abapgit_repo~get_files_local_filtered . ALIASES get_files_remote FOR zif_abapgit_repo~get_files_remote . ALIASES get_key FOR zif_abapgit_repo~get_key . ALIASES get_local_settings FOR zif_abapgit_repo~get_local_settings . ALIASES get_name FOR zif_abapgit_repo~get_name . ALIASES get_package FOR zif_abapgit_repo~get_package . ALIASES is_offline FOR zif_abapgit_repo~is_offline . ALIASES refresh FOR zif_abapgit_repo~refresh . ALIASES set_dot_abapgit FOR zif_abapgit_repo~set_dot_abapgit . ALIASES find_remote_dot_abapgit FOR zif_abapgit_repo~find_remote_dot_abapgit . ALIASES has_remote_source FOR zif_abapgit_repo~has_remote_source . METHODS bind_listener IMPORTING !ii_listener TYPE REF TO zif_abapgit_repo_listener . METHODS constructor IMPORTING !is_data TYPE zif_abapgit_persistence=>ty_repo . METHODS create_new_log IMPORTING !iv_title TYPE string OPTIONAL RETURNING VALUE(ri_log) TYPE REF TO zif_abapgit_log . METHODS delete_checks RETURNING VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_delete_checks RAISING zcx_abapgit_exception . METHODS get_data_config RETURNING VALUE(ri_config) TYPE REF TO zif_abapgit_data_config RAISING zcx_abapgit_exception . METHODS get_dot_apack RETURNING VALUE(ro_dot_apack) TYPE REF TO zcl_abapgit_apack_reader RAISING zcx_abapgit_exception. METHODS get_log RETURNING VALUE(ri_log) TYPE REF TO zif_abapgit_log . METHODS get_unsupported_objects_local RETURNING VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_items_tt RAISING zcx_abapgit_exception . METHODS refresh_local_object IMPORTING !iv_obj_type TYPE tadir-object !iv_obj_name TYPE tadir-obj_name RAISING zcx_abapgit_exception . METHODS refresh_local_objects RAISING zcx_abapgit_exception . METHODS remove_ignored_files CHANGING !ct_files TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception . METHODS set_files_remote IMPORTING !it_files TYPE zif_abapgit_git_definitions=>ty_files_tt . METHODS set_local_settings IMPORTING !is_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings RAISING zcx_abapgit_exception . METHODS switch_repo_type IMPORTING !iv_offline TYPE abap_bool RAISING zcx_abapgit_exception . PROTECTED SECTION. DATA mt_local TYPE zif_abapgit_definitions=>ty_files_item_tt . DATA mt_remote TYPE zif_abapgit_git_definitions=>ty_files_tt . DATA mv_request_local_refresh TYPE abap_bool . DATA mv_request_remote_refresh TYPE abap_bool . DATA mi_log TYPE REF TO zif_abapgit_log . DATA mi_listener TYPE REF TO zif_abapgit_repo_listener . DATA mo_apack_reader TYPE REF TO zcl_abapgit_apack_reader . DATA mi_data_config TYPE REF TO zif_abapgit_data_config . METHODS find_remote_dot_apack RETURNING VALUE(ro_dot) TYPE REF TO zcl_abapgit_apack_reader RAISING zcx_abapgit_exception . METHODS reset_remote . METHODS set IMPORTING !iv_url TYPE zif_abapgit_persistence=>ty_repo-url OPTIONAL !iv_branch_name TYPE zif_abapgit_persistence=>ty_repo-branch_name OPTIONAL !iv_selected_commit TYPE zif_abapgit_persistence=>ty_repo-selected_commit OPTIONAL !iv_head_branch TYPE zif_abapgit_persistence=>ty_repo-head_branch OPTIONAL !iv_offline TYPE zif_abapgit_persistence=>ty_repo-offline OPTIONAL !is_dot_abapgit TYPE zif_abapgit_persistence=>ty_repo-dot_abapgit OPTIONAL !is_local_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings OPTIONAL !iv_deserialized_at TYPE zif_abapgit_persistence=>ty_repo-deserialized_at OPTIONAL !iv_deserialized_by TYPE zif_abapgit_persistence=>ty_repo-deserialized_by OPTIONAL !iv_switched_origin TYPE zif_abapgit_persistence=>ty_repo-switched_origin OPTIONAL RAISING zcx_abapgit_exception . METHODS set_dot_apack IMPORTING !io_dot_apack TYPE REF TO zcl_abapgit_apack_reader RAISING zcx_abapgit_exception . PRIVATE SECTION. METHODS check_language RAISING zcx_abapgit_exception . METHODS check_write_protect RAISING zcx_abapgit_exception . METHODS deserialize_data IMPORTING !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks CHANGING !ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RAISING zcx_abapgit_exception . METHODS deserialize_dot_abapgit CHANGING !ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RAISING zcx_abapgit_exception . METHODS deserialize_objects IMPORTING !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks !ii_log TYPE REF TO zif_abapgit_log CHANGING !ct_files TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RAISING zcx_abapgit_exception . METHODS normalize_local_settings CHANGING !cs_local_settings TYPE zif_abapgit_persistence=>ty_local_settings . METHODS notify_listener IMPORTING !is_change_mask TYPE zif_abapgit_persistence=>ty_repo_meta_mask RAISING zcx_abapgit_exception . METHODS update_last_deserialize RAISING zcx_abapgit_exception . METHODS check_abap_language_version RAISING zcx_abapgit_exception . METHODS remove_locally_excluded_files CHANGING !ct_rem_files TYPE zif_abapgit_git_definitions=>ty_files_tt OPTIONAL !ct_loc_files TYPE zif_abapgit_definitions=>ty_files_item_tt OPTIONAL RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_repo_checksums DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_repo_checksums. METHODS constructor IMPORTING !iv_repo_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception. METHODS force_write IMPORTING it_checksums TYPE zif_abapgit_persistence=>ty_local_checksum_tt RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_local_files_by_item_tt TYPE SORTED TABLE OF zif_abapgit_definitions=>ty_file_item WITH NON-UNIQUE KEY item. DATA mv_repo_key TYPE zif_abapgit_persistence=>ty_repo-key. DATA mi_repo TYPE REF TO zif_abapgit_repo. METHODS remove_non_code_related_files CHANGING !ct_local_files TYPE ty_local_files_by_item_tt. METHODS build_checksums_from_files IMPORTING it_local TYPE ty_local_files_by_item_tt RETURNING VALUE(rt_checksums) TYPE zif_abapgit_persistence=>ty_local_checksum_tt. METHODS save_checksums IMPORTING it_checksums TYPE zif_abapgit_persistence=>ty_local_checksum_tt RAISING zcx_abapgit_exception. METHODS add_meta CHANGING cv_cs_blob TYPE string RAISING zcx_abapgit_exception. METHODS extract_meta CHANGING * co_string_map - return string map with meta when it is needed cv_cs_blob TYPE string. ENDCLASS. CLASS zcl_abapgit_repo_content_list DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS constructor IMPORTING io_repo TYPE REF TO zcl_abapgit_repo. METHODS list IMPORTING iv_path TYPE string iv_by_folders TYPE abap_bool OPTIONAL iv_changes_only TYPE abap_bool OPTIONAL iv_transports TYPE abap_bool OPTIONAL RETURNING VALUE(rt_repo_items) TYPE zif_abapgit_definitions=>ty_repo_item_tt RAISING zcx_abapgit_exception. METHODS get_log RETURNING VALUE(ri_log) TYPE REF TO zif_abapgit_log. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_sortkey, default TYPE i VALUE 9999, parent_dir TYPE i VALUE 0, dir TYPE i VALUE 1, orphan TYPE i VALUE 2, changed TYPE i VALUE 3, inactive TYPE i VALUE 4, END OF c_sortkey. DATA: mo_repo TYPE REF TO zcl_abapgit_repo, mi_log TYPE REF TO zif_abapgit_log. METHODS build_repo_items RETURNING VALUE(rt_repo_items) TYPE zif_abapgit_definitions=>ty_repo_item_tt RAISING zcx_abapgit_exception. METHODS build_folders IMPORTING iv_cur_dir TYPE string CHANGING ct_repo_items TYPE zif_abapgit_definitions=>ty_repo_item_tt RAISING zcx_abapgit_exception. METHODS determine_transports CHANGING ct_repo_items TYPE zif_abapgit_definitions=>ty_repo_item_tt. METHODS filter_changes CHANGING ct_repo_items TYPE zif_abapgit_definitions=>ty_repo_item_tt. METHODS check_repo_size RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_repo_cs_migration DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS run RAISING zcx_abapgit_exception zcx_abapgit_not_found. PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_repo_ids TYPE SORTED TABLE OF zif_abapgit_persistence=>ty_repo-key WITH UNIQUE KEY table_line. CLASS-METHODS get_unconverted_repo_ids RETURNING VALUE(rt_repo_ids) TYPE ty_repo_ids. CLASS-METHODS clear_repo_metadata IMPORTING iv_repo_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception zcx_abapgit_not_found. CLASS-METHODS convert_checksums IMPORTING iv_repo_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception zcx_abapgit_not_found. ENDCLASS. CLASS zcl_abapgit_repo_offline DEFINITION INHERITING FROM zcl_abapgit_repo FINAL CREATE PUBLIC . PUBLIC SECTION. PROTECTED SECTION. METHODS reset_remote REDEFINITION . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_repo_online DEFINITION INHERITING FROM zcl_abapgit_repo FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_repo_online . ALIASES create_branch FOR zif_abapgit_repo_online~create_branch . ALIASES get_current_remote FOR zif_abapgit_repo_online~get_current_remote . ALIASES get_selected_branch FOR zif_abapgit_repo_online~get_selected_branch . ALIASES get_selected_commit FOR zif_abapgit_repo_online~get_selected_commit . ALIASES get_url FOR zif_abapgit_repo_online~get_url . ALIASES push FOR zif_abapgit_repo_online~push . ALIASES select_branch FOR zif_abapgit_repo_online~select_branch . ALIASES select_commit FOR zif_abapgit_repo_online~select_commit . ALIASES set_url FOR zif_abapgit_repo_online~set_url . ALIASES switch_origin FOR zif_abapgit_repo_online~switch_origin . ALIASES get_switched_origin FOR zif_abapgit_repo_online~get_switched_origin. METHODS zif_abapgit_repo~get_files_remote REDEFINITION . METHODS zif_abapgit_repo~get_name REDEFINITION . METHODS zif_abapgit_repo~has_remote_source REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. DATA mt_objects TYPE zif_abapgit_definitions=>ty_objects_tt . DATA mv_current_commit TYPE zif_abapgit_git_definitions=>ty_sha1 . METHODS handle_stage_ignore IMPORTING !io_stage TYPE REF TO zcl_abapgit_stage RAISING zcx_abapgit_exception . METHODS set_objects IMPORTING !it_objects TYPE zif_abapgit_definitions=>ty_objects_tt RAISING zcx_abapgit_exception . METHODS fetch_remote RAISING zcx_abapgit_exception . METHODS get_objects RETURNING VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt RAISING zcx_abapgit_exception . METHODS raise_error_if_branch_exists IMPORTING iv_name TYPE string RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_repo_srv DEFINITION FINAL CREATE PRIVATE . PUBLIC SECTION. INTERFACES zif_abapgit_repo_srv . INTERFACES zif_abapgit_repo_listener . CLASS-METHODS get_instance RETURNING VALUE(ri_srv) TYPE REF TO zif_abapgit_repo_srv . CLASS-METHODS inject_instance IMPORTING ii_srv TYPE REF TO zif_abapgit_repo_srv. PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA gi_ref TYPE REF TO zif_abapgit_repo_srv . DATA mv_init TYPE abap_bool. DATA mv_only_favorites TYPE abap_bool. DATA mt_list TYPE zif_abapgit_repo_srv=>ty_repo_list . METHODS determine_branch_name IMPORTING !iv_name TYPE string !iv_url TYPE string RETURNING VALUE(rv_name) TYPE string RAISING zcx_abapgit_exception . METHODS refresh_all RAISING zcx_abapgit_exception . METHODS refresh_favorites RAISING zcx_abapgit_exception . METHODS instantiate_and_add IMPORTING !is_repo_meta TYPE zif_abapgit_persistence=>ty_repo RETURNING VALUE(ri_repo) TYPE REF TO zif_abapgit_repo RAISING zcx_abapgit_exception . METHODS add IMPORTING !ii_repo TYPE REF TO zif_abapgit_repo RAISING zcx_abapgit_exception . METHODS reinstantiate_repo IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !is_meta TYPE zif_abapgit_persistence=>ty_repo_xml RAISING zcx_abapgit_exception . METHODS validate_sub_super_packages IMPORTING !iv_package TYPE devclass !it_repos TYPE zif_abapgit_persistence=>ty_repos !iv_ign_subpkg TYPE abap_bool DEFAULT abap_false EXPORTING VALUE(ei_repo) TYPE REF TO zif_abapgit_repo !ev_reason TYPE string RAISING zcx_abapgit_exception . METHODS validate_package_korrflag IMPORTING !iv_package TYPE devclass !iv_ign_subpkg TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_repo_status DEFINITION FINAL CREATE PRIVATE. PUBLIC SECTION. CLASS-METHODS calculate IMPORTING !ii_repo TYPE REF TO zif_abapgit_repo !ii_log TYPE REF TO zif_abapgit_log OPTIONAL !ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL RETURNING VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt RAISING zcx_abapgit_exception. METHODS constructor IMPORTING !iv_root_package TYPE devclass !io_dot TYPE REF TO zcl_abapgit_dot_abapgit. PROTECTED SECTION. PRIVATE SECTION. DATA mv_root_package TYPE devclass. DATA mo_dot TYPE REF TO zcl_abapgit_dot_abapgit. METHODS calculate_status IMPORTING !it_local TYPE zif_abapgit_definitions=>ty_files_item_tt !it_remote TYPE zif_abapgit_git_definitions=>ty_files_tt !it_cur_state TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RETURNING VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt RAISING zcx_abapgit_exception. METHODS process_local IMPORTING !it_local TYPE zif_abapgit_definitions=>ty_files_item_tt !it_state_idx TYPE zif_abapgit_git_definitions=>ty_file_signatures_ts CHANGING !ct_remote TYPE zif_abapgit_git_definitions=>ty_files_tt !ct_items TYPE zif_abapgit_definitions=>ty_items_tt !ct_results TYPE zif_abapgit_definitions=>ty_results_tt RAISING zcx_abapgit_exception. METHODS process_items IMPORTING !it_unprocessed_remote TYPE zif_abapgit_git_definitions=>ty_files_tt CHANGING !ct_items TYPE zif_abapgit_definitions=>ty_items_tt RAISING zcx_abapgit_exception. METHODS process_remote IMPORTING !it_local TYPE zif_abapgit_definitions=>ty_files_item_tt !it_unprocessed_remote TYPE zif_abapgit_git_definitions=>ty_files_tt !it_state_idx TYPE zif_abapgit_git_definitions=>ty_file_signatures_ts !it_items_idx TYPE zif_abapgit_definitions=>ty_items_ts CHANGING !ct_results TYPE zif_abapgit_definitions=>ty_results_tt RAISING zcx_abapgit_exception. CLASS-METHODS build_existing IMPORTING !is_local TYPE zif_abapgit_definitions=>ty_file_item !is_remote TYPE zif_abapgit_git_definitions=>ty_file !it_state TYPE zif_abapgit_git_definitions=>ty_file_signatures_ts RETURNING VALUE(rs_result) TYPE zif_abapgit_definitions=>ty_result. CLASS-METHODS build_new_local IMPORTING !is_local TYPE zif_abapgit_definitions=>ty_file_item RETURNING VALUE(rs_result) TYPE zif_abapgit_definitions=>ty_result. METHODS build_new_remote IMPORTING !is_remote TYPE zif_abapgit_git_definitions=>ty_file !it_items_idx TYPE zif_abapgit_definitions=>ty_items_ts !it_state_idx TYPE zif_abapgit_git_definitions=>ty_file_signatures_ts RETURNING VALUE(rs_result) TYPE zif_abapgit_definitions=>ty_result RAISING zcx_abapgit_exception. CLASS-METHODS get_object_package IMPORTING !iv_object TYPE tadir-object !iv_obj_name TYPE tadir-obj_name RETURNING VALUE(rv_devclass) TYPE devclass RAISING zcx_abapgit_exception. CLASS-METHODS check_local_remote_consistency IMPORTING !is_local TYPE zif_abapgit_definitions=>ty_file_item !is_remote TYPE zif_abapgit_git_definitions=>ty_file RAISING zcx_abapgit_exception. CLASS-METHODS ensure_state IMPORTING !it_local TYPE zif_abapgit_definitions=>ty_files_item_tt !it_cur_state TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt RETURNING VALUE(rt_state) TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt. ENDCLASS. CLASS zcl_abapgit_syntax_factory DEFINITION ABSTRACT CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS create IMPORTING !iv_filename TYPE string !iv_hidden_chars TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_syntax_highlighter . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_syntax_highlighter DEFINITION ABSTRACT CREATE PUBLIC . PUBLIC SECTION. METHODS process_line IMPORTING !iv_line TYPE string RETURNING VALUE(rv_line) TYPE string . METHODS set_hidden_chars IMPORTING !iv_hidden_chars TYPE abap_bool . PROTECTED SECTION. TYPES: BEGIN OF ty_match, token TYPE c LENGTH 1, " Type of matches offset TYPE i, " Beginning position of the string that should be formatted length TYPE i, " Length of the string that should be formatted text_tag TYPE string, " Type of text tag END OF ty_match . TYPES: ty_match_tt TYPE STANDARD TABLE OF ty_match WITH DEFAULT KEY . TYPES: BEGIN OF ty_rule, regex TYPE REF TO cl_abap_regex, token TYPE c LENGTH 1, style TYPE string, relevant_submatch TYPE i, END OF ty_rule . CONSTANTS c_token_none TYPE c VALUE '.' ##NO_TEXT. DATA: mt_rules TYPE STANDARD TABLE OF ty_rule . DATA mv_hidden_chars TYPE abap_bool . METHODS add_rule IMPORTING !iv_regex TYPE string !iv_token TYPE c !iv_style TYPE string !iv_submatch TYPE i OPTIONAL . METHODS parse_line IMPORTING !iv_line TYPE string RETURNING VALUE(rt_matches) TYPE ty_match_tt . METHODS order_matches IMPORTING !iv_line TYPE string CHANGING !ct_matches TYPE ty_match_tt . METHODS extend_matches IMPORTING !iv_line TYPE string CHANGING !ct_matches TYPE ty_match_tt . METHODS format_line IMPORTING !iv_line TYPE string !it_matches TYPE ty_match_tt RETURNING VALUE(rv_line) TYPE string . METHODS apply_style IMPORTING !iv_line TYPE string !iv_class TYPE string RETURNING VALUE(rv_line) TYPE string . METHODS is_whitespace IMPORTING !iv_string TYPE string RETURNING VALUE(rv_result) TYPE abap_bool . METHODS show_hidden_chars IMPORTING !iv_line TYPE string RETURNING VALUE(rv_line) TYPE string . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_syntax_abap DEFINITION INHERITING FROM zcl_abapgit_syntax_highlighter CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS class_constructor. METHODS constructor. CONSTANTS: BEGIN OF c_css, keyword TYPE string VALUE 'keyword', text TYPE string VALUE 'text', comment TYPE string VALUE 'comment', END OF c_css, BEGIN OF c_token, keyword TYPE c VALUE 'K', text TYPE c VALUE 'T', comment TYPE c VALUE 'C', END OF c_token, BEGIN OF c_regex, comment TYPE string VALUE '##|"|^\*', text TYPE string VALUE '`|''|\||\{|\}', keyword TYPE string VALUE '&&|\b[-_a-z0-9]+\b', END OF c_regex. PROTECTED SECTION. CLASS-DATA gt_keywords TYPE HASHED TABLE OF string WITH UNIQUE KEY table_line. CLASS-METHODS init_keywords. CLASS-METHODS is_keyword IMPORTING iv_chunk TYPE string RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS order_matches REDEFINITION. METHODS parse_line REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_syntax_css DEFINITION INHERITING FROM zcl_abapgit_syntax_highlighter CREATE PUBLIC . PUBLIC SECTION. " CSS Standard https://www.w3.org/TR/css-2018/ " CSS Reference https://www.w3schools.com/cssref/default.asp " We used a mixture of above as reference for the keyword list " 1) CSS Properties https://www.w3schools.com/cssref/default.asp " 2) CSS Values & Units https://www.w3schools.com/cssref/css_units.asp " 3) CSS Selectors https://www.w3.org/TR/css-2018/#selectors " 4) CSS Functions https://www.w3schools.com/cssref/css_functions.asp " 5) CSS Colors https://www.w3schools.com/colors/colors_names.asp " 6) CSS Extensions " 7) CSS At-Rules https://www.w3.org/TR/css-2018/#at-rules " 8) HTML Tags CONSTANTS: BEGIN OF c_css, keyword TYPE string VALUE 'keyword', text TYPE string VALUE 'text', comment TYPE string VALUE 'comment', selectors TYPE string VALUE 'selectors', units TYPE string VALUE 'units', properties TYPE string VALUE 'properties', values TYPE string VALUE 'values', functions TYPE string VALUE 'functions', colors TYPE string VALUE 'colors', extensions TYPE string VALUE 'extensions', at_rules TYPE string VALUE 'at_rules', html TYPE string VALUE 'html', END OF c_css . CONSTANTS: BEGIN OF c_token, keyword TYPE c VALUE 'K', text TYPE c VALUE 'T', comment TYPE c VALUE 'C', selectors TYPE c VALUE 'S', units TYPE c VALUE 'U', properties TYPE c VALUE 'P', values TYPE c VALUE 'V', functions TYPE c VALUE 'F', colors TYPE c VALUE 'Z', extensions TYPE c VALUE 'E', at_rules TYPE c VALUE 'A', html TYPE c VALUE 'H', END OF c_token . CONSTANTS: BEGIN OF c_regex, " comments /* ... */ comment TYPE string VALUE '\/\*.*\*\/|\/\*|\*\/', " single or double quoted strings text TYPE string VALUE '("[^"]*")|(''[^'']*'')|(`[^`]*`)', " in general keywords don't contain numbers (except -ms-scrollbar-3dlight-color) keyword TYPE string VALUE '\b[a-z3@\-]+\b', " selectors begin with : selectors TYPE string VALUE ':[:a-z]+\b', " units units TYPE string VALUE '\b[0-9\. ]+(ch|cm|em|ex|in|mm|pc|pt|px|vh|vmax|vmin|vw)\b|\b[0-9\. ]+%', END OF c_regex . CLASS-METHODS class_constructor . METHODS constructor . PROTECTED SECTION. TYPES: ty_token TYPE c LENGTH 1. TYPES: BEGIN OF ty_keyword, keyword TYPE string, token TYPE ty_token, END OF ty_keyword. CLASS-DATA gt_keywords TYPE HASHED TABLE OF ty_keyword WITH UNIQUE KEY keyword. CLASS-DATA gv_comment TYPE abap_bool. CLASS-METHODS init_keywords. CLASS-METHODS insert_keywords IMPORTING iv_keywords TYPE string iv_token TYPE ty_token. CLASS-METHODS is_keyword IMPORTING iv_chunk TYPE string RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS order_matches REDEFINITION. METHODS parse_line REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_syntax_js DEFINITION INHERITING FROM zcl_abapgit_syntax_highlighter CREATE PUBLIC . PUBLIC SECTION. CONSTANTS: " JavaScript " 1) General keywords " 2) Variable types " 3) HTML Tags BEGIN OF c_css, keyword TYPE string VALUE 'keyword', text TYPE string VALUE 'text', comment TYPE string VALUE 'comment', variables TYPE string VALUE 'variables', END OF c_css . CONSTANTS: BEGIN OF c_token, keyword TYPE c VALUE 'K', text TYPE c VALUE 'T', comment TYPE c VALUE 'C', variables TYPE c VALUE 'V', END OF c_token . CONSTANTS: BEGIN OF c_regex, " comments /* ... */ or // comment TYPE string VALUE '\/\*.*\*\/|\/\*|\*\/|\/\/', " single or double quoted strings text TYPE string VALUE '"|''|`', " in general keywords don't contain numbers (except -ms-scrollbar-3dlight-color) keyword TYPE string VALUE '\b[a-z-]+\b', END OF c_regex . CLASS-METHODS class_constructor . METHODS constructor . PROTECTED SECTION. TYPES: ty_token TYPE c LENGTH 1. TYPES: BEGIN OF ty_keyword, keyword TYPE string, token TYPE ty_token, END OF ty_keyword. CLASS-DATA gt_keywords TYPE HASHED TABLE OF ty_keyword WITH UNIQUE KEY keyword. CLASS-DATA gv_comment TYPE abap_bool. CLASS-METHODS init_keywords. CLASS-METHODS insert_keywords IMPORTING iv_keywords TYPE string iv_token TYPE ty_token. CLASS-METHODS is_keyword IMPORTING iv_chunk TYPE string RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS order_matches REDEFINITION. METHODS parse_line REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_syntax_json DEFINITION INHERITING FROM zcl_abapgit_syntax_highlighter CREATE PUBLIC. PUBLIC SECTION. CONSTANTS: " JSON... This was easy :-) " JSONC... With comments BEGIN OF c_css, keyword TYPE string VALUE 'selectors', "#EC NOTEXT text TYPE string VALUE 'text', "#EC NOTEXT values TYPE string VALUE 'properties', "#EC NOTEXT comment TYPE string VALUE 'comment', "#EC NOTEXT END OF c_css. CONSTANTS: BEGIN OF c_token, keyword TYPE c VALUE 'K', "#EC NOTEXT text TYPE c VALUE 'T', "#EC NOTEXT values TYPE c VALUE 'V', "#EC NOTEXT comment TYPE c VALUE 'C', "#EC NOTEXT END OF c_token. CONSTANTS: BEGIN OF c_regex, " comments /* ... */ or // comment TYPE string VALUE '\/\*.*\*\/|\/\*|\*\/|\/\/', "#EC NOTEXT " not much here keyword TYPE string VALUE 'true|false|null', "#EC NOTEXT " double quoted strings text TYPE string VALUE '"', "#EC NOTEXT END OF c_regex. METHODS constructor. PROTECTED SECTION. METHODS order_matches REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_syntax_txt DEFINITION INHERITING FROM zcl_abapgit_syntax_highlighter CREATE PUBLIC . PUBLIC SECTION. METHODS constructor . METHODS process_line REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_syntax_xml DEFINITION INHERITING FROM zcl_abapgit_syntax_highlighter CREATE PUBLIC . PUBLIC SECTION. CONSTANTS: BEGIN OF c_css, xml_tag TYPE string VALUE 'xml_tag', attr TYPE string VALUE 'attr', attr_val TYPE string VALUE 'attr_val', comment TYPE string VALUE 'comment', END OF c_css . CONSTANTS: BEGIN OF c_token, xml_tag TYPE c VALUE 'X', attr TYPE c VALUE 'A', attr_val TYPE c VALUE 'V', comment TYPE c VALUE 'C', END OF c_token . CONSTANTS: BEGIN OF c_regex, "for XML tags, we will use a submatch " main pattern includes quoted strings so we can ignore < and > in attr values xml_tag TYPE string VALUE '(?:"[^"]*")|(?:''[^'']*'')|(?:`[^`]*`)|([<>])', attr TYPE string VALUE '(?:^|\s)[-a-z:_0-9]+\s*(?==\s*["|''|`])', attr_val TYPE string VALUE '("[^"]*")|(''[^'']*'')|(`[^`]*`)', " comments comment TYPE string VALUE '[\<]!--.*--[\>]|[\<]!--|--[\>]', END OF c_regex . METHODS constructor . PROTECTED SECTION. CLASS-DATA gv_comment TYPE abap_bool. METHODS order_matches REDEFINITION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_gui DEFINITION CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_gui_services . CONSTANTS: BEGIN OF c_event_state, not_handled TYPE i VALUE 0, re_render TYPE i VALUE 1, new_page TYPE i VALUE 2, go_back TYPE i VALUE 3, no_more_act TYPE i VALUE 4, new_page_w_bookmark TYPE i VALUE 5, go_back_to_bookmark TYPE i VALUE 6, new_page_replacing TYPE i VALUE 7, END OF c_event_state . METHODS go_home IMPORTING iv_action TYPE string RAISING zcx_abapgit_exception . METHODS back IMPORTING !iv_to_bookmark TYPE abap_bool DEFAULT abap_false !iv_graceful TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_exit) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS back_graceful RETURNING VALUE(rv_handled) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS on_event FOR EVENT sapevent OF zif_abapgit_html_viewer IMPORTING !action !frame !getdata !postdata !query_table . METHODS constructor IMPORTING !io_component TYPE REF TO object OPTIONAL !ii_asset_man TYPE REF TO zif_abapgit_gui_asset_manager OPTIONAL !ii_hotkey_ctl TYPE REF TO zif_abapgit_gui_hotkey_ctl OPTIONAL !ii_html_processor TYPE REF TO zif_abapgit_gui_html_processor OPTIONAL !iv_rollback_on_error TYPE abap_bool DEFAULT abap_true RAISING zcx_abapgit_exception . METHODS free . METHODS set_focus RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_page_stack, page TYPE REF TO zif_abapgit_gui_renderable, bookmark TYPE abap_bool, END OF ty_page_stack . DATA mv_rollback_on_error TYPE abap_bool . DATA mi_cur_page TYPE REF TO zif_abapgit_gui_renderable . DATA mt_stack TYPE STANDARD TABLE OF ty_page_stack . DATA mt_event_handlers TYPE STANDARD TABLE OF REF TO zif_abapgit_gui_event_handler . DATA mi_router TYPE REF TO zif_abapgit_gui_event_handler . DATA mi_asset_man TYPE REF TO zif_abapgit_gui_asset_manager . DATA mi_hotkey_ctl TYPE REF TO zif_abapgit_gui_hotkey_ctl . DATA mi_html_processor TYPE REF TO zif_abapgit_gui_html_processor . DATA mi_html_viewer TYPE REF TO zif_abapgit_html_viewer . DATA mo_html_parts TYPE REF TO zcl_abapgit_html_parts . DATA mi_common_log TYPE REF TO zif_abapgit_log . METHODS cache_html IMPORTING !iv_text TYPE string RETURNING VALUE(rv_url) TYPE string RAISING zcx_abapgit_exception . METHODS startup RAISING zcx_abapgit_exception . METHODS render RAISING zcx_abapgit_exception . METHODS call_page IMPORTING !ii_page TYPE REF TO zif_abapgit_gui_renderable !iv_with_bookmark TYPE abap_bool DEFAULT abap_false !iv_replacing TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception . METHODS handle_action IMPORTING !iv_action TYPE c !iv_getdata TYPE c OPTIONAL !it_postdata TYPE zif_abapgit_html_viewer=>ty_post_data OPTIONAL . METHODS handle_error IMPORTING !ix_exception TYPE REF TO zcx_abapgit_exception . METHODS is_page_modal IMPORTING !ii_page TYPE REF TO zif_abapgit_gui_renderable RETURNING VALUE(rv_yes) TYPE abap_bool . ENDCLASS. CLASS zcl_abapgit_gui_asset_manager DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_gui_asset_manager. CLASS-METHODS create RETURNING VALUE(ri_asset_manager) TYPE REF TO zif_abapgit_gui_asset_manager. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_asset_entry. INCLUDE TYPE zif_abapgit_gui_asset_manager~ty_web_asset. TYPES: mime_name TYPE wwwdatatab-objid, END OF ty_asset_entry. TYPES: ty_asset_register TYPE STANDARD TABLE OF ty_asset_entry WITH KEY url. DATA mt_asset_register TYPE ty_asset_register. METHODS get_mime_asset IMPORTING iv_mime_name TYPE c RETURNING VALUE(rv_xdata) TYPE xstring RAISING zcx_abapgit_exception. METHODS load_asset IMPORTING is_asset_entry TYPE ty_asset_entry RETURNING VALUE(rs_asset) TYPE zif_abapgit_gui_asset_manager~ty_web_asset RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_css_processor DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS: constructor IMPORTING ii_asset_manager TYPE REF TO zif_abapgit_gui_asset_manager, add_file IMPORTING iv_url TYPE string, process RETURNING VALUE(rv_result) TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_css_var, name TYPE string, value TYPE string, END OF ty_css_var, ty_css_vars TYPE SORTED TABLE OF ty_css_var WITH UNIQUE KEY name. METHODS: get_css_vars_in_string IMPORTING iv_string TYPE string RETURNING VALUE(rt_variables) TYPE ty_css_vars, resolve_var_recursively IMPORTING iv_variable_name TYPE string CHANGING ct_variables TYPE ty_css_vars RAISING zcx_abapgit_exception. DATA: mi_asset_manager TYPE REF TO zif_abapgit_gui_asset_manager, mt_files TYPE string_table. ENDCLASS. CLASS zcl_abapgit_gui_event DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event . CLASS-METHODS class_constructor . CLASS-METHODS new IMPORTING !ii_gui_services TYPE REF TO zif_abapgit_gui_services OPTIONAL !iv_action TYPE clike !iv_getdata TYPE clike OPTIONAL !it_postdata TYPE zif_abapgit_html_viewer=>ty_post_data OPTIONAL RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_gui_event. METHODS constructor IMPORTING !ii_gui_services TYPE REF TO zif_abapgit_gui_services OPTIONAL !iv_action TYPE clike !iv_getdata TYPE clike OPTIONAL !it_postdata TYPE zif_abapgit_html_viewer=>ty_post_data OPTIONAL . PROTECTED SECTION. PRIVATE SECTION. DATA mo_query TYPE REF TO zcl_abapgit_string_map. DATA mo_form_data TYPE REF TO zcl_abapgit_string_map. CLASS-DATA gv_non_breaking_space TYPE string . TYPES: BEGIN OF ty_name_value, name TYPE string, value TYPE string, END OF ty_name_value. TYPES ty_name_value_tt TYPE STANDARD TABLE OF ty_name_value WITH DEFAULT KEY. METHODS fields_to_map IMPORTING it_fields TYPE ty_name_value_tt RETURNING VALUE(ro_string_map) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. CLASS-METHODS parse_post_form_data IMPORTING !it_post_data TYPE zif_abapgit_html_viewer=>ty_post_data !iv_upper_cased TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rt_fields) TYPE ty_name_value_tt . CLASS-METHODS parse_fields IMPORTING !iv_string TYPE clike !iv_upper_cased TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rt_fields) TYPE ty_name_value_tt . CLASS-METHODS parse_fields_upper_case_name IMPORTING !iv_string TYPE clike RETURNING VALUE(rt_fields) TYPE ty_name_value_tt . CLASS-METHODS translate_postdata IMPORTING !it_postdata TYPE zif_abapgit_html_viewer=>ty_post_data RETURNING VALUE(rv_string) TYPE string . CLASS-METHODS field_keys_to_upper CHANGING !ct_fields TYPE ty_name_value_tt . CLASS-METHODS unescape IMPORTING !iv_string TYPE string RETURNING VALUE(rv_string) TYPE string . ENDCLASS. CLASS zcl_abapgit_gui_html_processor DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CONSTANTS c_css_build_name TYPE string VALUE 'css/bundle.css'. CONSTANTS c_preprocess_marker TYPE string VALUE ``. CONSTANTS c_comment_start TYPE string VALUE ``. INTERFACES zif_abapgit_gui_html_processor . METHODS constructor IMPORTING ii_asset_man TYPE REF TO zif_abapgit_gui_asset_manager. METHODS preserve_css IMPORTING !iv_css_url TYPE string . PROTECTED SECTION. PRIVATE SECTION. DATA mt_preserve_css TYPE string_table. DATA mi_asset_man TYPE REF TO zif_abapgit_gui_asset_manager. METHODS patch_html IMPORTING iv_html TYPE string EXPORTING ev_html TYPE string et_css_urls TYPE string_table RAISING zcx_abapgit_exception. METHODS is_preserved IMPORTING !iv_css_url TYPE string RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS find_head_offset IMPORTING iv_html TYPE string RETURNING VALUE(rv_head_end) TYPE i RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_utils DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS is_renderable IMPORTING !io_obj TYPE REF TO object RETURNING VALUE(rv_yes) TYPE abap_bool . CLASS-METHODS is_event_handler IMPORTING !io_obj TYPE REF TO object RETURNING VALUE(rv_yes) TYPE abap_bool . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_html DEFINITION CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_html . CONSTANTS c_indent_size TYPE i VALUE 2 ##NO_TEXT. CLASS-METHODS class_constructor . CLASS-METHODS create IMPORTING !iv_initial_chunk TYPE any OPTIONAL RETURNING VALUE(ri_instance) TYPE REF TO zif_abapgit_html. CLASS-METHODS icon IMPORTING !iv_name TYPE string !iv_hint TYPE string OPTIONAL !iv_class TYPE string OPTIONAL !iv_onclick TYPE string OPTIONAL RETURNING VALUE(rv_str) TYPE string . CLASS-METHODS checkbox IMPORTING iv_id TYPE string OPTIONAL iv_checked TYPE abap_bool OPTIONAL RETURNING VALUE(rv_html) TYPE string . CLASS-METHODS parse_data_attr IMPORTING iv_str TYPE string OPTIONAL RETURNING VALUE(rs_data_attr) TYPE zif_abapgit_html=>ty_data_attr . CLASS-METHODS set_debug_mode IMPORTING iv_mode TYPE abap_bool. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_max_indent TYPE i VALUE 200. TYPES: BEGIN OF ty_indent_context, no_indent_jscss TYPE abap_bool, within_style TYPE abap_bool, within_js TYPE abap_bool, within_textarea TYPE abap_bool, indent TYPE i, indent_str TYPE string, END OF ty_indent_context . TYPES: BEGIN OF ty_study_result, style_open TYPE abap_bool, style_close TYPE abap_bool, script_open TYPE abap_bool, script_close TYPE abap_bool, textarea_open TYPE abap_bool, textarea_close TYPE abap_bool, tag_close TYPE abap_bool, curly_close TYPE abap_bool, openings TYPE i, closings TYPE i, singles TYPE i, END OF ty_study_result . CLASS-DATA go_single_tags_re TYPE REF TO cl_abap_regex . DATA mt_buffer TYPE string_table . CLASS-DATA gv_spaces TYPE string . CLASS-DATA gv_debug_mode TYPE abap_bool . METHODS indent_line CHANGING !cs_context TYPE ty_indent_context !cv_line TYPE string . METHODS study_line IMPORTING !iv_line TYPE string !is_context TYPE ty_indent_context RETURNING VALUE(rs_result) TYPE ty_study_result . ENDCLASS. CLASS zcl_abapgit_html_parts DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS add_part IMPORTING !iv_collection TYPE string !ii_part TYPE REF TO zif_abapgit_html . METHODS get_parts IMPORTING !iv_collection TYPE string RETURNING VALUE(rt_parts) TYPE zif_abapgit_html=>ty_table_of . METHODS get_collection_names RETURNING VALUE(rt_list) TYPE string_table . METHODS get_collection_size IMPORTING !iv_collection TYPE string RETURNING VALUE(rv_size) TYPE i . METHODS clear. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_named_collection, name TYPE string, pile TYPE zif_abapgit_html=>ty_table_of, END OF ty_named_collection. TYPES: ty_named_collections TYPE STANDARD TABLE OF ty_named_collection WITH KEY name. DATA mt_part_collections TYPE ty_named_collections. METHODS get_collection IMPORTING !iv_collection TYPE string !iv_create_if_missing TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rr_collection) TYPE REF TO ty_named_collection . ENDCLASS. CLASS zcl_abapgit_html_viewer_gui DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_html_viewer . METHODS constructor IMPORTING !io_container TYPE REF TO cl_gui_container DEFAULT cl_gui_container=>screen0 !iv_disable_query_table TYPE abap_bool DEFAULT abap_true . PROTECTED SECTION. DATA mo_html_viewer TYPE REF TO cl_gui_html_viewer . METHODS on_event FOR EVENT sapevent OF cl_gui_html_viewer IMPORTING !action !frame !getdata !postdata !query_table . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_flow_exit DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_flow_exit . CLASS-METHODS get_instance RETURNING VALUE(ri_exit) TYPE REF TO zif_abapgit_flow_exit. PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA gi_global_exit TYPE REF TO zif_abapgit_flow_exit. CLASS-DATA gi_exit TYPE REF TO zif_abapgit_flow_exit. ENDCLASS. CLASS zcl_abapgit_exception_viewer DEFINITION CREATE PUBLIC. PUBLIC SECTION. METHODS: constructor IMPORTING ix_error TYPE REF TO zcx_abapgit_exception, goto_source RAISING zcx_abapgit_exception, goto_message RAISING zcx_abapgit_exception, show_callstack RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mx_error TYPE REF TO zcx_abapgit_exception, mt_callstack TYPE abap_callstack. METHODS: build_top_of_list IMPORTING is_top_of_stack TYPE abap_callstack_line RETURNING VALUE(ro_form) TYPE REF TO cl_salv_form_element, add_row IMPORTING io_grid TYPE REF TO cl_salv_form_layout_grid iv_col_1 TYPE csequence iv_col_2 TYPE csequence, on_double_click FOR EVENT double_click OF cl_salv_events_table IMPORTING row column, set_text IMPORTING io_columns TYPE REF TO cl_salv_columns_table iv_column TYPE lvc_fname iv_text TYPE string RAISING cx_static_check, goto_source_code IMPORTING is_callstack TYPE abap_callstack_line RAISING zcx_abapgit_exception, extract_classname IMPORTING iv_mainprogram TYPE abap_callstack_line-mainprogram RETURNING VALUE(rv_classname) TYPE tadir-obj_name, get_top_of_callstack RETURNING VALUE(rs_top_of_callstack) TYPE abap_callstack_line RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_buttons DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS new_online RETURNING VALUE(rv_html_string) TYPE string. CLASS-METHODS flow RETURNING VALUE(rv_html_string) TYPE string. CLASS-METHODS new_offline RETURNING VALUE(rv_html_string) TYPE string. CLASS-METHODS advanced RETURNING VALUE(rv_html_string) TYPE string. CLASS-METHODS help RETURNING VALUE(rv_html_string) TYPE string. CLASS-METHODS repo_list RETURNING VALUE(rv_html_string) TYPE string. CLASS-METHODS settings RETURNING VALUE(rv_html_string) TYPE string. CLASS-METHODS experimental RETURNING VALUE(rv_html_string) TYPE string. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_gui_chunk_lib DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_event_signature, method TYPE string, name TYPE string, END OF ty_event_signature . CLASS-METHODS class_constructor . CLASS-METHODS render_error IMPORTING !ix_error TYPE REF TO zcx_abapgit_exception OPTIONAL !iv_error TYPE string OPTIONAL !iv_extra_style TYPE string OPTIONAL RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . CLASS-METHODS render_success IMPORTING iv_message TYPE string RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . CLASS-METHODS render_repo_top IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo !iv_show_package TYPE abap_bool DEFAULT abap_true !iv_show_branch TYPE abap_bool DEFAULT abap_true !iv_show_commit TYPE abap_bool DEFAULT abap_true !iv_show_edit TYPE abap_bool DEFAULT abap_false !iv_interactive_branch TYPE abap_bool DEFAULT abap_false !io_news TYPE REF TO zcl_abapgit_repo_news OPTIONAL RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . CLASS-METHODS render_item_state IMPORTING !iv_lstate TYPE char1 !iv_rstate TYPE char1 RETURNING VALUE(rv_html) TYPE string . CLASS-METHODS render_js_error_banner RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . CLASS-METHODS render_news IMPORTING !io_news TYPE REF TO zcl_abapgit_repo_news RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . CLASS-METHODS render_error_message_box IMPORTING !ix_error TYPE REF TO zcx_abapgit_exception RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . CLASS-METHODS render_table_header IMPORTING !it_col_spec TYPE zif_abapgit_definitions=>ty_col_spec_tt !iv_order_by TYPE string !iv_order_descending TYPE abap_bool RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . CLASS-METHODS render_table_footer IMPORTING !iv_message TYPE string RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . CLASS-METHODS render_warning_banner IMPORTING !iv_text TYPE string RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . CLASS-METHODS render_infopanel IMPORTING !iv_div_id TYPE string !iv_title TYPE string !iv_hide TYPE abap_bool DEFAULT abap_true !iv_hint TYPE string OPTIONAL !iv_scrollable TYPE abap_bool DEFAULT abap_true !io_content TYPE REF TO zif_abapgit_html RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . CLASS-METHODS render_event_as_form IMPORTING !is_event TYPE ty_event_signature RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . CLASS-METHODS render_repo_palette IMPORTING iv_action TYPE string RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . CLASS-METHODS render_branch_name IMPORTING !iv_branch TYPE string OPTIONAL !iv_repo_key TYPE zif_abapgit_persistence=>ty_value OPTIONAL !io_repo TYPE REF TO zcl_abapgit_repo_online OPTIONAL !iv_interactive TYPE abap_bool DEFAULT abap_true RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . CLASS-METHODS render_repo_url IMPORTING iv_url TYPE zif_abapgit_persistence=>ty_repo-url iv_render_remote_edit_for_key TYPE zif_abapgit_persistence=>ty_repo-key OPTIONAL RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . CLASS-METHODS render_package_name IMPORTING !iv_package TYPE devclass !iv_interactive TYPE abap_bool DEFAULT abap_true !iv_suppress_title TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . CLASS-METHODS render_user_name IMPORTING !iv_username TYPE syuname !iv_interactive TYPE abap_bool DEFAULT abap_true !iv_icon_only TYPE abap_bool DEFAULT abap_false !iv_suppress_title TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . CLASS-METHODS render_transport IMPORTING !iv_transport TYPE trkorr !iv_interactive TYPE abap_bool DEFAULT abap_true !iv_icon_only TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . CLASS-METHODS render_sci_result IMPORTING ii_html TYPE REF TO zif_abapgit_html iv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result. CLASS-METHODS render_path IMPORTING !iv_path TYPE string !iv_interactive TYPE abap_bool DEFAULT abap_true RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . CLASS-METHODS render_timestamp IMPORTING iv_timestamp TYPE timestampl RETURNING VALUE(rv_rendered) TYPE string. CLASS-METHODS render_text_input IMPORTING iv_name TYPE string iv_label TYPE string iv_value TYPE string OPTIONAL iv_max_length TYPE string OPTIONAL iv_autofocus TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html. CLASS-METHODS render_label_list IMPORTING it_labels TYPE string_table io_label_colors TYPE REF TO zcl_abapgit_string_map iv_clickable_action TYPE string OPTIONAL iv_unlisted TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_html) TYPE string. CLASS-METHODS render_help_hint IMPORTING iv_text_to_wrap TYPE string iv_add_class TYPE string OPTIONAL RETURNING VALUE(rv_html) TYPE string. CLASS-METHODS get_item_icon IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item RETURNING VALUE(rv_html) TYPE string. CLASS-METHODS get_item_link IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item OPTIONAL !iv_obj_type TYPE zif_abapgit_definitions=>ty_repo_item-obj_type OPTIONAL !iv_obj_name TYPE zif_abapgit_definitions=>ty_repo_item-obj_name OPTIONAL PREFERRED PARAMETER is_item RETURNING VALUE(rv_html) TYPE string. PROTECTED SECTION. CLASS-METHODS render_repo_top_commit_hash IMPORTING !ii_html TYPE REF TO zif_abapgit_html !io_repo_online TYPE REF TO zcl_abapgit_repo_online RAISING zcx_abapgit_exception . PRIVATE SECTION. CLASS-DATA gv_time_zone TYPE timezone . CLASS-METHODS get_t100_text IMPORTING !iv_msgid TYPE scx_t100key-msgid !iv_msgno TYPE scx_t100key-msgno RETURNING VALUE(rv_text) TYPE string . CLASS-METHODS normalize_program_name IMPORTING !iv_program_name TYPE sy-repid RETURNING VALUE(rv_normalized_program_name) TYPE string . CLASS-METHODS shorten_repo_url IMPORTING iv_full_url TYPE string iv_max_length TYPE i DEFAULT 60 RETURNING VALUE(rv_shortened) TYPE string. ENDCLASS. CLASS zcl_abapgit_gui_component DEFINITION ABSTRACT CREATE PUBLIC . PUBLIC SECTION. CONSTANTS: BEGIN OF c_html_parts, scripts TYPE string VALUE 'scripts', hidden_forms TYPE string VALUE 'hidden_forms', END OF c_html_parts. PROTECTED SECTION. METHODS register_deferred_script IMPORTING ii_part TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. METHODS gui_services RETURNING VALUE(ri_gui_services) TYPE REF TO zif_abapgit_gui_services RAISING zcx_abapgit_exception. METHODS register_handlers RAISING zcx_abapgit_exception. PRIVATE SECTION. DATA mi_gui_services TYPE REF TO zif_abapgit_gui_services. METHODS register_event_handler IMPORTING ii_event_handler TYPE REF TO zif_abapgit_gui_event_handler OPTIONAL RAISING zcx_abapgit_exception. METHODS register_hotkeys IMPORTING ii_hotkey_provider TYPE REF TO zif_abapgit_gui_hotkeys OPTIONAL RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_template DEFINITION FINAL INHERITING FROM zcl_abapgit_gui_component CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_gui_page_title, zif_abapgit_gui_event_handler, zif_abapgit_gui_hotkeys, zif_abapgit_gui_menu_provider, zif_abapgit_gui_renderable, " TODO: remove table interface if not used on the page zif_abapgit_html_table. CLASS-METHODS create " TODO: page parameters, e.g. ref to repo * IMPORTING * ii_repo TYPE REF TO zif_abapgit_repo RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor * IMPORTING * ii_repo TYPE REF TO zif_abapgit_repo RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_action, " TODO: List of in-page actions refresh TYPE string VALUE 'refresh', END OF c_action. CONSTANTS c_title TYPE string VALUE 'Page Template'. " TODO: define page title ENDCLASS. CLASS zcl_abapgit_gui_hotkey_ctl DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_gui_hotkeys. INTERFACES zif_abapgit_gui_hotkey_ctl. INTERFACES zif_abapgit_gui_renderable. CONSTANTS c_showhotkeys_action TYPE string VALUE `showHotkeys` ##NO_TEXT. CLASS-METHODS should_show_hint RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS constructor RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA: mt_hotkeys TYPE zif_abapgit_gui_hotkeys=>ty_hotkeys_with_descr, ms_user_settings TYPE zif_abapgit_definitions=>ty_s_user_settings, mv_visible TYPE abap_bool. CLASS-DATA gv_hint_was_shown TYPE abap_bool . METHODS render_scripts IMPORTING !it_hotkeys TYPE zif_abapgit_gui_hotkeys=>ty_hotkeys_with_descr RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . ENDCLASS. CLASS zcl_abapgit_gui_page_flow DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler . INTERFACES zif_abapgit_gui_renderable . INTERFACES zif_abapgit_gui_menu_provider . CLASS-METHODS create RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . METHODS constructor RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_action, refresh TYPE string VALUE 'refresh', pull TYPE string VALUE 'pull', stage TYPE string VALUE 'stage', END OF c_action . DATA mt_features TYPE zif_abapgit_gui_page_flow=>ty_features . METHODS refresh RAISING zcx_abapgit_exception . METHODS set_branch IMPORTING !iv_branch TYPE string !iv_key TYPE zif_abapgit_persistence=>ty_value RAISING zcx_abapgit_exception . METHODS render_table IMPORTING !is_feature TYPE zif_abapgit_gui_page_flow=>ty_feature RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS render_toolbar IMPORTING !iv_index TYPE i !is_feature TYPE zif_abapgit_gui_page_flow=>ty_feature RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . ENDCLASS. CLASS zcl_abapgit_gui_in_page_modal DEFINITION CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_gui_renderable. CLASS-METHODS create IMPORTING !ii_child TYPE REF TO zif_abapgit_gui_renderable !iv_width TYPE i OPTIONAL !iv_height TYPE i OPTIONAL RETURNING VALUE(ro_wrap) TYPE REF TO zcl_abapgit_gui_in_page_modal RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !ii_child TYPE REF TO zif_abapgit_gui_renderable !iv_width TYPE i OPTIONAL !iv_height TYPE i OPTIONAL. PROTECTED SECTION. PRIVATE SECTION. DATA mi_child TYPE REF TO zif_abapgit_gui_renderable. DATA: BEGIN OF ms_attrs, width TYPE i, height TYPE i, END OF ms_attrs. ENDCLASS. CLASS zcl_abapgit_gui_menus DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. CLASS-METHODS advanced RETURNING VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar. CLASS-METHODS help RETURNING VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar. CLASS-METHODS back RETURNING VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar. CLASS-METHODS settings IMPORTING !iv_act TYPE string RETURNING VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar. CLASS-METHODS repo_settings IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !iv_act TYPE string RETURNING VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar. CLASS-METHODS experimental IMPORTING io_menu TYPE REF TO zcl_abapgit_html_toolbar. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_gui_page DEFINITION ABSTRACT INHERITING FROM zcl_abapgit_gui_component CREATE PUBLIC. PUBLIC SECTION. INTERFACES: zif_abapgit_gui_modal, zif_abapgit_gui_renderable, zif_abapgit_gui_event_handler, zif_abapgit_gui_error_handler. TYPES: BEGIN OF ty_control, page_layout TYPE string, page_title TYPE string, page_menu TYPE REF TO zcl_abapgit_html_toolbar, page_menu_provider TYPE REF TO zif_abapgit_gui_menu_provider, page_title_provider TYPE REF TO zif_abapgit_gui_page_title, extra_css_url TYPE string, extra_js_url TYPE string, show_as_modal TYPE abap_bool, END OF ty_control . METHODS constructor RAISING zcx_abapgit_exception. CONSTANTS: BEGIN OF c_page_layout, centered TYPE string VALUE `centered`, full_width TYPE string VALUE `full_width`, END OF c_page_layout. PROTECTED SECTION. DATA ms_control TYPE ty_control . METHODS render_content " TODO refactor, render child directly ABSTRACT RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . PRIVATE SECTION. DATA mo_settings TYPE REF TO zcl_abapgit_settings . DATA mx_error TYPE REF TO zcx_abapgit_exception . DATA mo_exception_viewer TYPE REF TO zcl_abapgit_exception_viewer . METHODS render_deferred_parts IMPORTING !ii_html TYPE REF TO zif_abapgit_html !iv_part_category TYPE string RAISING zcx_abapgit_exception . METHODS html_head RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS header_stylesheet_links IMPORTING ii_html TYPE REF TO zif_abapgit_html . METHODS header_script_links IMPORTING ii_html TYPE REF TO zif_abapgit_html . METHODS title RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS footer IMPORTING !iv_time TYPE string RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_link_hints IMPORTING !ii_html TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_browser_control_warning IMPORTING !ii_html TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_command_palettes IMPORTING !ii_html TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_hotkey_overview RETURNING VALUE(ro_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_error_message_box RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS scripts RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS get_version_details RETURNING VALUE(rv_version) TYPE string. METHODS is_edge_control_warning_needed RETURNING VALUE(rv_result) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_gui_page_hoc DEFINITION INHERITING FROM zcl_abapgit_gui_page FINAL CREATE PRIVATE. PUBLIC SECTION. CLASS-METHODS create IMPORTING !ii_child_component TYPE REF TO zif_abapgit_gui_renderable !iv_page_title TYPE string OPTIONAL !iv_page_layout TYPE string DEFAULT zcl_abapgit_gui_page=>c_page_layout-centered !io_page_menu TYPE REF TO zcl_abapgit_html_toolbar OPTIONAL !ii_page_menu_provider TYPE REF TO zif_abapgit_gui_menu_provider OPTIONAL !ii_page_title_provider TYPE REF TO zif_abapgit_gui_page_title OPTIONAL !iv_extra_css_url TYPE string OPTIONAL !iv_extra_js_url TYPE string OPTIONAL !iv_show_as_modal TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_page_wrap) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS get_child RETURNING VALUE(ri_child) TYPE REF TO zif_abapgit_gui_renderable. METHODS constructor IMPORTING !ii_child_component TYPE REF TO zif_abapgit_gui_renderable !is_control TYPE zcl_abapgit_gui_page=>ty_control RAISING zcx_abapgit_exception. PROTECTED SECTION. METHODS render_content REDEFINITION. PRIVATE SECTION. DATA mi_child TYPE REF TO zif_abapgit_gui_renderable . METHODS detect_modal RETURNING VALUE(rv_is_modal) TYPE abap_bool. METHODS detect_menu_provider RETURNING VALUE(ri_ref) TYPE REF TO zif_abapgit_gui_menu_provider. METHODS detect_title_provider RETURNING VALUE(ri_ref) TYPE REF TO zif_abapgit_gui_page_title. ENDCLASS. CLASS zcl_abapgit_gui_picklist DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. INTERFACES zif_abapgit_gui_page_title. METHODS constructor IMPORTING !it_list TYPE STANDARD TABLE !iv_id TYPE string OPTIONAL !iv_in_page TYPE abap_bool DEFAULT abap_false !iv_title TYPE string DEFAULT 'Choose from list' !iv_attr_name TYPE abap_compname OPTIONAL !ii_item_renderer TYPE REF TO zif_abapgit_gui_render_item OPTIONAL RAISING zcx_abapgit_exception. METHODS get_result_idx RETURNING VALUE(rv_index) TYPE i. METHODS get_result_item CHANGING !cs_selected TYPE any. METHODS was_cancelled RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS is_fulfilled RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS id RETURNING VALUE(rv_id) TYPE string. METHODS is_in_page RETURNING VALUE(rv_yes) TYPE abap_bool. METHODS set_id IMPORTING iv_id TYPE string RETURNING VALUE(ro_me) TYPE REF TO zcl_abapgit_gui_picklist. METHODS set_in_page IMPORTING iv_in_page TYPE abap_bool DEFAULT abap_true RETURNING VALUE(ro_me) TYPE REF TO zcl_abapgit_gui_picklist. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_event, back TYPE string VALUE 'back', choose TYPE string VALUE 'choose', END OF c_event. CONSTANTS c_radio_name TYPE string VALUE 'radio'. DATA mo_form TYPE REF TO zcl_abapgit_html_form. DATA mo_form_data TYPE REF TO zcl_abapgit_string_map. DATA mo_form_util TYPE REF TO zcl_abapgit_html_form_utils. DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map. DATA mr_list TYPE REF TO data. DATA mv_selected TYPE i. DATA mv_cancelled TYPE abap_bool. DATA mv_fulfilled TYPE abap_bool. DATA mv_attr_name TYPE abap_compname. DATA mi_item_renderer TYPE REF TO zif_abapgit_gui_render_item. DATA mv_in_page TYPE abap_bool. DATA mv_id TYPE string. DATA mv_title TYPE string. METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form RAISING zcx_abapgit_exception. METHODS return_state RETURNING VALUE(rv_state) TYPE zif_abapgit_gui_event_handler=>ty_handling_result-state. ENDCLASS. CLASS zcl_abapgit_html_action_utils DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS jump_encode IMPORTING !iv_obj_type TYPE tadir-object !iv_obj_name TYPE tadir-obj_name !iv_filename TYPE string OPTIONAL RETURNING VALUE(rv_string) TYPE string . CLASS-METHODS dir_encode IMPORTING !iv_path TYPE string RETURNING VALUE(rv_string) TYPE string . CLASS-METHODS file_encode IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !ig_file TYPE any !iv_extra TYPE clike OPTIONAL RETURNING VALUE(rv_string) TYPE string . CLASS-METHODS obj_encode IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !ig_object TYPE any RETURNING VALUE(rv_string) TYPE string . CLASS-METHODS dbkey_encode IMPORTING !is_key TYPE zif_abapgit_persistence=>ty_content RETURNING VALUE(rv_string) TYPE string . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_name_value, name TYPE string, value TYPE string, END OF ty_name_value. TYPES ty_name_value_tt TYPE STANDARD TABLE OF ty_name_value WITH DEFAULT KEY. CLASS-METHODS add_field IMPORTING !iv_name TYPE string !ig_field TYPE any CHANGING !ct_field TYPE ty_name_value_tt . CLASS-METHODS fields_to_string IMPORTING !it_fields TYPE ty_name_value_tt RETURNING VALUE(rv_string) TYPE string. ENDCLASS. CLASS zcl_abapgit_html_form DEFINITION FINAL INHERITING FROM zcl_abapgit_gui_component CREATE PRIVATE . PUBLIC SECTION. INTERFACES zif_abapgit_html_form . INTERFACES zif_abapgit_gui_hotkeys . CLASS-METHODS create IMPORTING !iv_form_id TYPE csequence OPTIONAL !iv_help_page TYPE csequence OPTIONAL RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form . METHODS render IMPORTING !iv_form_class TYPE csequence DEFAULT 'dialog-form' !io_values TYPE REF TO zcl_abapgit_string_map !io_validation_log TYPE REF TO zcl_abapgit_string_map OPTIONAL RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS command IMPORTING !iv_label TYPE csequence !iv_action TYPE csequence !iv_cmd_type TYPE i DEFAULT zif_abapgit_html_form=>c_cmd_type-input RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_form . METHODS text IMPORTING !iv_label TYPE csequence !iv_name TYPE csequence !iv_hint TYPE csequence OPTIONAL !iv_required TYPE abap_bool DEFAULT abap_false !iv_upper_case TYPE abap_bool DEFAULT abap_false !iv_readonly TYPE abap_bool DEFAULT abap_false !iv_password TYPE abap_bool DEFAULT abap_false !iv_condense TYPE abap_bool OPTIONAL !iv_placeholder TYPE csequence OPTIONAL !iv_side_action TYPE csequence OPTIONAL !iv_min TYPE i DEFAULT cl_abap_math=>min_int4 !iv_max TYPE i DEFAULT cl_abap_math=>max_int4 RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_form . METHODS textarea IMPORTING !iv_label TYPE csequence !iv_name TYPE csequence !iv_hint TYPE csequence OPTIONAL !iv_required TYPE abap_bool DEFAULT abap_false !iv_readonly TYPE abap_bool DEFAULT abap_false !iv_placeholder TYPE csequence OPTIONAL !iv_rows TYPE i OPTIONAL !iv_cols TYPE i OPTIONAL !iv_upper_case TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_form . METHODS number IMPORTING !iv_label TYPE csequence !iv_name TYPE csequence !iv_hint TYPE csequence OPTIONAL !iv_required TYPE abap_bool DEFAULT abap_false !iv_readonly TYPE abap_bool DEFAULT abap_false !iv_min TYPE i DEFAULT cl_abap_math=>min_int4 !iv_max TYPE i DEFAULT cl_abap_math=>max_int4 RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_form . METHODS checkbox IMPORTING !iv_label TYPE csequence !iv_name TYPE csequence !iv_hint TYPE csequence OPTIONAL !iv_readonly TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_form . METHODS radio IMPORTING !iv_label TYPE csequence !iv_name TYPE csequence !iv_default_value TYPE csequence OPTIONAL !iv_hint TYPE csequence OPTIONAL !iv_condense TYPE abap_bool DEFAULT abap_false !iv_action TYPE csequence OPTIONAL RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_form . METHODS option IMPORTING !iv_label TYPE csequence !iv_value TYPE csequence RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_form . METHODS table IMPORTING !iv_label TYPE csequence !iv_name TYPE csequence !iv_hint TYPE csequence OPTIONAL RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_form . METHODS column IMPORTING !iv_label TYPE csequence !iv_width TYPE csequence OPTIONAL !iv_readonly TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_form . METHODS start_group IMPORTING !iv_label TYPE csequence !iv_name TYPE csequence !iv_hint TYPE csequence OPTIONAL RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_form . METHODS hidden IMPORTING !iv_name TYPE csequence RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_form . METHODS get_fields RETURNING VALUE(rt_fields) TYPE zif_abapgit_html_form=>ty_fields . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_attr, value TYPE string, error TYPE string, hint TYPE string, readonly TYPE string, placeholder TYPE string, required TYPE string, autofocus TYPE string, END OF ty_attr . DATA mv_webgui TYPE abap_bool. DATA mt_fields TYPE zif_abapgit_html_form=>ty_fields . DATA: mt_commands TYPE STANDARD TABLE OF zif_abapgit_html_form=>ty_command . DATA mv_form_id TYPE string . DATA mv_help_page TYPE string . METHODS render_field IMPORTING !ii_html TYPE REF TO zif_abapgit_html !io_values TYPE REF TO zcl_abapgit_string_map !io_validation_log TYPE REF TO zcl_abapgit_string_map !is_field TYPE zif_abapgit_html_form=>ty_field !iv_autofocus TYPE abap_bool . METHODS render_field_text IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_field TYPE zif_abapgit_html_form=>ty_field !is_attr TYPE ty_attr . METHODS render_field_textarea IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_field TYPE zif_abapgit_html_form=>ty_field !is_attr TYPE ty_attr . METHODS render_field_checkbox IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_field TYPE zif_abapgit_html_form=>ty_field !is_attr TYPE ty_attr . METHODS render_field_radio IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_field TYPE zif_abapgit_html_form=>ty_field !is_attr TYPE ty_attr . METHODS render_field_table IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_field TYPE zif_abapgit_html_form=>ty_field !is_attr TYPE ty_attr !io_values TYPE REF TO zcl_abapgit_string_map . METHODS render_command IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_cmd TYPE zif_abapgit_html_form=>ty_command . METHODS render_command_link IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_cmd TYPE zif_abapgit_html_form=>ty_command . METHODS render_field_hidden IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_field TYPE zif_abapgit_html_form=>ty_field !is_attr TYPE ty_attr . ENDCLASS. CLASS zcl_abapgit_html_form_utils DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS create IMPORTING !io_form TYPE REF TO zcl_abapgit_html_form RETURNING VALUE(ro_form_util) TYPE REF TO zcl_abapgit_html_form_utils . CLASS-METHODS is_dirty IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map !io_compare_with TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(rv_dirty) TYPE abap_bool . METHODS constructor IMPORTING !io_form TYPE REF TO zcl_abapgit_html_form . METHODS normalize IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_form_data) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . METHODS validate IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_validation_log) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . METHODS is_empty IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(rv_empty) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS set_data IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map . METHODS exit IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map !io_compare_with TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(rv_state) TYPE i RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. DATA mo_form TYPE REF TO zcl_abapgit_html_form . DATA mo_form_data TYPE REF TO zcl_abapgit_string_map . ENDCLASS. CLASS zcl_abapgit_html_table DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS create IMPORTING !ii_renderer TYPE REF TO zif_abapgit_html_table OPTIONAL " Can be passed to renderer !is_initial_sorting_state TYPE zif_abapgit_html_table=>ty_sorting_state OPTIONAL PREFERRED PARAMETER ii_renderer RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_html_table . " maybe also th css_class METHODS define_column IMPORTING !iv_column_id TYPE string !iv_column_title TYPE string OPTIONAL !iv_from_field TYPE abap_compname OPTIONAL !iv_sortable TYPE abap_bool DEFAULT abap_true RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_table . METHODS define_column_group IMPORTING !iv_group_id TYPE string OPTIONAL " not mandatory, but can be used for CSS (TODO data-gid) !iv_group_title TYPE string OPTIONAL " can be empty ! PREFERRED PARAMETER iv_group_title RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_table RAISING zcx_abapgit_exception . " Maybe also data_provider " TODO record Limiter METHODS render IMPORTING !ii_renderer TYPE REF TO zif_abapgit_html_table OPTIONAL !it_data TYPE ANY TABLE !iv_id TYPE csequence OPTIONAL !iv_css_class TYPE csequence OPTIONAL !iv_with_cids TYPE abap_bool DEFAULT abap_false !is_sorting_state TYPE zif_abapgit_html_table=>ty_sorting_state OPTIONAL !iv_wrap_in_div TYPE string OPTIONAL " div class name RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . " Sorting utils CLASS-METHODS detect_sorting_request IMPORTING iv_event TYPE string RETURNING VALUE(rs_sorting_request) TYPE zif_abapgit_html_table=>ty_sorting_state. METHODS process_sorting_request IMPORTING iv_event TYPE string RETURNING VALUE(rv_processed) TYPE abap_bool. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_sort_by_event_prefix TYPE string VALUE `sort_by:`. CONSTANTS c_sort_by_event_regex TYPE string VALUE `^sort_by:\w+:(asc|dsc)$`. TYPES: BEGIN OF ty_column, column_id TYPE string, column_title TYPE string, from_field TYPE abap_compname, sortable TYPE abap_bool, is_group TYPE abap_bool, group_span TYPE i, END OF ty_column, ty_columns TYPE STANDARD TABLE OF ty_column WITH KEY column_id. DATA mi_renderer TYPE REF TO zif_abapgit_html_table. DATA mt_columns TYPE ty_columns. DATA mi_html TYPE REF TO zif_abapgit_html. DATA mv_with_cids TYPE abap_bool. DATA mv_table_id TYPE string. DATA ms_sorting_state TYPE zif_abapgit_html_table=>ty_sorting_state. DATA mr_last_grp TYPE REF TO ty_column. " potentially receive from outside DATA mv_sort_span_class TYPE string VALUE `sort-arrow`. DATA mv_sort_active_class TYPE string VALUE `sort-active`. METHODS render_thead RAISING zcx_abapgit_exception . METHODS render_tbody IMPORTING it_data TYPE ANY TABLE RAISING zcx_abapgit_exception . METHODS render_row IMPORTING iv_row_index TYPE i is_row TYPE any RAISING zcx_abapgit_exception . METHODS render_column_title IMPORTING is_col TYPE ty_column RETURNING VALUE(rv_text) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS cid_attr IMPORTING iv_column_id TYPE string RETURNING VALUE(rs_data_attr) TYPE zif_abapgit_html=>ty_data_attr. CLASS-METHODS gid_attr IMPORTING iv_column_id TYPE string RETURNING VALUE(rs_data_attr) TYPE zif_abapgit_html=>ty_data_attr. METHODS apply_sorting CHANGING ct_data TYPE STANDARD TABLE. ENDCLASS. CLASS zcl_abapgit_html_toolbar DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS create IMPORTING !iv_id TYPE string OPTIONAL RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_html_toolbar. METHODS constructor IMPORTING !iv_id TYPE string OPTIONAL . METHODS add IMPORTING !iv_txt TYPE string !io_sub TYPE REF TO zcl_abapgit_html_toolbar OPTIONAL !iv_typ TYPE c DEFAULT zif_abapgit_html=>c_action_type-sapevent !iv_act TYPE string OPTIONAL !iv_ico TYPE string OPTIONAL !iv_cur TYPE abap_bool OPTIONAL !iv_opt TYPE c OPTIONAL !iv_chk TYPE abap_bool DEFAULT abap_undefined !iv_aux TYPE string OPTIONAL !iv_id TYPE string OPTIONAL !iv_title TYPE string OPTIONAL !iv_class TYPE string OPTIONAL !iv_hotkey TYPE string OPTIONAL !iv_li_class TYPE string OPTIONAL RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_toolbar . METHODS count_items RETURNING VALUE(rv_count) TYPE i . METHODS render IMPORTING !iv_right TYPE abap_bool OPTIONAL !iv_sort TYPE abap_bool OPTIONAL RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS render_as_droplist IMPORTING !iv_label TYPE string !iv_right TYPE abap_bool OPTIONAL !iv_sort TYPE abap_bool OPTIONAL !iv_corner TYPE abap_bool OPTIONAL !iv_action TYPE string OPTIONAL RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS get_hotkeys IMPORTING iv_component_name TYPE string OPTIONAL RETURNING VALUE(rt_hotkeys) TYPE zif_abapgit_gui_hotkeys=>ty_hotkeys_with_descr. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_item, txt TYPE string, act TYPE string, ico TYPE string, sub TYPE REF TO zcl_abapgit_html_toolbar, opt TYPE c LENGTH 1, typ TYPE c LENGTH 1, cur TYPE abap_bool, chk TYPE abap_bool, aux TYPE string, id TYPE string, title TYPE string, class TYPE string, li_class TYPE string, hotkey TYPE string, END OF ty_item . TYPES: ty_items TYPE STANDARD TABLE OF ty_item . DATA mt_items TYPE ty_items . DATA mv_id TYPE string . METHODS render_items IMPORTING !iv_sort TYPE abap_bool OPTIONAL RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . ENDCLASS. CLASS zcl_abapgit_log_viewer DEFINITION FINAL CREATE PRIVATE . PUBLIC SECTION. CLASS-METHODS show_log IMPORTING !ii_log TYPE REF TO zif_abapgit_log . CLASS-METHODS to_html IMPORTING !ii_log TYPE REF TO zif_abapgit_log RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . CLASS-METHODS write_log IMPORTING !ii_log TYPE REF TO zif_abapgit_log . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_log_out, type TYPE icon_d, msg TYPE string, obj_type TYPE trobjtype, obj_name TYPE sobj_name, exception TYPE REF TO cx_root, longtext TYPE icon_d, t100 TYPE icon_d, source TYPE icon_d, callstack TYPE icon_d, cell_type TYPE salv_t_int4_column, END OF ty_log_out. TYPES: ty_log_outs TYPE STANDARD TABLE OF ty_log_out WITH NON-UNIQUE DEFAULT KEY. CLASS-METHODS: prepare_log_for_display IMPORTING ii_log TYPE REF TO zif_abapgit_log RETURNING VALUE(rt_log_out) TYPE ty_log_outs, show_longtext IMPORTING is_log TYPE ty_log_out RAISING zcx_abapgit_exception, goto_source IMPORTING is_log TYPE ty_log_out RAISING zcx_abapgit_exception, goto_callstack IMPORTING is_log TYPE ty_log_out RAISING zcx_abapgit_exception, goto_t100_message IMPORTING is_log TYPE ty_log_out RAISING zcx_abapgit_exception, on_link_click FOR EVENT link_click OF cl_salv_events_table IMPORTING row column, dispatch IMPORTING is_log TYPE ty_log_out iv_column TYPE salv_de_column RAISING zcx_abapgit_exception, calculate_cell_type, get_exception_viewer IMPORTING is_log TYPE ty_log_out RETURNING VALUE(ro_exception_viewer) TYPE REF TO zcl_abapgit_exception_viewer. CLASS-DATA: gt_log TYPE ty_log_outs. ENDCLASS. CLASS zcl_abapgit_gui_page_codi_base DEFINITION INHERITING FROM zcl_abapgit_gui_component. PUBLIC SECTION. INTERFACES zif_abapgit_html_table. PROTECTED SECTION. CONSTANTS: BEGIN OF c_actions, rerun TYPE string VALUE 'rerun', stage TYPE string VALUE 'stage', commit TYPE string VALUE 'commit', filter_kind TYPE string VALUE 'filter_kind', apply_filter TYPE string VALUE 'apply_filter', END OF c_actions . DATA mo_repo TYPE REF TO zcl_abapgit_repo. DATA mt_result TYPE zif_abapgit_code_inspector=>ty_results. DATA mv_summary TYPE string. METHODS on_event IMPORTING ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result RAISING zcx_abapgit_exception. METHODS render_ci_report IMPORTING !ii_html TYPE REF TO zif_abapgit_html !iv_variant TYPE sci_chkv !iv_success_msg TYPE string RAISING zcx_abapgit_exception. METHODS render_head IMPORTING !ii_html TYPE REF TO zif_abapgit_html !iv_variant TYPE sci_chkv !iv_summary TYPE string. METHODS render_detail IMPORTING !ii_html TYPE REF TO zif_abapgit_html !it_result TYPE zif_abapgit_code_inspector=>ty_results RAISING zcx_abapgit_exception. METHODS render_stats IMPORTING !ii_html TYPE REF TO zif_abapgit_html !it_result TYPE zif_abapgit_code_inspector=>ty_results RAISING zcx_abapgit_exception. METHODS render_success IMPORTING ii_html TYPE REF TO zif_abapgit_html iv_message TYPE string. METHODS build_base_menu RETURNING VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar. PRIVATE SECTION. CONSTANTS c_object_separator TYPE c LENGTH 1 VALUE '|'. CONSTANTS c_ci_sig TYPE string VALUE 'cinav:'. CONSTANTS c_limit TYPE i VALUE 500. DATA mv_filter_kind TYPE string. DATA ms_sorting_state TYPE zif_abapgit_html_table=>ty_sorting_state. TYPES: BEGIN OF ty_result_view, kind TYPE zif_abapgit_code_inspector=>ty_result-kind, obj_type TYPE zif_abapgit_code_inspector=>ty_result-objtype, location TYPE string, text TYPE string, nav TYPE string, END OF ty_result_view, ty_view_tab TYPE STANDARD TABLE OF ty_result_view WITH DEFAULT KEY. METHODS convert_result_to_view IMPORTING it_result TYPE zif_abapgit_code_inspector=>ty_results RETURNING VALUE(rt_view) TYPE ty_view_tab. METHODS explain_include IMPORTING !is_result TYPE zif_abapgit_code_inspector=>ty_result RETURNING VALUE(rv_txt) TYPE string. METHODS render_limit_warning IMPORTING !ii_html TYPE REF TO zif_abapgit_html. METHODS build_nav_link IMPORTING !is_result TYPE zif_abapgit_code_inspector=>ty_result RETURNING VALUE(rv_link) TYPE string. METHODS jump IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !is_sub_item TYPE zif_abapgit_definitions=>ty_item !iv_line_number TYPE i RAISING zcx_abapgit_exception. METHODS apply_sorting CHANGING ct_view TYPE ty_view_tab. METHODS apply_filter_kind CHANGING ct_view TYPE ty_view_tab. METHODS handle_navigation IMPORTING iv_link TYPE string RAISING zcx_abapgit_exception. METHODS render_stat IMPORTING !ii_html TYPE REF TO zif_abapgit_html !iv_count TYPE i !iv_type TYPE string !iv_title TYPE string RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_code_insp DEFINITION INHERITING FROM zcl_abapgit_gui_page_codi_base FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES: zif_abapgit_gui_page_title, zif_abapgit_gui_event_handler, zif_abapgit_gui_hotkeys, zif_abapgit_gui_menu_provider, zif_abapgit_gui_renderable. CLASS-METHODS create IMPORTING io_repo TYPE REF TO zcl_abapgit_repo io_stage TYPE REF TO zcl_abapgit_stage OPTIONAL iv_check_variant TYPE sci_chkv OPTIONAL iv_raise_when_no_results TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING io_repo TYPE REF TO zcl_abapgit_repo io_stage TYPE REF TO zcl_abapgit_stage OPTIONAL iv_check_variant TYPE sci_chkv OPTIONAL iv_raise_when_no_results TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mo_stage TYPE REF TO zcl_abapgit_stage. DATA mv_check_variant TYPE sci_chkv. METHODS: run_code_inspector RAISING zcx_abapgit_exception, has_inspection_errors RETURNING VALUE(rv_has_inspection_errors) TYPE abap_bool, is_stage_allowed RETURNING VALUE(rv_is_stage_allowed) TYPE abap_bool, ask_user_for_check_variant RETURNING VALUE(rv_check_variant) TYPE sci_chkv RAISING zcx_abapgit_exception, determine_check_variant RAISING zcx_abapgit_exception. METHODS status RETURNING VALUE(rv_status) TYPE zif_abapgit_definitions=>ty_sci_result. ENDCLASS. CLASS zcl_abapgit_gui_page_runit DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. INTERFACES zif_abapgit_gui_menu_provider. CLASS-METHODS create IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_actions, rerun TYPE string VALUE 'rerun' ##NO_TEXT, END OF c_actions . TYPES: BEGIN OF ty_key, obj_name TYPE tadir-obj_name, obj_type TYPE tadir-object, END OF ty_key, ty_keys_tt TYPE STANDARD TABLE OF ty_key WITH DEFAULT KEY. DATA mo_repo TYPE REF TO zcl_abapgit_repo. DATA mv_summary TYPE string. METHODS build_tadir RETURNING VALUE(rt_tadir) TYPE ty_keys_tt RAISING zcx_abapgit_exception. METHODS run RETURNING VALUE(ro_result) TYPE REF TO object RAISING zcx_abapgit_exception. METHODS get_text_for_method IMPORTING !is_method TYPE any !it_indices TYPE ANY TABLE !iv_program_ndx TYPE sy-tabix !iv_class_ndx TYPE sy-tabix !iv_method_ndx TYPE sy-tabix RETURNING VALUE(rv_text) TYPE string. ENDCLASS. CLASS zcl_abapgit_gui_page_syntax DEFINITION INHERITING FROM zcl_abapgit_gui_page_codi_base FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES: zif_abapgit_gui_page_title, zif_abapgit_gui_event_handler, zif_abapgit_gui_hotkeys, zif_abapgit_gui_menu_provider, zif_abapgit_gui_renderable. CLASS-METHODS create IMPORTING io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING io_repo TYPE REF TO zcl_abapgit_repo RAISING zcx_abapgit_exception. PROTECTED SECTION. CONSTANTS c_variant TYPE c LENGTH 30 VALUE 'SYNTAX_CHECK'. PRIVATE SECTION. METHODS run_syntax_check RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_whereused DEFINITION FINAL INHERITING FROM zcl_abapgit_gui_component CREATE PUBLIC . PUBLIC SECTION. INTERFACES: zif_abapgit_gui_page_title, zif_abapgit_gui_event_handler, zif_abapgit_gui_hotkeys, zif_abapgit_gui_menu_provider, zif_abapgit_gui_renderable, zif_abapgit_html_table. CLASS-METHODS create IMPORTING iv_package TYPE devclass OPTIONAL ii_repo TYPE REF TO zif_abapgit_repo OPTIONAL PREFERRED PARAMETER iv_package RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING iv_package TYPE devclass OPTIONAL ii_repo TYPE REF TO zif_abapgit_repo OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_action, refresh TYPE string VALUE 'refresh', show_used_obj TYPE string VALUE 'show_used_obj', END OF c_action. CONSTANTS c_title TYPE string VALUE 'Where Used'. DATA mv_package TYPE devclass. DATA mv_ignore_subpackages TYPE abap_bool. DATA mi_table TYPE REF TO zcl_abapgit_html_table. DATA mv_show_used_obj TYPE abap_bool. DATA mt_where_used TYPE zcl_abapgit_where_used_tools=>ty_dependency_tt. METHODS init_table_component RAISING zcx_abapgit_exception. METHODS render_filter_help_hint RETURNING VALUE(rv_html) TYPE string. METHODS render_header IMPORTING ii_html TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. METHODS run_where_used RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_db DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. INTERFACES zif_abapgit_gui_menu_provider. INTERFACES zif_abapgit_html_table. CLASS-METHODS create RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_action, delete TYPE string VALUE 'delete', backup TYPE string VALUE 'backup', restore TYPE string VALUE 'restore', END OF c_action. CONSTANTS c_css_url TYPE string VALUE 'css/page_db.css'. CONSTANTS c_toc_filename TYPE string VALUE '#_Table_of_Content_#.txt'. TYPES: BEGIN OF ty_explanation, value TYPE string, extra TYPE string, END OF ty_explanation. DATA mt_methods TYPE zcl_abapgit_background=>ty_methods. METHODS register_stylesheet RAISING zcx_abapgit_exception. METHODS render_stats IMPORTING it_db_entries TYPE zif_abapgit_persistence=>ty_contents RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. METHODS render_table IMPORTING it_db_entries TYPE zif_abapgit_persistence=>ty_contents RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. METHODS do_backup_db RAISING zcx_abapgit_exception. CLASS-METHODS do_delete_entry IMPORTING !is_key TYPE zif_abapgit_persistence=>ty_content RAISING zcx_abapgit_exception. CLASS-METHODS do_restore_db RAISING zcx_abapgit_exception. METHODS explain_content IMPORTING !is_data TYPE zif_abapgit_persistence=>ty_content RETURNING VALUE(rv_text) TYPE string RAISING zcx_abapgit_exception. METHODS explain_content_repo IMPORTING !is_data TYPE zif_abapgit_persistence=>ty_content RETURNING VALUE(rs_expl) TYPE ty_explanation RAISING zcx_abapgit_exception. METHODS explain_content_repo_cs IMPORTING !is_data TYPE zif_abapgit_persistence=>ty_content RETURNING VALUE(rs_expl) TYPE ty_explanation RAISING zcx_abapgit_exception. METHODS explain_content_background IMPORTING !is_data TYPE zif_abapgit_persistence=>ty_content RETURNING VALUE(rs_expl) TYPE ty_explanation RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_db_entry DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler . INTERFACES zif_abapgit_gui_renderable . INTERFACES zif_abapgit_gui_page_title . CLASS-METHODS create IMPORTING !is_key TYPE zif_abapgit_persistence=>ty_content !iv_edit_mode TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !is_key TYPE zif_abapgit_persistence=>ty_content !iv_edit_mode TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_action, update TYPE string VALUE 'update', switch_mode TYPE string VALUE 'switch_mode', END OF c_action . CONSTANTS c_edit_form_id TYPE string VALUE `db_form`. CONSTANTS c_css_url TYPE string VALUE 'css/page_db_entry.css'. DATA ms_key TYPE zif_abapgit_persistence=>ty_content. DATA mv_edit_mode TYPE abap_bool. METHODS register_stylesheet RAISING zcx_abapgit_exception. METHODS render_view IMPORTING iv_raw_db_value TYPE zif_abapgit_persistence=>ty_content-data_str ii_html TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. METHODS render_edit IMPORTING iv_raw_db_value TYPE zif_abapgit_persistence=>ty_content-data_str ii_html TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. METHODS render_header IMPORTING ii_html TYPE REF TO zif_abapgit_html io_toolbar TYPE REF TO zcl_abapgit_html_toolbar. METHODS build_toolbar RETURNING VALUE(ro_toolbar) TYPE REF TO zcl_abapgit_html_toolbar. CLASS-METHODS render_entry_tag IMPORTING is_key TYPE zif_abapgit_persistence=>ty_content RETURNING VALUE(rv_html) TYPE string. CLASS-METHODS dbcontent_decode IMPORTING io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(rs_content) TYPE zif_abapgit_persistence=>ty_content RAISING zcx_abapgit_exception . CLASS-METHODS do_update IMPORTING is_content TYPE zif_abapgit_persistence=>ty_content RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_gui_page_addofflin DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. CLASS-METHODS create RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_id, name TYPE string VALUE 'name', package TYPE string VALUE 'package', folder_logic TYPE string VALUE 'folder_logic', labels TYPE string VALUE 'labels', ignore_subpackages TYPE string VALUE 'ignore_subpackages', main_lang_only TYPE string VALUE 'main_lang_only', abap_lang_vers TYPE string VALUE 'abap_lang_vers', END OF c_id . CONSTANTS: BEGIN OF c_event, choose_package TYPE string VALUE 'choose-package', choose_labels TYPE string VALUE 'choose-labels', create_package TYPE string VALUE 'create-package', add_offline_repo TYPE string VALUE 'add-repo-offline', END OF c_event . DATA mo_form TYPE REF TO zcl_abapgit_html_form . DATA mo_form_data TYPE REF TO zcl_abapgit_string_map . DATA mo_form_util TYPE REF TO zcl_abapgit_html_form_utils. DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map . METHODS validate_form IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_validation_log) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form . METHODS choose_labels RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_addonline DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. CLASS-METHODS create RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_id, url TYPE string VALUE 'url', package TYPE string VALUE 'package', branch_name TYPE string VALUE 'branch_name', display_name TYPE string VALUE 'display_name', labels TYPE string VALUE 'labels', folder_logic TYPE string VALUE 'folder_logic', ignore_subpackages TYPE string VALUE 'ignore_subpackages', main_lang_only TYPE string VALUE 'main_lang_only', abap_lang_vers TYPE string VALUE 'abap_lang_vers', END OF c_id. CONSTANTS: BEGIN OF c_event, choose_package TYPE string VALUE 'choose-package', create_package TYPE string VALUE 'create-package', choose_branch TYPE string VALUE 'choose-branch', choose_labels TYPE string VALUE 'choose-labels', add_online_repo TYPE string VALUE 'add-repo-online', END OF c_event. DATA mo_form TYPE REF TO zcl_abapgit_html_form . DATA mo_form_data TYPE REF TO zcl_abapgit_string_map . DATA mo_form_util TYPE REF TO zcl_abapgit_html_form_utils. DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map . METHODS validate_form IMPORTING io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_validation_log) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form. METHODS choose_labels RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_sett_bckg DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler . INTERFACES zif_abapgit_gui_renderable . CLASS-METHODS create IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_id, mode_selection TYPE string VALUE 'mode_selection', method TYPE string VALUE 'method', authentication TYPE string VALUE 'authentication', username TYPE string VALUE 'username', password TYPE string VALUE 'password', mode_settings TYPE string VALUE 'mode_settings', settings TYPE string VALUE 'settings', END OF c_id . CONSTANTS: BEGIN OF c_event, run_now TYPE string VALUE 'run_now', save TYPE string VALUE 'save', END OF c_event . DATA mo_form TYPE REF TO zcl_abapgit_html_form . DATA mo_form_data TYPE REF TO zcl_abapgit_string_map . DATA mo_repo TYPE REF TO zcl_abapgit_repo . DATA mv_settings_count TYPE i . METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form RAISING zcx_abapgit_exception . METHODS read_settings RETURNING VALUE(ro_form_data) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . METHODS read_persist RETURNING VALUE(rs_persist) TYPE zcl_abapgit_persist_background=>ty_background RAISING zcx_abapgit_exception . METHODS save_settings RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_gui_page_sett_glob DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. CLASS-METHODS create RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_id, proxy_settings TYPE string VALUE 'proxy_settings', proxy_url TYPE string VALUE 'proxy_url', proxy_port TYPE string VALUE 'proxy_port', proxy_auth TYPE string VALUE 'proxy_auth', proxy_bypass TYPE string VALUE 'proxy_bypass', commit_settings TYPE string VALUE 'commit_settings', commitmsg_comment_length TYPE string VALUE 'commitmsg_comment_length', commitmsg_comment_deflt TYPE string VALUE 'commitmsg_comment_deflt', commitmsg_body_size TYPE string VALUE 'commitmsg_body_size', commitmsg_hide_author TYPE string VALUE 'commitmsg_hide_author', devint_settings TYPE string VALUE 'devint_settings', run_critical_tests TYPE string VALUE 'run_critical_tests', experimental_features TYPE string VALUE 'experimental_features', activate_wo_popup TYPE string VALUE 'activate_wo_popup', END OF c_id. CONSTANTS: BEGIN OF c_event, proxy_bypass TYPE string VALUE 'proxy_bypass', save TYPE string VALUE 'save', END OF c_event. DATA mo_form TYPE REF TO zcl_abapgit_html_form. DATA mo_form_data TYPE REF TO zcl_abapgit_string_map. DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map. DATA mo_settings TYPE REF TO zcl_abapgit_settings. METHODS validate_form IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_validation_log) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form. METHODS read_settings RETURNING VALUE(ro_form_data) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. METHODS save_settings RAISING zcx_abapgit_exception. CLASS-METHODS read_proxy_bypass IMPORTING io_form_data TYPE REF TO zcl_abapgit_string_map io_settings TYPE REF TO zcl_abapgit_settings RAISING zcx_abapgit_exception. METHODS save_proxy_bypass RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_sett_info DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler . INTERFACES zif_abapgit_gui_renderable . CLASS-METHODS create IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_stats, measure TYPE string, local TYPE i, remote TYPE i, END OF ty_stats . TYPES: BEGIN OF ty_infos, size TYPE p LENGTH 16 DECIMALS 0, line TYPE p LENGTH 16 DECIMALS 0, sloc TYPE p LENGTH 16 DECIMALS 0, END OF ty_infos . CONSTANTS: BEGIN OF c_id, info TYPE string VALUE 'info', created_by TYPE string VALUE 'created_by', created_at TYPE string VALUE 'created_at', deserialized_by TYPE string VALUE 'deserialized_by', deserialized_at TYPE string VALUE 'deserialized_at', stats TYPE string VALUE 'stats', stats_table TYPE string VALUE 'stats_table', END OF c_id . DATA mo_form TYPE REF TO zcl_abapgit_html_form . DATA mo_form_data TYPE REF TO zcl_abapgit_string_map . DATA mo_repo TYPE REF TO zcl_abapgit_repo . DATA: mt_stats TYPE STANDARD TABLE OF ty_stats WITH KEY measure . METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form RAISING zcx_abapgit_exception . METHODS read_settings RAISING zcx_abapgit_exception . METHODS read_stats RAISING zcx_abapgit_exception . METHODS read_stats_files EXPORTING !et_local TYPE zif_abapgit_definitions=>ty_files_item_tt !et_remote TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception . METHODS read_stats_state RAISING zcx_abapgit_exception . METHODS read_stats_size_lines_sloc IMPORTING !it_local TYPE zif_abapgit_definitions=>ty_files_item_tt !it_remote TYPE zif_abapgit_git_definitions=>ty_files_tt EXPORTING !et_local_items TYPE zif_abapgit_definitions=>ty_items_tt !et_remote_items TYPE zif_abapgit_definitions=>ty_items_tt RAISING zcx_abapgit_exception . METHODS read_stats_file IMPORTING !is_file TYPE zif_abapgit_git_definitions=>ty_file RETURNING VALUE(rs_info) TYPE ty_infos . METHODS read_stats_objects CHANGING !ct_local_items TYPE zif_abapgit_definitions=>ty_items_tt !ct_remote_items TYPE zif_abapgit_definitions=>ty_items_tt RAISING zcx_abapgit_exception . METHODS format_user IMPORTING !iv_username TYPE syuname RETURNING VALUE(rv_user) TYPE string . METHODS format_timestamp IMPORTING !iv_timestamp TYPE timestampl RETURNING VALUE(rv_timestamp) TYPE string . METHODS format_size IMPORTING !iv_size TYPE i RETURNING VALUE(rv_size) TYPE string . ENDCLASS. CLASS zcl_abapgit_gui_page_sett_locl DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler . INTERFACES zif_abapgit_gui_renderable . CLASS-METHODS create IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. DATA mo_popup_picklist TYPE REF TO zcl_abapgit_gui_picklist. CONSTANTS: BEGIN OF c_id, local TYPE string VALUE 'local', display_name TYPE string VALUE 'display_name', transport_request TYPE string VALUE 'transport_request', customizing_request TYPE string VALUE 'customizing_request', labels TYPE string VALUE 'labels', ignore_subpackages TYPE string VALUE 'ignore_subpackages', write_protected TYPE string VALUE 'write_protected', only_local_objects TYPE string VALUE 'only_local_objects', main_language_only TYPE string VALUE 'main_language_only', checks TYPE string VALUE 'checks', code_inspector_check_variant TYPE string VALUE 'code_inspector_check_variant', block_commit TYPE string VALUE 'block_commit', flow TYPE string VALUE 'flow', exclude_remote_paths TYPE string VALUE 'exclude_remote_paths', END OF c_id . CONSTANTS: BEGIN OF c_event, save TYPE string VALUE 'save', choose_transport_request TYPE string VALUE 'choose_transport_request', choose_customizing_request TYPE string VALUE 'choose_customizing_request', choose_labels TYPE string VALUE 'choose-labels', choose_check_variant TYPE string VALUE 'choose_check_variant', END OF c_event . DATA mo_form TYPE REF TO zcl_abapgit_html_form . DATA mo_form_data TYPE REF TO zcl_abapgit_string_map . DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map . DATA mo_repo TYPE REF TO zcl_abapgit_repo . DATA ms_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings . METHODS validate_form IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_validation_log) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form RAISING zcx_abapgit_exception . METHODS read_settings RETURNING VALUE(ro_form_data) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . METHODS save_settings RAISING zcx_abapgit_exception . METHODS choose_labels RAISING zcx_abapgit_exception . METHODS choose_check_variant IMPORTING iv_is_return TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception . METHODS choose_transport_request RAISING zcx_abapgit_exception . METHODS choose_customizing_request RAISING zcx_abapgit_exception . METHODS is_customizing_included RETURNING VALUE(rv_result) TYPE abap_bool RAISING zcx_abapgit_exception . METHODS handle_picklist_state RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_gui_page_sett_pers DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. CLASS-METHODS create RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_id, startup TYPE string VALUE 'startup', show_default_repo TYPE string VALUE 'show_default_repo', ui TYPE string VALUE 'ui', ui_theme TYPE string VALUE 'ui_theme', icon_scaling TYPE string VALUE 'icon_scaling', max_lines TYPE string VALUE 'max_lines', interaction TYPE string VALUE 'interaction', adt_jump_enabled TYPE string VALUE 'adt_jump_enabled', link_hints_enabled TYPE string VALUE 'link_hints_enabled', link_hint_key TYPE string VALUE 'link_hint_key', hotkeys TYPE string VALUE 'hotkeys', resources TYPE string VALUE 'resources', parallel_proc_disabled TYPE string VALUE 'parallel_proc_disabled', hide_sapgui_hint TYPE string VALUE 'hide_sapgui_hint', activate_wo_popup TYPE string VALUE 'activate_wo_popup', label_colors TYPE string VALUE 'label_colors', git_default_values TYPE string VALUE 'git_default_values', default_git_uname TYPE string VALUE 'default_git_uname', default_git_email TYPE string VALUE 'default_git_email', END OF c_id. CONSTANTS: BEGIN OF c_event, save TYPE string VALUE 'save', END OF c_event. DATA mo_form TYPE REF TO zcl_abapgit_html_form. DATA mo_form_data TYPE REF TO zcl_abapgit_string_map. DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map. DATA mo_settings TYPE REF TO zcl_abapgit_settings. DATA ms_settings TYPE zif_abapgit_definitions=>ty_s_user_settings. METHODS validate_form IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_validation_log) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form. METHODS read_settings RETURNING VALUE(ro_form_data) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. METHODS save_settings RAISING zcx_abapgit_exception. METHODS render_repo_labels_help_hint RETURNING VALUE(rv_html) TYPE string. ENDCLASS. CLASS zcl_abapgit_gui_page_sett_remo DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler . INTERFACES zif_abapgit_gui_renderable . INTERFACES zif_abapgit_gui_hotkeys. CLASS-METHODS create IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_head_type TYPE c LENGTH 1, BEGIN OF ty_remote_settings, offline TYPE zif_abapgit_persistence=>ty_repo-offline, url TYPE zif_abapgit_persistence=>ty_repo-url, branch TYPE zif_abapgit_git_definitions=>ty_git_branch-name, tag TYPE zif_abapgit_git_definitions=>ty_git_tag-name, commit TYPE zif_abapgit_git_definitions=>ty_commit-sha1, pull_request TYPE string, head_type TYPE ty_head_type, switched_origin TYPE zif_abapgit_persistence=>ty_repo-switched_origin, END OF ty_remote_settings. CONSTANTS: BEGIN OF c_repo_type, online TYPE string VALUE 'Online Repository', offline TYPE string VALUE 'Offline Repository', END OF c_repo_type. CONSTANTS: BEGIN OF c_head_types, branch TYPE ty_head_type VALUE 'B', tag TYPE ty_head_type VALUE 'T', commit TYPE ty_head_type VALUE 'C', pull_request TYPE ty_head_type VALUE 'P', END OF c_head_types. CONSTANTS: BEGIN OF c_id, general TYPE string VALUE 'general', repo_type TYPE string VALUE 'repo_type', offline TYPE string VALUE 'offline', url TYPE string VALUE 'url', head_group TYPE string VALUE 'head_group', branch TYPE string VALUE 'branch', tag TYPE string VALUE 'tag', commit TYPE string VALUE 'commit', pull_request TYPE string VALUE 'pull_request', head_type TYPE string VALUE 'head_type', END OF c_id. CONSTANTS: BEGIN OF c_event, save TYPE string VALUE 'save', switch TYPE string VALUE 'switch', choose_url TYPE string VALUE 'choose_url', choose_branch TYPE string VALUE 'choose_branch', choose_tag TYPE string VALUE 'choose_tag', choose_commit TYPE string VALUE 'choose_commit', choose_pull_request TYPE string VALUE 'choose_pull_request', change_head_type TYPE string VALUE 'change_head_type', END OF c_event . DATA mo_repo TYPE REF TO zcl_abapgit_repo . DATA ms_settings_snapshot TYPE ty_remote_settings. DATA mo_form TYPE REF TO zcl_abapgit_html_form . DATA mo_form_data TYPE REF TO zcl_abapgit_string_map . DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map . DATA mv_refresh_on_back TYPE abap_bool. DATA mv_offline_switch_saved_url TYPE string. DATA mo_popup_picklist TYPE REF TO zcl_abapgit_gui_picklist. METHODS get_remote_settings_from_repo IMPORTING io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(rs_settings) TYPE ty_remote_settings RAISING zcx_abapgit_exception. METHODS get_remote_settings_from_form IMPORTING io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(rs_settings) TYPE ty_remote_settings RAISING zcx_abapgit_exception. METHODS get_form_schema IMPORTING io_existing_form_data TYPE REF TO zcl_abapgit_string_map OPTIONAL RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form RAISING zcx_abapgit_exception. METHODS initialize_form_data RETURNING VALUE(ro_form_data) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. METHODS prepare_for_compare IMPORTING io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_form_data) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. METHODS check_protection RAISING zcx_abapgit_exception. METHODS validate_form IMPORTING io_form_data TYPE REF TO zcl_abapgit_string_map iv_connection_check TYPE abap_bool DEFAULT abap_true RETURNING VALUE(ro_validation_log) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. METHODS save_settings RAISING zcx_abapgit_exception. METHODS choose_url RETURNING VALUE(rv_url) TYPE string RAISING zcx_abapgit_exception. METHODS choose_branch IMPORTING iv_is_return TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception. METHODS choose_tag IMPORTING iv_is_return TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception. METHODS choose_pr IMPORTING iv_is_return TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception. METHODS choose_commit RETURNING VALUE(rv_commit) TYPE ty_remote_settings-commit RAISING zcx_abapgit_exception. METHODS switch_online_offline RAISING zcx_abapgit_exception. METHODS switch_to_branch_tag IMPORTING !iv_name TYPE string OPTIONAL RAISING zcx_abapgit_exception. METHODS switch_to_commit IMPORTING !iv_revert TYPE abap_bool DEFAULT abap_false !iv_commit TYPE ty_remote_settings-commit OPTIONAL RAISING zcx_abapgit_exception. METHODS switch_to_pull_req IMPORTING !iv_revert TYPE abap_bool DEFAULT abap_false !iv_pull TYPE string OPTIONAL RAISING zcx_abapgit_exception. METHODS handle_picklist_state RAISING zcx_abapgit_exception. METHODS render_content RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_sett_repo DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler . INTERFACES zif_abapgit_gui_renderable . CLASS-METHODS create IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . METHODS constructor IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_id, dot TYPE string VALUE 'dot', file_system TYPE string VALUE 'file_system', abap_system TYPE string VALUE 'abap_system', name TYPE string VALUE 'name', i18n TYPE string VALUE 'i18n', main_language TYPE string VALUE 'main_language', i18n_langs TYPE string VALUE 'i18n_langs', use_lxe TYPE string VALUE 'use_lxe', starting_folder TYPE string VALUE 'starting_folder', folder_logic TYPE string VALUE 'folder_logic', ignore TYPE string VALUE 'ignore', requirements TYPE string VALUE 'requirements', version_constant TYPE string VALUE 'version_constant', version_value TYPE string VALUE 'version_value', abap_langu_vers TYPE string VALUE 'abap_langu_vers', original_system TYPE string VALUE 'original_system', END OF c_id. CONSTANTS: BEGIN OF c_event, save TYPE string VALUE 'save', END OF c_event . CONSTANTS c_empty_rows TYPE i VALUE 2 ##NO_TEXT. DATA mo_form TYPE REF TO zcl_abapgit_html_form . DATA mo_form_data TYPE REF TO zcl_abapgit_string_map . DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map . DATA mo_repo TYPE REF TO zcl_abapgit_repo . DATA mv_requirements_count TYPE i . METHODS validate_form IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_validation_log) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . METHODS validate_version_constant IMPORTING !iv_version_constant TYPE string RAISING zcx_abapgit_exception . METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form RAISING zcx_abapgit_exception . METHODS read_settings RETURNING VALUE(ro_form_data) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . METHODS save_settings RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_gui_page_commit DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. CLASS-METHODS create IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online !io_stage TYPE REF TO zcl_abapgit_stage !iv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result DEFAULT zif_abapgit_definitions=>c_sci_result-no_run RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online !io_stage TYPE REF TO zcl_abapgit_stage !iv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_id, committer TYPE string VALUE 'committer', committer_name TYPE string VALUE 'committer_name', committer_email TYPE string VALUE 'committer_email', message TYPE string VALUE 'message', comment TYPE string VALUE 'comment', body TYPE string VALUE 'body', author TYPE string VALUE 'author', author_name TYPE string VALUE 'author_name', author_email TYPE string VALUE 'author_email', new_branch_name TYPE string VALUE 'new_branch_name', END OF c_id. CONSTANTS: BEGIN OF c_event, commit TYPE string VALUE 'commit', END OF c_event. DATA mo_form TYPE REF TO zcl_abapgit_html_form. DATA mo_form_data TYPE REF TO zcl_abapgit_string_map. DATA mo_form_util TYPE REF TO zcl_abapgit_html_form_utils. DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map. DATA mo_settings TYPE REF TO zcl_abapgit_settings. DATA mo_repo TYPE REF TO zcl_abapgit_repo_online. DATA mo_stage TYPE REF TO zcl_abapgit_stage. DATA mt_stage TYPE zif_abapgit_definitions=>ty_stage_tt. DATA ms_commit TYPE zif_abapgit_services_git=>ty_commit_fields. DATA mv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result. METHODS render_stage_summary RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. METHODS render_stage_details RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. METHODS validate_form IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_validation_log) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form. METHODS get_defaults RAISING zcx_abapgit_exception. METHODS get_committer_name RETURNING VALUE(rv_user) TYPE string RAISING zcx_abapgit_exception. METHODS get_committer_email RETURNING VALUE(rv_email) TYPE string RAISING zcx_abapgit_exception. METHODS get_comment_default RETURNING VALUE(rv_text) TYPE string. METHODS get_comment_object IMPORTING !it_stage TYPE zif_abapgit_definitions=>ty_stage_tt RETURNING VALUE(rv_text) TYPE string. METHODS get_comment_file IMPORTING !it_stage TYPE zif_abapgit_definitions=>ty_stage_tt RETURNING VALUE(rv_text) TYPE string. METHODS branch_name_to_internal IMPORTING iv_branch_name TYPE string RETURNING VALUE(rv_new_branch_name) TYPE string. ENDCLASS. CLASS zcl_abapgit_gui_page_data DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES: zif_abapgit_gui_event_handler, zif_abapgit_gui_menu_provider, zif_abapgit_gui_renderable. CLASS-METHODS create IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception. PROTECTED SECTION. CONSTANTS: BEGIN OF c_event, add TYPE string VALUE 'add', update TYPE string VALUE 'update', remove TYPE string VALUE 'remove', add_via_transport TYPE string VALUE 'add_via_transport', END OF c_event. CONSTANTS: BEGIN OF c_id, table TYPE string VALUE 'table', where TYPE string VALUE 'where', skip_initial TYPE string VALUE 'skip_initial', END OF c_id. DATA mi_config TYPE REF TO zif_abapgit_data_config. PRIVATE SECTION. DATA mo_repo TYPE REF TO zcl_abapgit_repo. DATA mo_form TYPE REF TO zcl_abapgit_html_form. DATA mo_form_data TYPE REF TO zcl_abapgit_string_map. DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map. DATA mo_form_util TYPE REF TO zcl_abapgit_html_form_utils. CLASS-METHODS concatenated_key_to_where IMPORTING !iv_table TYPE tabname !iv_tabkey TYPE clike RETURNING VALUE(rv_where) TYPE string RAISING zcx_abapgit_exception. METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form. METHODS add_via_transport RAISING zcx_abapgit_exception . METHODS build_where IMPORTING !io_map TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(rt_where) TYPE string_table . METHODS render_existing RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS event_add IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RAISING zcx_abapgit_exception . METHODS event_remove IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RAISING zcx_abapgit_exception . METHODS event_update IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_gui_page_debuginfo DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler . INTERFACES zif_abapgit_gui_renderable . CLASS-METHODS create RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_exit_standalone TYPE syrepid VALUE 'ZABAPGIT_USER_EXIT' ##NO_TEXT. CONSTANTS c_exit_class TYPE c LENGTH 30 VALUE 'ZCL_ABAPGIT_USER_EXIT' ##NO_TEXT. CONSTANTS c_exit_interface TYPE c LENGTH 30 VALUE 'ZIF_ABAPGIT_EXIT' ##NO_TEXT. CONSTANTS: BEGIN OF c_action, save TYPE string VALUE 'save', END OF c_action. DATA mv_html TYPE string . CLASS-METHODS build_toolbar RETURNING VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar. METHODS render_debug_info RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_exit_info RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_exit_info_methods IMPORTING !it_source TYPE string_table !iv_clsname TYPE seoclsname OPTIONAL RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_supported_object_types RETURNING VALUE(rv_html) TYPE string . METHODS render_scripts RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS get_jump_object IMPORTING !iv_obj_type TYPE csequence DEFAULT 'CLAS' !iv_obj_name TYPE csequence RETURNING VALUE(rv_html) TYPE string . ENDCLASS. CLASS zcl_abapgit_gui_page_diff_base DEFINITION INHERITING FROM zcl_abapgit_gui_component CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_hotkeys. INTERFACES zif_abapgit_gui_menu_provider. INTERFACES zif_abapgit_gui_renderable. TYPES: BEGIN OF ty_file_diff, path TYPE string, filename TYPE string, obj_type TYPE string, obj_name TYPE string, lstate TYPE c LENGTH 1, rstate TYPE c LENGTH 1, fstate TYPE c LENGTH 1, " FILE state - Abstraction for shorter ifs o_diff TYPE REF TO zcl_abapgit_diff, changed_by TYPE syuname, type TYPE string, END OF ty_file_diff. TYPES: ty_file_diffs TYPE STANDARD TABLE OF ty_file_diff WITH NON-UNIQUE DEFAULT KEY WITH NON-UNIQUE SORTED KEY secondary COMPONENTS path filename. CONSTANTS: BEGIN OF c_fstate, local TYPE c LENGTH 1 VALUE 'L', remote TYPE c LENGTH 1 VALUE 'R', both TYPE c LENGTH 1 VALUE 'B', END OF c_fstate. METHODS constructor IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !is_file TYPE zif_abapgit_git_definitions=>ty_file OPTIONAL !is_object TYPE zif_abapgit_definitions=>ty_item OPTIONAL !it_files TYPE zif_abapgit_definitions=>ty_stage_tt OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. CONSTANTS: BEGIN OF c_actions, toggle_unified TYPE string VALUE 'toggle_unified', toggle_hide_diffs TYPE string VALUE 'toggle_hide_diffs', toggle_hidden_chars TYPE string VALUE 'toggle_hidden_chars', toggle_ignore_indent TYPE string VALUE 'toggle_ignore_indent', toggle_ignore_comments TYPE string VALUE 'toggle_ignore_comments', toggle_ignore_case TYPE string VALUE 'toggle_ignore_case', refresh_prefix TYPE string VALUE 'refresh', refresh_all TYPE string VALUE 'refresh_all', refresh_local TYPE string VALUE 'refresh_local', refresh_local_object TYPE string VALUE 'refresh_local_object', END OF c_actions , BEGIN OF c_action_texts, refresh_all TYPE string VALUE `Refresh All`, refresh_local TYPE string VALUE `Refresh Local`, END OF c_action_texts, BEGIN OF c_action_titles, refresh_local TYPE string VALUE `Refresh all local objects, without refreshing the remote`, refresh_all TYPE string VALUE `Complete refresh of all objects, local and remote`, END OF c_action_titles. DATA mv_unified TYPE abap_bool VALUE abap_true ##NO_TEXT. DATA mo_repo TYPE REF TO zcl_abapgit_repo . DATA mt_diff_files TYPE ty_file_diffs . CLASS-METHODS get_page_layout RETURNING VALUE(rv_page_layout) TYPE string. METHODS get_normalized_fname_with_path IMPORTING !is_diff TYPE ty_file_diff RETURNING VALUE(rv_filename) TYPE string . METHODS normalize_path IMPORTING !iv_path TYPE string RETURNING VALUE(rv_normalized) TYPE string . METHODS normalize_filename IMPORTING !iv_filename TYPE string RETURNING VALUE(rv_normalized) TYPE string . METHODS add_menu_end IMPORTING !io_menu TYPE REF TO zcl_abapgit_html_toolbar . METHODS calculate_diff IMPORTING !is_file TYPE zif_abapgit_git_definitions=>ty_file OPTIONAL !is_object TYPE zif_abapgit_definitions=>ty_item OPTIONAL !it_files TYPE zif_abapgit_definitions=>ty_stage_tt OPTIONAL RAISING zcx_abapgit_exception . METHODS add_menu_begin IMPORTING !io_menu TYPE REF TO zcl_abapgit_html_toolbar . METHODS render_table_head_non_unified IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_diff TYPE ty_file_diff . METHODS render_beacon_begin_of_row IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_diff TYPE ty_file_diff . METHODS render_diff_head_after_state IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_diff TYPE ty_file_diff . METHODS insert_nav RETURNING VALUE(rv_insert_nav) TYPE abap_bool . METHODS render_line_split_row IMPORTING !ii_html TYPE REF TO zif_abapgit_html !iv_filename TYPE string !is_diff_line TYPE zif_abapgit_definitions=>ty_diff !iv_index TYPE sy-tabix !iv_fstate TYPE char1 !iv_new TYPE string !iv_old TYPE string RAISING zcx_abapgit_exception . METHODS refresh IMPORTING iv_action TYPE clike RAISING zcx_abapgit_exception . METHODS refresh_full RAISING zcx_abapgit_exception . METHODS refresh_local RAISING zcx_abapgit_exception . METHODS refresh_local_object IMPORTING iv_action TYPE clike RAISING zcx_abapgit_exception . METHODS is_refresh IMPORTING iv_action TYPE string RETURNING VALUE(rv_is_refrseh) TYPE abap_bool. METHODS modify_files_before_diff_calc IMPORTING it_diff_files_old TYPE ty_file_diffs RETURNING VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_stage_tt. METHODS add_view_sub_menu IMPORTING io_menu TYPE REF TO zcl_abapgit_html_toolbar . PRIVATE SECTION. TYPES: BEGIN OF ty_view, hide_diffs TYPE abap_bool, hidden_chars TYPE abap_bool, ignore_indent TYPE abap_bool, ignore_comments TYPE abap_bool, ignore_case TYPE abap_bool, END OF ty_view. DATA mt_delayed_lines TYPE zif_abapgit_definitions=>ty_diffs_tt . DATA mv_repo_key TYPE zif_abapgit_persistence=>ty_repo-key . DATA mv_seed TYPE string . " Unique page id to bind JS sessionStorage DATA ms_view TYPE ty_view. METHODS render_diff IMPORTING !is_diff TYPE ty_file_diff RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_diff_head IMPORTING !is_diff TYPE ty_file_diff RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_table_head IMPORTING !is_diff TYPE ty_file_diff RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_beacon IMPORTING !is_diff_line TYPE zif_abapgit_definitions=>ty_diff !is_diff TYPE ty_file_diff RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS render_line_no_diffs RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_line_split IMPORTING !is_diff_line TYPE zif_abapgit_definitions=>ty_diff !iv_filename TYPE string !iv_fstate TYPE char1 !iv_index TYPE sy-tabix RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_line_unified IMPORTING !is_diff_line TYPE zif_abapgit_definitions=>ty_diff OPTIONAL RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS append_diff IMPORTING !it_remote TYPE zif_abapgit_git_definitions=>ty_files_tt !it_local TYPE zif_abapgit_definitions=>ty_files_item_tt !is_status TYPE zif_abapgit_definitions=>ty_result RAISING zcx_abapgit_exception . METHODS is_binary IMPORTING !iv_d1 TYPE xstring !iv_d2 TYPE xstring RETURNING VALUE(rv_yes) TYPE abap_bool . METHODS add_jump_sub_menu IMPORTING !io_menu TYPE REF TO zcl_abapgit_html_toolbar . METHODS add_filter_sub_menu IMPORTING !io_menu TYPE REF TO zcl_abapgit_html_toolbar . METHODS render_lines IMPORTING !is_diff TYPE ty_file_diff RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_table_head_unified IMPORTING !ii_html TYPE REF TO zif_abapgit_html . METHODS render_scripts RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS is_file_requested IMPORTING it_files TYPE zif_abapgit_definitions=>ty_stage_tt is_status TYPE zif_abapgit_definitions=>ty_result RETURNING VALUE(rv_is_file_requested) TYPE abap_bool. METHODS has_diffs IMPORTING !it_diffs TYPE zif_abapgit_definitions=>ty_diffs_tt RETURNING VALUE(rv_has_diffs) TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_gui_page_diff DEFINITION INHERITING FROM zcl_abapgit_gui_page_diff_base CREATE PRIVATE. PUBLIC SECTION. CLASS-METHODS create IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !is_file TYPE zif_abapgit_git_definitions=>ty_file OPTIONAL !is_object TYPE zif_abapgit_definitions=>ty_item OPTIONAL !it_files TYPE zif_abapgit_definitions=>ty_stage_tt OPTIONAL RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_gui_page_ex_object DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. CLASS-METHODS create RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_id, object_type TYPE string VALUE 'object_type', object_name TYPE string VALUE 'object_name', only_main TYPE string VALUE 'only_main', END OF c_id. CONSTANTS: BEGIN OF c_event, export TYPE string VALUE 'export', choose_object_type TYPE string VALUE 'choose-object-type', END OF c_event. DATA mo_form TYPE REF TO zcl_abapgit_html_form. DATA mo_form_data TYPE REF TO zcl_abapgit_string_map. DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map. DATA mo_form_util TYPE REF TO zcl_abapgit_html_form_utils. METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form. METHODS export_object RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_ex_pckage DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. CLASS-METHODS create RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_id, package TYPE string VALUE 'package', folder_logic TYPE string VALUE 'folder_logic', ignore_subpackages TYPE string VALUE 'ignore_subpackages', main_lang_only TYPE string VALUE 'main_lang_only', END OF c_id. CONSTANTS: BEGIN OF c_event, export_package TYPE string VALUE 'export-package', choose_package TYPE string VALUE 'choose-object-type', END OF c_event. DATA mo_form TYPE REF TO zcl_abapgit_html_form. DATA mo_form_data TYPE REF TO zcl_abapgit_string_map. DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map. DATA mo_form_util TYPE REF TO zcl_abapgit_html_form_utils. METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form. METHODS export_package RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_merge DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES: zif_abapgit_gui_event_handler, zif_abapgit_gui_menu_provider, zif_abapgit_gui_renderable. CLASS-METHODS create IMPORTING io_repo TYPE REF TO zcl_abapgit_repo_online iv_source TYPE string iv_target TYPE string RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING io_repo TYPE REF TO zcl_abapgit_repo_online iv_source TYPE string iv_target TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mo_repo TYPE REF TO zcl_abapgit_repo_online. DATA mi_merge TYPE REF TO zif_abapgit_merge. CONSTANTS: BEGIN OF c_actions, merge TYPE string VALUE 'merge', res_conflicts TYPE string VALUE 'res_conflicts', END OF c_actions. METHODS show_file IMPORTING !it_expanded TYPE zif_abapgit_git_definitions=>ty_expanded_tt !ii_html TYPE REF TO zif_abapgit_html !is_file TYPE zif_abapgit_git_definitions=>ty_expanded !is_result TYPE zif_abapgit_git_definitions=>ty_expanded. ENDCLASS. CLASS zcl_abapgit_gui_page_merge_res DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES: zif_abapgit_gui_event_handler, zif_abapgit_gui_menu_provider, zif_abapgit_gui_renderable. CLASS-METHODS create IMPORTING io_repo TYPE REF TO zcl_abapgit_repo_online io_merge_page TYPE REF TO zcl_abapgit_gui_page_merge io_merge TYPE REF TO zif_abapgit_merge RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING io_repo TYPE REF TO zcl_abapgit_repo_online io_merge_page TYPE REF TO zcl_abapgit_gui_page_merge io_merge TYPE REF TO zif_abapgit_merge RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_file_diff, path TYPE string, filename TYPE string, lstate TYPE char1, rstate TYPE char1, fstate TYPE char1, " FILE state - Abstraction for shorter ifs o_diff TYPE REF TO zcl_abapgit_diff, changed_by TYPE syuname, type TYPE string, END OF ty_file_diff . CONSTANTS: BEGIN OF c_actions, toggle_mode TYPE string VALUE 'toggle_mode' ##NO_TEXT, apply_merge TYPE string VALUE 'apply_merge' ##NO_TEXT, apply_source TYPE string VALUE 'apply_source' ##NO_TEXT, apply_target TYPE string VALUE 'apply_target' ##NO_TEXT, cancel TYPE string VALUE 'cancel' ##NO_TEXT, END OF c_actions . CONSTANTS: BEGIN OF c_merge_mode, selection TYPE string VALUE 'selection' ##NO_TEXT, merge TYPE string VALUE 'merge' ##NO_TEXT, END OF c_merge_mode . DATA mo_merge TYPE REF TO zif_abapgit_merge . DATA mo_merge_page TYPE REF TO zcl_abapgit_gui_page_merge . DATA mo_repo TYPE REF TO zcl_abapgit_repo_online . DATA ms_diff_file TYPE ty_file_diff . DATA mv_current_conflict_index TYPE sy-tabix . DATA mv_merge_mode TYPE string . DATA mt_conflicts TYPE zif_abapgit_merge=>ty_merge_conflict_tt . METHODS apply_merged_content IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RAISING zcx_abapgit_exception . METHODS is_binary IMPORTING !iv_d1 TYPE xstring !iv_d2 TYPE xstring RETURNING VALUE(rv_yes) TYPE abap_bool . METHODS render_beacon IMPORTING !is_diff_line TYPE zif_abapgit_definitions=>ty_diff !is_diff TYPE ty_file_diff RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS render_diff IMPORTING !is_diff TYPE ty_file_diff RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_diff_head IMPORTING !is_diff TYPE ty_file_diff RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS render_lines IMPORTING !is_diff TYPE ty_file_diff RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS render_line_split IMPORTING !is_diff_line TYPE zif_abapgit_definitions=>ty_diff RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS render_table_head RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS resolve_diff RAISING zcx_abapgit_exception . METHODS toggle_merge_mode . ENDCLASS. CLASS zcl_abapgit_gui_page_merge_sel DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. CLASS-METHODS create IMPORTING !ii_repo TYPE REF TO zif_abapgit_repo RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING !ii_repo TYPE REF TO zif_abapgit_repo RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_id, branches TYPE string VALUE 'branches', source TYPE string VALUE 'source', target TYPE string VALUE 'target', END OF c_id. CONSTANTS: BEGIN OF c_event, merge TYPE string VALUE 'merge', END OF c_event. DATA mo_form TYPE REF TO zcl_abapgit_html_form. DATA mo_form_data TYPE REF TO zcl_abapgit_string_map. DATA mo_form_util TYPE REF TO zcl_abapgit_html_form_utils. DATA mo_repo TYPE REF TO zcl_abapgit_repo_online. DATA mt_branches TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt. METHODS read_branches RAISING zcx_abapgit_exception. METHODS get_form_schema RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_patch DEFINITION INHERITING FROM zcl_abapgit_gui_page_diff_base CREATE PUBLIC. PUBLIC SECTION. CLASS-METHODS create IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !is_file TYPE zif_abapgit_git_definitions=>ty_file OPTIONAL !is_object TYPE zif_abapgit_definitions=>ty_item OPTIONAL !it_files TYPE zif_abapgit_definitions=>ty_stage_tt OPTIONAL RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !is_file TYPE zif_abapgit_git_definitions=>ty_file OPTIONAL !is_object TYPE zif_abapgit_definitions=>ty_item OPTIONAL !it_files TYPE zif_abapgit_definitions=>ty_stage_tt OPTIONAL RAISING zcx_abapgit_exception. CLASS-METHODS get_patch_data IMPORTING !iv_patch TYPE string EXPORTING !ev_filename TYPE string !ev_line_index TYPE string RAISING zcx_abapgit_exception. METHODS: zif_abapgit_gui_event_handler~on_event REDEFINITION, zif_abapgit_gui_hotkeys~get_hotkey_actions REDEFINITION, zif_abapgit_gui_renderable~render REDEFINITION. PROTECTED SECTION. METHODS: add_menu_begin REDEFINITION, add_menu_end REDEFINITION, insert_nav REDEFINITION, refresh REDEFINITION, render_beacon_begin_of_row REDEFINITION, render_diff_head_after_state REDEFINITION, render_line_split_row REDEFINITION, render_table_head_non_unified REDEFINITION. PRIVATE SECTION. TYPES ty_patch_action TYPE string . CONSTANTS: BEGIN OF c_patch_actions, stage TYPE string VALUE 'patch_stage', END OF c_patch_actions . CONSTANTS: BEGIN OF c_patch_action, add TYPE ty_patch_action VALUE 'add', remove TYPE ty_patch_action VALUE 'remove', END OF c_patch_action . DATA mo_stage TYPE REF TO zcl_abapgit_stage . DATA mv_section_count TYPE i . DATA mv_pushed TYPE abap_bool . DATA mo_repo_online TYPE REF TO zcl_abapgit_repo_online . METHODS render_patch IMPORTING !ii_html TYPE REF TO zif_abapgit_html !iv_filename TYPE string !is_diff_line TYPE zif_abapgit_definitions=>ty_diff !iv_index TYPE sy-tabix RAISING zcx_abapgit_exception . METHODS render_patch_head IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_diff TYPE ty_file_diff . METHODS start_staging IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RAISING zcx_abapgit_exception . METHODS apply_patch_from_form_fields IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RAISING zcx_abapgit_exception . METHODS restore_patch_flags IMPORTING !it_diff_files_old TYPE ty_file_diffs RAISING zcx_abapgit_exception . METHODS add_to_stage RAISING zcx_abapgit_exception . METHODS apply_patch_all IMPORTING !iv_patch TYPE string !iv_patch_flag TYPE abap_bool RAISING zcx_abapgit_exception . METHODS are_all_lines_patched IMPORTING !it_diff TYPE zif_abapgit_definitions=>ty_diffs_tt RETURNING VALUE(rv_are_all_lines_patched) TYPE abap_bool . METHODS apply_patch_for IMPORTING !iv_filename TYPE string !iv_line_index TYPE string !iv_patch_flag TYPE abap_bool RAISING zcx_abapgit_exception . METHODS get_diff_object IMPORTING !iv_filename TYPE string RETURNING VALUE(ro_diff) TYPE REF TO zcl_abapgit_diff RAISING zcx_abapgit_exception . METHODS get_diff_line IMPORTING !io_diff TYPE REF TO zcl_abapgit_diff !iv_line_index TYPE string RETURNING VALUE(rs_diff) TYPE zif_abapgit_definitions=>ty_diff RAISING zcx_abapgit_exception . CLASS-METHODS is_patch_line_possible IMPORTING !is_diff_line TYPE zif_abapgit_definitions=>ty_diff RETURNING VALUE(rv_is_patch_line_possible) TYPE abap_bool . METHODS render_scripts RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_gui_page_pull DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_menu_provider. INTERFACES zif_abapgit_gui_renderable. CONSTANTS: BEGIN OF c_id, transport_request TYPE string VALUE 'transport_request', END OF c_id . CONSTANTS: BEGIN OF c_action, pull TYPE string VALUE 'pull', refresh TYPE string VALUE 'refresh', choose_tr TYPE string VALUE 'choose_tr', END OF c_action. CLASS-METHODS create IMPORTING io_repo TYPE REF TO zcl_abapgit_repo iv_trkorr TYPE trkorr OPTIONAL ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING io_repo TYPE REF TO zcl_abapgit_repo iv_trkorr TYPE trkorr ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mo_repo TYPE REF TO zcl_abapgit_repo . DATA mi_obj_filter TYPE REF TO zif_abapgit_object_filter . DATA mo_form_data TYPE REF TO zcl_abapgit_string_map . DATA ms_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks . METHODS pull RAISING zcx_abapgit_exception . METHODS form RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form RAISING zcx_abapgit_exception . METHODS choose_transport_request RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_gui_page_repo_over DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES: zif_abapgit_gui_event_handler, zif_abapgit_gui_hotkeys, zif_abapgit_gui_menu_provider, zif_abapgit_gui_renderable. CLASS-METHODS create IMPORTING !iv_only_favorites TYPE abap_bool OPTIONAL RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING !iv_only_favorites TYPE abap_bool OPTIONAL RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_overview, favorite TYPE string, "! True for offline, false for online repo type TYPE string, key TYPE zif_abapgit_persistence=>ty_value, name TYPE string, labels TYPE string_table, url TYPE string, package TYPE devclass, branch TYPE string, created_by TYPE syuname, created_at TYPE string, created_at_raw TYPE timestampl, deserialized_by TYPE syuname, deserialized_at TYPE string, deserialized_at_raw TYPE timestampl, write_protected TYPE abap_bool, flow TYPE abap_bool, END OF ty_overview, ty_overviews TYPE STANDARD TABLE OF ty_overview WITH NON-UNIQUE DEFAULT KEY. CONSTANTS: BEGIN OF c_action, select TYPE string VALUE 'select', apply_filter TYPE string VALUE 'apply_filter', label_filter TYPE string VALUE 'label_filter', END OF c_action, c_label_filter_prefix TYPE string VALUE `label:`, c_raw_field_suffix TYPE string VALUE `_RAW` ##NO_TEXT. DATA: mt_all_labels TYPE string_table, mo_label_colors TYPE REF TO zcl_abapgit_string_map. DATA ms_list_settings TYPE zif_abapgit_definitions=>ty_list_settings. METHODS set_order_by IMPORTING !iv_order_by TYPE string RAISING zcx_abapgit_exception. METHODS set_order_direction IMPORTING !iv_order_descending TYPE abap_bool RAISING zcx_abapgit_exception. METHODS set_filter IMPORTING it_postdata TYPE zif_abapgit_html_viewer=>ty_post_data RAISING zcx_abapgit_exception. METHODS: apply_filter CHANGING ct_overview TYPE ty_overviews, map_repo_list_to_overview IMPORTING it_repo_obj_list TYPE zif_abapgit_repo_srv=>ty_repo_list RETURNING VALUE(rt_overview) TYPE ty_overviews RAISING zcx_abapgit_exception, render_repo_list IMPORTING ii_html TYPE REF TO zif_abapgit_html it_overview TYPE ty_overviews RAISING zcx_abapgit_exception, render_table_header IMPORTING ii_html TYPE REF TO zif_abapgit_html, render_table_footer IMPORTING ii_html TYPE REF TO zif_abapgit_html, render_table_body IMPORTING ii_html TYPE REF TO zif_abapgit_html it_repo_list TYPE ty_overviews RAISING zcx_abapgit_exception, render_table_item IMPORTING ii_html TYPE REF TO zif_abapgit_html is_repo TYPE ty_overview RAISING zcx_abapgit_exception, render_header_bar IMPORTING ii_html TYPE REF TO zif_abapgit_html, render_header_label_list IMPORTING ii_html TYPE REF TO zif_abapgit_html, apply_order_by CHANGING ct_overview TYPE ty_overviews. METHODS prepare_overviews RETURNING VALUE(rt_overviews) TYPE ty_overviews RAISING zcx_abapgit_exception. METHODS render_scripts RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. METHODS render_action_toolbar RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html. METHODS render_filter_bar RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html. METHODS build_table_scheme RETURNING VALUE(rt_tab_scheme) TYPE zif_abapgit_definitions=>ty_col_spec_tt. METHODS collect_all_labels IMPORTING it_overview TYPE ty_overviews RETURNING VALUE(rt_list) TYPE string_table. METHODS render_filter_help_hint RETURNING VALUE(rv_html) TYPE string. METHODS save_settings RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_repo_view DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES: zif_abapgit_gui_event_handler, zif_abapgit_gui_hotkeys, zif_abapgit_gui_menu_provider, zif_abapgit_gui_renderable. CONSTANTS: BEGIN OF c_actions, change_dir TYPE string VALUE 'change_dir' ##NO_TEXT, toggle_hide_files TYPE string VALUE 'toggle_hide_files' ##NO_TEXT, toggle_folders TYPE string VALUE 'toggle_folders' ##NO_TEXT, toggle_changes TYPE string VALUE 'toggle_changes' ##NO_TEXT, toggle_diff_first TYPE string VALUE 'toggle_diff_first ' ##NO_TEXT, display_more TYPE string VALUE 'display_more' ##NO_TEXT, go_data TYPE string VALUE 'go_data', go_unit TYPE string VALUE 'go_unit', END OF c_actions . CLASS-METHODS create IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. DATA mo_repo TYPE REF TO zcl_abapgit_repo . DATA mo_repo_aggregated_state TYPE REF TO zcl_abapgit_repo_item_state. DATA mv_connection_error TYPE abap_bool. DATA mv_cur_dir TYPE string . DATA mv_hide_files TYPE abap_bool . DATA mv_max_lines TYPE i . DATA mv_max_setting TYPE i . DATA mv_show_folders TYPE abap_bool . DATA mv_changes_only TYPE abap_bool . DATA mv_order_by TYPE string . DATA mv_order_descending TYPE abap_bool . DATA mv_diff_first TYPE abap_bool . DATA mv_key TYPE zif_abapgit_persistence=>ty_value . DATA mv_are_changes_recorded_in_tr TYPE abap_bool . METHODS render_head_line RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS build_view_dropdown RETURNING VALUE(ro_toolbar) TYPE REF TO zcl_abapgit_html_toolbar RAISING zcx_abapgit_exception . METHODS render_item IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item !iv_render_transports TYPE abap_bool RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_item_files IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS render_item_command IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS render_file_command IMPORTING !is_file TYPE zif_abapgit_definitions=>ty_repo_file RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS get_item_class IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item iv_is_object_row TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_html) TYPE string . METHODS render_item_transport IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_parent_dir RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS build_dir_jump_link IMPORTING !iv_path TYPE string RETURNING VALUE(rv_html) TYPE string . METHODS build_inactive_object_code IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item RETURNING VALUE(rv_inactive_html_code) TYPE string . METHODS build_srcsystem_code IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item RETURNING VALUE(rv_srcsystem_html_code) TYPE string . METHODS build_origlang_code IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item RETURNING VALUE(rv_html_code) TYPE string . METHODS open_in_main_language RAISING zcx_abapgit_exception . METHODS render_table_header RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS render_table_footer RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS apply_order_by CHANGING !ct_repo_items TYPE zif_abapgit_definitions=>ty_repo_item_tt . METHODS build_branch_dropdown RETURNING VALUE(ro_branch_dropdown) TYPE REF TO zcl_abapgit_html_toolbar RAISING zcx_abapgit_exception . METHODS build_tag_dropdown RETURNING VALUE(ro_tag_dropdown) TYPE REF TO zcl_abapgit_html_toolbar RAISING zcx_abapgit_exception . METHODS build_advanced_dropdown RETURNING VALUE(ro_advanced_dropdown) TYPE REF TO zcl_abapgit_html_toolbar RAISING zcx_abapgit_exception . METHODS build_main_toolbar RETURNING VALUE(ro_toolbar) TYPE REF TO zcl_abapgit_html_toolbar RAISING zcx_abapgit_exception . METHODS render_scripts RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS is_repo_lang_logon_lang RETURNING VALUE(rv_repo_lang_is_logon_lang) TYPE abap_bool . METHODS render_item_changed_by IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. METHODS order_files CHANGING ct_files TYPE zif_abapgit_definitions=>ty_repo_file_tt. METHODS get_crossout IMPORTING !iv_authorization TYPE zif_abapgit_auth=>ty_authorization OPTIONAL !iv_protected TYPE abap_bool DEFAULT abap_false !iv_strong TYPE abap_bool DEFAULT abap_false PREFERRED PARAMETER iv_authorization RETURNING VALUE(rv_crossout) LIKE zif_abapgit_html=>c_html_opt-crossout. METHODS check_branch RAISING zcx_abapgit_exception. METHODS check_connection RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_run_bckg DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE . PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler . INTERFACES zif_abapgit_gui_renderable . CLASS-METHODS create RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . METHODS constructor RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. DATA: mt_text TYPE TABLE OF string. METHODS run. ENDCLASS. CLASS zcl_abapgit_gui_page_stage DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES: zif_abapgit_gui_event_handler, zif_abapgit_gui_hotkeys, zif_abapgit_gui_menu_provider, zif_abapgit_gui_renderable. CONSTANTS: BEGIN OF c_action, stage_refresh TYPE string VALUE 'stage_refresh', stage_all TYPE string VALUE 'stage_all', stage_commit TYPE string VALUE 'stage_commit', stage_filter TYPE string VALUE 'stage_filter', END OF c_action. CLASS-METHODS create IMPORTING io_repo TYPE REF TO zcl_abapgit_repo_online iv_seed TYPE string OPTIONAL iv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result DEFAULT zif_abapgit_definitions=>c_sci_result-no_run ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL ii_force_refresh TYPE abap_bool DEFAULT abap_true RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING io_repo TYPE REF TO zcl_abapgit_repo_online iv_seed TYPE string OPTIONAL iv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result DEFAULT zif_abapgit_definitions=>c_sci_result-no_run ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL ii_force_refresh TYPE abap_bool DEFAULT abap_true RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_changed_by, item TYPE zif_abapgit_definitions=>ty_item, filename TYPE string, name TYPE syuname, END OF ty_changed_by . TYPES: ty_changed_by_tt TYPE SORTED TABLE OF ty_changed_by WITH UNIQUE KEY item filename. DATA mo_repo TYPE REF TO zcl_abapgit_repo_online . DATA ms_files TYPE zif_abapgit_definitions=>ty_stage_files . DATA mv_seed TYPE string . " Unique page id to bind JS sessionStorage DATA mv_filter_value TYPE string . DATA mv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result. DATA mi_obj_filter TYPE REF TO zif_abapgit_object_filter. METHODS check_selected IMPORTING !io_files TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . METHODS find_changed_by IMPORTING !it_files TYPE zif_abapgit_definitions=>ty_stage_files !it_transports TYPE zif_abapgit_cts_api=>ty_transport_list RETURNING VALUE(rt_changed_by) TYPE ty_changed_by_tt . METHODS find_transports IMPORTING !it_files TYPE zif_abapgit_definitions=>ty_stage_files RETURNING VALUE(rt_transports) TYPE zif_abapgit_cts_api=>ty_transport_list . METHODS render_list RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_file IMPORTING !iv_context TYPE string !is_file TYPE zif_abapgit_git_definitions=>ty_file !is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL !is_status TYPE zif_abapgit_definitions=>ty_result !iv_changed_by TYPE syuname OPTIONAL !iv_transport TYPE trkorr OPTIONAL RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS render_actions RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS stage_selected IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(ro_stage) TYPE REF TO zcl_abapgit_stage RAISING zcx_abapgit_exception . METHODS stage_all RETURNING VALUE(ro_stage) TYPE REF TO zcl_abapgit_stage RAISING zcx_abapgit_exception . METHODS get_page_patch IMPORTING !io_stage TYPE REF TO zcl_abapgit_stage RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . METHODS render_main_language_warning RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS count_default_files_to_commit RETURNING VALUE(rv_count) TYPE i . METHODS render_deferred_hidden_events RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS render_scripts RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . METHODS init_files RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_gui_page_tags DEFINITION INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. CLASS-METHODS create IMPORTING !ii_repo TYPE REF TO zif_abapgit_repo RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING !ii_repo TYPE REF TO zif_abapgit_repo RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_id, tag_group TYPE string VALUE 'tag_group', tag_type TYPE string VALUE 'tag_type', tags TYPE string VALUE 'tags', type TYPE string VALUE 'type', name TYPE string VALUE 'name', sha1 TYPE string VALUE 'sha1', anno_group TYPE string VALUE 'anno_group', tagger TYPE string VALUE 'tagger', tagger_name TYPE string VALUE 'tagger_name', tagger_email TYPE string VALUE 'tagger_email', message TYPE string VALUE 'message', body TYPE string VALUE 'body', END OF c_id. CONSTANTS: BEGIN OF c_event, create TYPE string VALUE 'create', choose_commit TYPE string VALUE 'choose_commit', change_type TYPE string VALUE 'change_type', END OF c_event. DATA mo_form TYPE REF TO zcl_abapgit_html_form. DATA mo_form_data TYPE REF TO zcl_abapgit_string_map. DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map. DATA mo_repo TYPE REF TO zcl_abapgit_repo_online. DATA mo_settings TYPE REF TO zcl_abapgit_settings. DATA ms_tag TYPE zif_abapgit_git_definitions=>ty_git_tag. METHODS get_form_schema IMPORTING io_form_data TYPE REF TO zcl_abapgit_string_map OPTIONAL RETURNING VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form RAISING zcx_abapgit_exception. METHODS initialize_form_data RAISING zcx_abapgit_exception. METHODS get_tagger_name RETURNING VALUE(rv_user) TYPE string RAISING zcx_abapgit_exception. METHODS get_tagger_email RETURNING VALUE(rv_email) TYPE string RAISING zcx_abapgit_exception. METHODS validate_form IMPORTING !io_form_data TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_validation_log) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception. METHODS choose_commit RETURNING VALUE(rv_commit) TYPE zif_abapgit_git_definitions=>ty_commit-sha1 RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_tutorial DEFINITION FINAL INHERITING FROM zcl_abapgit_gui_component CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_gui_renderable. CLASS-METHODS create RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS build_main_menu RETURNING VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar. ENDCLASS. CLASS zcl_abapgit_popup_branch_list DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_gui_render_item. INTERFACES zif_abapgit_html_popup. CLASS-METHODS create IMPORTING !iv_url TYPE string !iv_default_branch TYPE string OPTIONAL !iv_show_new_option TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_popup) TYPE REF TO zif_abapgit_html_popup. METHODS constructor IMPORTING !iv_url TYPE string !iv_default_branch TYPE string OPTIONAL !iv_show_new_option TYPE abap_bool DEFAULT abap_false. PRIVATE SECTION. DATA mv_repo_url TYPE string. DATA mv_default_branch TYPE string. DATA mv_show_new_option TYPE abap_bool. METHODS fetch_branch_list RETURNING VALUE(rt_branches) TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_popup_code_insp DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_gui_render_item . INTERFACES zif_abapgit_html_popup . CLASS-METHODS create RETURNING VALUE(ri_popup) TYPE REF TO zif_abapgit_html_popup . PROTECTED SECTION. PRIVATE SECTION. METHODS fetch_list RETURNING VALUE(rt_list) TYPE zif_abapgit_code_inspector=>ty_variants RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_popup_pull_request DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_gui_render_item. INTERFACES zif_abapgit_html_popup. CLASS-METHODS create IMPORTING iv_url TYPE string RETURNING VALUE(ri_popup) TYPE REF TO zif_abapgit_html_popup. METHODS constructor IMPORTING iv_url TYPE string. PROTECTED SECTION. PRIVATE SECTION. DATA mv_repo_url TYPE string. METHODS fetch_pull_request_list RETURNING VALUE(rt_pulls) TYPE zif_abapgit_pr_enum_provider=>ty_pull_requests RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_popup_tag_list DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_gui_render_item. INTERFACES zif_abapgit_html_popup. CLASS-METHODS create IMPORTING iv_url TYPE string RETURNING VALUE(ri_popup) TYPE REF TO zif_abapgit_html_popup. METHODS constructor IMPORTING iv_url TYPE string. PRIVATE SECTION. DATA mv_repo_url TYPE string. METHODS fetch_tag_list RETURNING VALUE(rt_tags) TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_progress DEFINITION FINAL CREATE PROTECTED . PUBLIC SECTION. INTERFACES zif_abapgit_progress . CLASS-METHODS set_instance IMPORTING !ii_progress TYPE REF TO zif_abapgit_progress . CLASS-METHODS get_instance IMPORTING !iv_total TYPE i RETURNING VALUE(ri_progress) TYPE REF TO zif_abapgit_progress . PROTECTED SECTION. DATA mv_total TYPE i . CLASS-DATA gi_progress TYPE REF TO zif_abapgit_progress . METHODS calc_pct IMPORTING !iv_current TYPE i RETURNING VALUE(rv_pct) TYPE i . PRIVATE SECTION. DATA mv_cv_time_next TYPE sy-uzeit . DATA mv_cv_datum_next TYPE sy-datum . ENDCLASS. CLASS zcl_abapgit_gui_router DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. PROTECTED SECTION. PRIVATE SECTION. METHODS general_page_routing IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result RAISING zcx_abapgit_exception . METHODS abapgit_services_actions IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result RAISING zcx_abapgit_exception . METHODS db_actions IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result RAISING zcx_abapgit_exception . CLASS-METHODS file_download IMPORTING !iv_package TYPE devclass !iv_xstr TYPE xstring RAISING zcx_abapgit_exception . METHODS git_services IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result RAISING zcx_abapgit_exception . METHODS sap_gui_actions IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result RAISING zcx_abapgit_exception . METHODS other_utilities IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result RAISING zcx_abapgit_exception . METHODS zip_services IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result RAISING zcx_abapgit_exception . METHODS zip_export_transport IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception. METHODS go_stage_transport IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key RETURNING VALUE(ro_filter) TYPE REF TO zcl_abapgit_object_filter_tran RAISING zcx_abapgit_exception. METHODS repository_services IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result RAISING zcx_abapgit_exception . METHODS get_page_diff IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . METHODS get_page_patch IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . METHODS get_page_stage IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception . CLASS-METHODS jump_object IMPORTING !iv_obj_type TYPE string !iv_obj_name TYPE string !iv_filename TYPE string !iv_sub_type TYPE string OPTIONAL !iv_sub_name TYPE string OPTIONAL !iv_line TYPE string OPTIONAL !iv_new_window TYPE string DEFAULT 'X' RAISING zcx_abapgit_exception . CLASS-METHODS jump_display_transport IMPORTING !iv_transport TYPE trkorr RAISING zcx_abapgit_exception . CLASS-METHODS jump_display_user IMPORTING !iv_username TYPE syuname RAISING zcx_abapgit_exception . METHODS call_browser IMPORTING !iv_url TYPE csequence RAISING zcx_abapgit_exception . METHODS call_transaction IMPORTING !iv_tcode TYPE csequence RAISING zcx_abapgit_exception . METHODS get_state_settings IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rv_state) TYPE i . METHODS get_state_diff IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event RETURNING VALUE(rv_state) TYPE i . METHODS main_page RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_services_abapgit DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CONSTANTS c_abapgit_repo TYPE string VALUE 'https://github.com/abapGit/abapGit' ##NO_TEXT. CONSTANTS c_abapgit_homepage TYPE string VALUE 'https://www.abapgit.org' ##NO_TEXT. CONSTANTS c_abapgit_wikipage TYPE string VALUE 'https://docs.abapgit.org' ##NO_TEXT. CONSTANTS c_dotabap_homepage TYPE string VALUE 'https://dotabap.org' ##NO_TEXT. CONSTANTS c_changelog_path TYPE string VALUE '/blob/main/changelog.txt' ##NO_TEXT. CLASS-METHODS open_abapgit_homepage IMPORTING iv_page TYPE string OPTIONAL RAISING zcx_abapgit_exception . CLASS-METHODS open_abapgit_wikipage IMPORTING iv_page TYPE string OPTIONAL RAISING zcx_abapgit_exception . CLASS-METHODS open_dotabap_homepage RAISING zcx_abapgit_exception . CLASS-METHODS open_abapgit_changelog RAISING zcx_abapgit_exception . CLASS-METHODS get_abapgit_tcode RETURNING VALUE(rv_tcode) TYPE tcode . PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS open_url_in_browser IMPORTING !iv_url TYPE string RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_services_git DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS pull IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception. CLASS-METHODS create_branch IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception. CLASS-METHODS switch_branch IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception. CLASS-METHODS delete_branch IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception. CLASS-METHODS delete_tag IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception. CLASS-METHODS switch_tag IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception. CLASS-METHODS commit IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online !is_commit TYPE zif_abapgit_services_git=>ty_commit_fields !io_stage TYPE REF TO zcl_abapgit_stage RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_services_repo DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS new_online IMPORTING !is_repo_params TYPE zif_abapgit_services_repo=>ty_repo_params RETURNING VALUE(ro_repo) TYPE REF TO zcl_abapgit_repo_online RAISING zcx_abapgit_exception . CLASS-METHODS refresh IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . CLASS-METHODS remove IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . CLASS-METHODS purge IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key !iv_keep_repo TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_log) TYPE REF TO zif_abapgit_log RAISING zcx_abapgit_exception . CLASS-METHODS new_offline IMPORTING !is_repo_params TYPE zif_abapgit_services_repo=>ty_repo_params RETURNING VALUE(ro_repo) TYPE REF TO zcl_abapgit_repo_offline RAISING zcx_abapgit_exception . CLASS-METHODS refresh_local_checksums IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . CLASS-METHODS toggle_favorite IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RAISING zcx_abapgit_exception . CLASS-METHODS transport_to_branch IMPORTING !iv_repository_key TYPE zif_abapgit_persistence=>ty_value RAISING zcx_abapgit_exception . CLASS-METHODS gui_deserialize IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RAISING zcx_abapgit_exception . CLASS-METHODS real_deserialize IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks RAISING zcx_abapgit_exception . CLASS-METHODS activate_objects IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key RETURNING VALUE(ri_log) TYPE REF TO zif_abapgit_log RAISING zcx_abapgit_exception. CLASS-METHODS create_package IMPORTING !iv_prefill_package TYPE devclass OPTIONAL RETURNING VALUE(rv_package) TYPE devclass RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS check_package_exists IMPORTING !iv_package TYPE devclass !it_remote TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception. CLASS-METHODS delete_unnecessary_objects IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo !ii_log TYPE REF TO zif_abapgit_log !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks RAISING zcx_abapgit_exception . CLASS-METHODS popup_decisions IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo CHANGING !cs_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks RAISING zcx_abapgit_cancel zcx_abapgit_exception . CLASS-METHODS popup_objects_overwrite CHANGING !ct_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt RAISING zcx_abapgit_exception . CLASS-METHODS popup_package_overwrite CHANGING !ct_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt RAISING zcx_abapgit_exception . CLASS-METHODS check_package IMPORTING !is_repo_params TYPE zif_abapgit_services_repo=>ty_repo_params RAISING zcx_abapgit_exception . CLASS-METHODS raise_error_if_package_exists IMPORTING iv_devclass TYPE devclass RAISING zcx_abapgit_exception. CLASS-METHODS check_for_restart IMPORTING !io_repo TYPE REF TO zif_abapgit_repo. ENDCLASS. CLASS zcl_abapgit_frontend_no_gui DEFINITION CREATE PRIVATE FRIENDS ZCL_abapgit_ui_factory. PUBLIC SECTION. INTERFACES zif_abapgit_frontend_services. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_frontend_services DEFINITION CREATE PRIVATE FRIENDS ZCL_abapgit_ui_factory. PUBLIC SECTION. INTERFACES zif_abapgit_frontend_services. PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA gv_initial_folder TYPE string. METHODS get_path_from_fullname IMPORTING iv_fullname TYPE string RETURNING VALUE(rv_path) TYPE string. ENDCLASS. CLASS zcl_abapgit_password_dialog DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS popup IMPORTING !iv_repo_url TYPE string CHANGING !cv_user TYPE string !cv_pass TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_popups DEFINITION FINAL CREATE PRIVATE FRIENDS ZCL_abapgit_ui_factory . PUBLIC SECTION. INTERFACES zif_abapgit_popups . CLASS-METHODS center IMPORTING !iv_width TYPE i !iv_height TYPE i RETURNING VALUE(rs_position) TYPE zif_abapgit_popups=>ty_popup_position. PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_lt_fields TYPE STANDARD TABLE OF sval WITH DEFAULT KEY . TYPES: BEGIN OF ty_commit_value_tab, commit TYPE zif_abapgit_git_definitions=>ty_sha1, message TYPE c LENGTH 100, datetime TYPE c LENGTH 20, END OF ty_commit_value_tab. TYPES: ty_commit_value_tab_tt TYPE STANDARD TABLE OF ty_commit_value_tab WITH DEFAULT KEY. CONSTANTS c_answer_cancel TYPE c LENGTH 1 VALUE 'A' ##NO_TEXT. DATA ms_position TYPE zif_abapgit_popups=>ty_popup_position. TYPES ty_sval_tt TYPE STANDARD TABLE OF sval WITH DEFAULT KEY. METHODS add_field IMPORTING !iv_tabname TYPE sval-tabname !iv_fieldname TYPE sval-fieldname !iv_fieldtext TYPE sval-fieldtext !iv_value TYPE clike DEFAULT '' !iv_field_attr TYPE sval-field_attr DEFAULT '' !iv_obligatory TYPE spo_obl OPTIONAL CHANGING !ct_fields TYPE ty_sval_tt . METHODS _popup_3_get_values IMPORTING !iv_popup_title TYPE string !iv_no_value_check TYPE abap_bool DEFAULT abap_false EXPORTING !ev_value_1 TYPE spo_value !ev_value_2 TYPE spo_value !ev_value_3 TYPE spo_value CHANGING !ct_fields TYPE ty_lt_fields RAISING zcx_abapgit_exception . METHODS commit_list_build IMPORTING !iv_repo_url TYPE string !iv_branch_name TYPE string EXPORTING !et_value_tab TYPE ty_commit_value_tab_tt !et_commits TYPE zif_abapgit_git_definitions=>ty_commit_tt RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_ui_factory DEFINITION CREATE PRIVATE . PUBLIC SECTION. CLASS-METHODS get_asset_manager RETURNING VALUE(ri_asset_man) TYPE REF TO zif_abapgit_gui_asset_manager RAISING zcx_abapgit_exception . CLASS-METHODS get_popups RETURNING VALUE(ri_popups) TYPE REF TO zif_abapgit_popups . CLASS-METHODS get_gui RETURNING VALUE(ro_gui) TYPE REF TO zcl_abapgit_gui RAISING zcx_abapgit_exception . CLASS-METHODS get_gui_services RETURNING VALUE(ri_gui_services) TYPE REF TO zif_abapgit_gui_services RAISING zcx_abapgit_exception . CLASS-METHODS get_frontend_services IMPORTING !iv_disable_gui TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_fe_serv) TYPE REF TO zif_abapgit_frontend_services . CLASS-METHODS get_html_viewer IMPORTING !io_container TYPE REF TO cl_gui_container DEFAULT cl_gui_container=>screen0 !iv_disable_query_table TYPE abap_bool DEFAULT abap_true RETURNING VALUE(ri_viewer) TYPE REF TO zif_abapgit_html_viewer . PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA gi_popups TYPE REF TO zif_abapgit_popups . CLASS-DATA gi_html_viewer TYPE REF TO zif_abapgit_html_viewer . CLASS-DATA go_gui TYPE REF TO zcl_abapgit_gui . CLASS-DATA gi_fe_services TYPE REF TO zif_abapgit_frontend_services . CLASS-DATA gi_gui_services TYPE REF TO zif_abapgit_gui_services . ENDCLASS. CLASS zcl_abapgit_convert DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS bitbyte_to_int IMPORTING !iv_bits TYPE clike RETURNING VALUE(rv_int) TYPE i . CLASS-METHODS x_to_bitbyte IMPORTING !iv_x TYPE x RETURNING VALUE(rv_bitbyte) TYPE zif_abapgit_git_definitions=>ty_bitbyte . CLASS-METHODS string_to_xstring_utf8 IMPORTING !iv_string TYPE string RETURNING VALUE(rv_xstring) TYPE xstring RAISING zcx_abapgit_exception . CLASS-METHODS xstring_to_string_utf8 IMPORTING !iv_data TYPE xsequence !iv_length TYPE i OPTIONAL RETURNING VALUE(rv_string) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS string_to_xstring_utf8_bom IMPORTING !iv_string TYPE string RETURNING VALUE(rv_xstring) TYPE xstring RAISING zcx_abapgit_exception . CLASS-METHODS xstring_to_string_utf8_bom IMPORTING !iv_xstring TYPE xstring RETURNING VALUE(rv_string) TYPE string RAISING zcx_abapgit_exception . CLASS-METHODS xstring_to_int IMPORTING !iv_xstring TYPE xstring RETURNING VALUE(rv_i) TYPE i RAISING zcx_abapgit_exception . CLASS-METHODS int_to_xstring4 IMPORTING !iv_i TYPE i RETURNING VALUE(rv_xstring) TYPE xstring . CLASS-METHODS split_string IMPORTING !iv_string TYPE string RETURNING VALUE(rt_lines) TYPE string_table . CLASS-METHODS conversion_exit_isola_output IMPORTING !iv_spras TYPE spras RETURNING VALUE(rv_spras) TYPE laiso . CLASS-METHODS string_to_xstring IMPORTING !iv_str TYPE string RETURNING VALUE(rv_xstr) TYPE xstring RAISING zcx_abapgit_exception . CLASS-METHODS string_to_tab IMPORTING !iv_str TYPE string EXPORTING !ev_size TYPE i !et_tab TYPE STANDARD TABLE . CLASS-METHODS base64_to_xstring IMPORTING !iv_base64 TYPE string RETURNING VALUE(rv_xstr) TYPE xstring . CLASS-METHODS xstring_to_bintab IMPORTING !iv_xstr TYPE xstring EXPORTING !ev_size TYPE i !et_bintab TYPE STANDARD TABLE . CLASS-METHODS language_sap1_to_sap2 IMPORTING im_lang_sap1 TYPE sy-langu RETURNING VALUE(re_lang_sap2) TYPE string EXCEPTIONS no_assignment. CLASS-METHODS language_sap2_to_sap1 IMPORTING im_lang_sap2 TYPE laiso RETURNING VALUE(re_lang_sap1) TYPE sy-langu EXCEPTIONS no_assignment. CLASS-METHODS language_sap1_to_bcp47 IMPORTING im_lang_sap1 TYPE sy-langu RETURNING VALUE(re_lang_bcp47) TYPE string EXCEPTIONS no_assignment. CLASS-METHODS language_bcp47_to_sap1 IMPORTING im_lang_bcp47 TYPE string RETURNING VALUE(re_lang_sap1) TYPE sy-langu EXCEPTIONS no_assignment. TYPES ty_char02 TYPE c LENGTH 2. CLASS-METHODS uccp IMPORTING iv_uccp TYPE string RETURNING VALUE(rv_char) TYPE ty_char02 EXCEPTIONS no_assignment. PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS xstring_remove_bom IMPORTING iv_xstr TYPE xsequence RETURNING VALUE(rv_xstr) TYPE xstring. ENDCLASS. CLASS zcl_abapgit_diff DEFINITION CREATE PUBLIC. PUBLIC SECTION. CONSTANTS c_starting_beacon TYPE i VALUE 1. * assumes data is UTF8 based with newlines METHODS constructor IMPORTING !iv_new TYPE xstring !iv_old TYPE xstring !iv_ignore_indentation TYPE abap_bool DEFAULT abap_false !iv_ignore_comments TYPE abap_bool DEFAULT abap_false !iv_ignore_case TYPE abap_bool DEFAULT abap_false RAISING zcx_abapgit_exception. METHODS get RETURNING VALUE(rt_diff) TYPE zif_abapgit_definitions=>ty_diffs_tt. METHODS stats RETURNING VALUE(rs_count) TYPE zif_abapgit_definitions=>ty_count. METHODS set_patch_new IMPORTING !iv_line_new TYPE i !iv_patch_flag TYPE abap_bool RAISING zcx_abapgit_exception. METHODS set_patch_old IMPORTING !iv_line_old TYPE i !iv_patch_flag TYPE abap_bool RAISING zcx_abapgit_exception. METHODS get_beacons RETURNING VALUE(rt_beacons) TYPE zif_abapgit_definitions=>ty_string_tt. METHODS is_line_patched IMPORTING iv_index TYPE i RETURNING VALUE(rv_patched) TYPE abap_bool RAISING zcx_abapgit_exception. METHODS set_patch_by_old_diff IMPORTING is_diff_old TYPE zif_abapgit_definitions=>ty_diff iv_patch_flag TYPE abap_bool. PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_regexset_tt TYPE STANDARD TABLE OF REF TO cl_abap_regex WITH KEY table_line. DATA mt_beacons TYPE zif_abapgit_definitions=>ty_string_tt. DATA mt_diff TYPE zif_abapgit_definitions=>ty_diffs_tt. DATA ms_stats TYPE zif_abapgit_definitions=>ty_count. DATA mv_compare_mode TYPE c LENGTH 1. DATA mv_ignore_case TYPE abap_bool. METHODS unpack IMPORTING !iv_new TYPE xstring !iv_old TYPE xstring EXPORTING !et_new TYPE rswsourcet !et_old TYPE rswsourcet RAISING zcx_abapgit_exception. METHODS map_beacons. METHODS shortlist. METHODS create_regex_set RETURNING VALUE(rt_regex_set) TYPE ty_regexset_tt. METHODS compute_diff IMPORTING !it_new TYPE rswsourcet !it_old TYPE rswsourcet RETURNING VALUE(rt_diff) TYPE zif_abapgit_definitions=>ty_diffs_tt. METHODS compute_diff_extra IMPORTING !it_new TYPE rswsourcet !it_old TYPE rswsourcet RETURNING VALUE(rt_diff) TYPE zif_abapgit_definitions=>ty_diffs_tt. METHODS calculate_stats. METHODS adjust_diff. ENDCLASS. CLASS zcl_abapgit_log DEFINITION CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_log . METHODS constructor IMPORTING iv_title TYPE string OPTIONAL. CLASS-METHODS from_exception IMPORTING io_x TYPE REF TO cx_root RETURNING VALUE(ro_log) TYPE REF TO zcl_abapgit_log. PROTECTED SECTION. TYPES: BEGIN OF ty_log, "in order of occurrence msg TYPE zif_abapgit_log=>ty_msg, item TYPE zif_abapgit_definitions=>ty_item, exception TYPE REF TO cx_root, END OF ty_log . DATA: mt_log TYPE STANDARD TABLE OF ty_log WITH DEFAULT KEY . DATA mv_title TYPE string . METHODS get_messages_status IMPORTING !it_msg TYPE zif_abapgit_log=>ty_msgs RETURNING VALUE(rv_status) TYPE sy-msgty . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_path DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. CLASS-METHODS split_file_location IMPORTING iv_fullpath TYPE string EXPORTING ev_path TYPE string ev_filename TYPE string. CLASS-METHODS is_root IMPORTING iv_path TYPE string RETURNING VALUE(rv_yes) TYPE abap_bool. CLASS-METHODS is_subdir IMPORTING iv_path TYPE string iv_parent TYPE string RETURNING VALUE(rv_yes) TYPE abap_bool. CLASS-METHODS change_dir IMPORTING iv_cur_dir TYPE string iv_cd TYPE string RETURNING VALUE(rv_path) TYPE string. CLASS-METHODS get_filename_from_syspath IMPORTING iv_path TYPE string RETURNING VALUE(rv_filename) TYPE string. ENDCLASS. CLASS zcl_abapgit_string_buffer DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS new RETURNING VALUE(ro_me) TYPE REF TO zcl_abapgit_string_buffer. METHODS add IMPORTING !iv_str TYPE string RETURNING VALUE(ro_me) TYPE REF TO zcl_abapgit_string_buffer. METHODS join_and_flush RETURNING VALUE(rv_str) TYPE string. METHODS join_w_newline_and_flush RETURNING VALUE(rv_str) TYPE string. METHODS join_w_space_and_flush RETURNING VALUE(rv_str) TYPE string. PROTECTED SECTION. PRIVATE SECTION. DATA mt_buffer TYPE string_table. ENDCLASS. CLASS zcl_abapgit_string_map DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF ty_entry, k TYPE string, v TYPE string, END OF ty_entry . TYPES: ty_entries TYPE SORTED TABLE OF ty_entry WITH UNIQUE KEY k . DATA mt_entries TYPE ty_entries READ-ONLY . CLASS-METHODS create IMPORTING !iv_case_insensitive TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_string_map . METHODS constructor IMPORTING !iv_case_insensitive TYPE abap_bool DEFAULT abap_false . METHODS get IMPORTING !iv_key TYPE string RETURNING VALUE(rv_val) TYPE string . METHODS has IMPORTING !iv_key TYPE string RETURNING VALUE(rv_has) TYPE abap_bool . METHODS set IMPORTING !iv_key TYPE string !iv_val TYPE csequence OPTIONAL RETURNING VALUE(ro_map) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . METHODS size RETURNING VALUE(rv_size) TYPE i . METHODS is_empty RETURNING VALUE(rv_yes) TYPE abap_bool . METHODS delete IMPORTING !iv_key TYPE string RAISING zcx_abapgit_exception . METHODS clear RAISING zcx_abapgit_exception . METHODS to_abap CHANGING !cs_container TYPE any RAISING zcx_abapgit_exception . METHODS strict IMPORTING !iv_strict TYPE abap_bool DEFAULT abap_true RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_string_map . METHODS freeze . METHODS merge IMPORTING !io_string_map TYPE REF TO zcl_abapgit_string_map RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_string_map RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. DATA mv_read_only TYPE abap_bool. DATA mv_is_strict TYPE abap_bool. DATA mv_case_insensitive TYPE abap_bool. ENDCLASS. CLASS zcl_abapgit_timer DEFINITION FINAL CREATE PRIVATE. PUBLIC SECTION. CLASS-METHODS create IMPORTING !iv_text TYPE string OPTIONAL !iv_count TYPE i OPTIONAL PREFERRED PARAMETER iv_text RETURNING VALUE(ro_timer) TYPE REF TO zcl_abapgit_timer. METHODS constructor IMPORTING !iv_text TYPE string OPTIONAL !iv_count TYPE i OPTIONAL. METHODS start RETURNING VALUE(ro_timer) TYPE REF TO zcl_abapgit_timer. METHODS end IMPORTING !iv_output_as_status_message TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_result) TYPE string. PROTECTED SECTION. PRIVATE SECTION. DATA mv_text TYPE string. DATA mv_count TYPE i. DATA mv_timer TYPE timestampl. ENDCLASS. CLASS zcl_abapgit_utils DEFINITION FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS is_binary IMPORTING !iv_data TYPE xstring RETURNING VALUE(rv_is_binary) TYPE abap_bool. CLASS-METHODS is_valid_email IMPORTING iv_email TYPE string RETURNING VALUE(rv_valid) TYPE abap_bool. CLASS-METHODS check_eol IMPORTING !iv_data TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_xml DEFINITION ABSTRACT CREATE PUBLIC . PUBLIC SECTION. METHODS: constructor IMPORTING iv_filename TYPE string OPTIONAL. PROTECTED SECTION. DATA: mi_ixml TYPE REF TO if_ixml, mi_xml_doc TYPE REF TO if_ixml_document, ms_metadata TYPE zif_abapgit_definitions=>ty_metadata, mv_filename TYPE string. CONSTANTS: c_abapgit_tag TYPE string VALUE 'abapGit' ##NO_TEXT, c_attr_version TYPE string VALUE 'version' ##NO_TEXT, c_attr_serializer TYPE string VALUE 'serializer' ##NO_TEXT, c_attr_serializer_version TYPE string VALUE 'serializer_version' ##NO_TEXT. METHODS to_xml IMPORTING iv_normalize TYPE abap_bool DEFAULT abap_true RETURNING VALUE(rv_xml) TYPE string. METHODS parse IMPORTING iv_xml TYPE string RAISING zcx_abapgit_exception. PRIVATE SECTION. METHODS error IMPORTING !ii_parser TYPE REF TO if_ixml_parser RAISING zcx_abapgit_exception . METHODS raise_version_mismatch IMPORTING !iv_vers TYPE string RAISING zcx_abapgit_exception . METHODS raise_exception_for IMPORTING !ii_error TYPE REF TO if_ixml_parse_error RAISING zcx_abapgit_exception . ENDCLASS. CLASS zcl_abapgit_xml_input DEFINITION INHERITING FROM zcl_abapgit_xml CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_xml_input. METHODS constructor IMPORTING !iv_xml TYPE clike !iv_filename TYPE string OPTIONAL RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. METHODS fix_xml. ENDCLASS. CLASS zcl_abapgit_xml_output DEFINITION INHERITING FROM zcl_abapgit_xml CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_xml_output. PROTECTED SECTION. PRIVATE SECTION. DATA mi_raw TYPE REF TO if_ixml_element . METHODS build_asx_node RETURNING VALUE(ri_element) TYPE REF TO if_ixml_element . ENDCLASS. CLASS zcl_abapgit_xml_pretty DEFINITION CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS print IMPORTING !iv_xml TYPE string !iv_ignore_errors TYPE abap_bool DEFAULT abap_true !iv_unpretty TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_xml) TYPE string RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_factory DEFINITION CREATE PRIVATE . PUBLIC SECTION. CLASS-METHODS get_tadir RETURNING VALUE(ri_tadir) TYPE REF TO zif_abapgit_tadir . CLASS-METHODS get_sap_package IMPORTING !iv_package TYPE devclass RETURNING VALUE(ri_sap_package) TYPE REF TO zif_abapgit_sap_package . CLASS-METHODS get_code_inspector IMPORTING !iv_package TYPE devclass RETURNING VALUE(ri_code_inspector) TYPE REF TO zif_abapgit_code_inspector RAISING zcx_abapgit_exception . CLASS-METHODS get_stage_logic RETURNING VALUE(ri_logic) TYPE REF TO zif_abapgit_stage_logic . CLASS-METHODS get_cts_api RETURNING VALUE(ri_cts_api) TYPE REF TO zif_abapgit_cts_api . CLASS-METHODS get_default_transport RETURNING VALUE(ri_default_transport) TYPE REF TO zif_abapgit_default_transport RAISING zcx_abapgit_exception. CLASS-METHODS get_environment RETURNING VALUE(ri_environment) TYPE REF TO zif_abapgit_environment . CLASS-METHODS get_longtexts RETURNING VALUE(ri_longtexts) TYPE REF TO zif_abapgit_longtexts . CLASS-METHODS get_http_agent RETURNING VALUE(ri_http_agent) TYPE REF TO zif_abapgit_http_agent . CLASS-METHODS get_lxe_texts RETURNING VALUE(ri_lxe_texts) TYPE REF TO zif_abapgit_lxe_texts . CLASS-METHODS get_sap_namespace RETURNING VALUE(ri_namespace) TYPE REF TO zif_abapgit_sap_namespace . CLASS-METHODS get_sap_report RETURNING VALUE(ri_report) TYPE REF TO zif_abapgit_sap_report. CLASS-METHODS get_function_module RETURNING VALUE(ri_function_module) TYPE REF TO zif_abapgit_function_module. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_sap_package, package TYPE devclass, instance TYPE REF TO zif_abapgit_sap_package, END OF ty_sap_package . TYPES: ty_sap_packages TYPE HASHED TABLE OF ty_sap_package WITH UNIQUE KEY package . TYPES: BEGIN OF ty_code_inspector_pack, package TYPE devclass, instance TYPE REF TO zif_abapgit_code_inspector, END OF ty_code_inspector_pack . TYPES: ty_code_inspector_packs TYPE HASHED TABLE OF ty_code_inspector_pack WITH UNIQUE KEY package . CLASS-DATA gi_tadir TYPE REF TO zif_abapgit_tadir . CLASS-DATA gt_sap_package TYPE ty_sap_packages . CLASS-DATA gt_code_inspector TYPE ty_code_inspector_packs . CLASS-DATA gi_stage_logic TYPE REF TO zif_abapgit_stage_logic . CLASS-DATA gi_cts_api TYPE REF TO zif_abapgit_cts_api . CLASS-DATA gi_environment TYPE REF TO zif_abapgit_environment . CLASS-DATA gi_longtext TYPE REF TO zif_abapgit_longtexts . CLASS-DATA gi_http_agent TYPE REF TO zif_abapgit_http_agent . CLASS-DATA gi_lxe_texts TYPE REF TO zif_abapgit_lxe_texts . CLASS-DATA gi_sap_namespace TYPE REF TO zif_abapgit_sap_namespace . CLASS-DATA gi_sap_report TYPE REF TO zif_abapgit_sap_report. CLASS-DATA gi_function_module TYPE REF TO zif_abapgit_function_module. CLASS-DATA gi_default_transport TYPE REF TO zif_abapgit_default_transport . ENDCLASS. CLASS ZCL_ABAPGIT_FACTORY IMPLEMENTATION. METHOD get_code_inspector. DATA: ls_code_inspector LIKE LINE OF gt_code_inspector. FIELD-SYMBOLS: TYPE ty_code_inspector_pack. READ TABLE gt_code_inspector ASSIGNING WITH TABLE KEY package = iv_package. IF sy-subrc <> 0. ls_code_inspector-package = iv_package. CREATE OBJECT ls_code_inspector-instance TYPE zcl_abapgit_code_inspector EXPORTING iv_package = iv_package. INSERT ls_code_inspector INTO TABLE gt_code_inspector ASSIGNING . ENDIF. ri_code_inspector = -instance. ENDMETHOD. METHOD get_cts_api. IF gi_cts_api IS NOT BOUND. CREATE OBJECT gi_cts_api TYPE zcl_abapgit_cts_api. ENDIF. ri_cts_api = gi_cts_api. ENDMETHOD. METHOD get_default_transport. IF gi_default_transport IS NOT BOUND. CREATE OBJECT gi_default_transport TYPE zcl_abapgit_default_transport. ENDIF. ri_default_transport = gi_default_transport. ENDMETHOD. METHOD get_environment. IF gi_environment IS NOT BOUND. CREATE OBJECT gi_environment TYPE zcl_abapgit_environment. ENDIF. ri_environment = gi_environment. ENDMETHOD. METHOD get_function_module. IF gi_function_module IS INITIAL. CREATE OBJECT gi_function_module TYPE zcl_abapgit_function_module. ENDIF. ri_function_module = gi_function_module. ENDMETHOD. METHOD get_http_agent. IF gi_http_agent IS INITIAL. gi_http_agent = zcl_abapgit_http_agent=>create( ). ENDIF. ri_http_agent = gi_http_agent. ENDMETHOD. METHOD get_longtexts. IF gi_longtext IS NOT BOUND. CREATE OBJECT gi_longtext TYPE zcl_abapgit_longtexts. ENDIF. ri_longtexts = gi_longtext. ENDMETHOD. METHOD get_lxe_texts. IF gi_lxe_texts IS NOT BOUND. CREATE OBJECT gi_lxe_texts TYPE zcl_abapgit_lxe_texts. ENDIF. ri_lxe_texts = gi_lxe_texts. ENDMETHOD. METHOD get_sap_namespace. IF gi_sap_namespace IS NOT BOUND. CREATE OBJECT gi_sap_namespace TYPE zcl_abapgit_sap_namespace. ENDIF. ri_namespace = gi_sap_namespace. ENDMETHOD. METHOD get_sap_package. DATA: ls_sap_package TYPE ty_sap_package. FIELD-SYMBOLS: TYPE ty_sap_package. READ TABLE gt_sap_package ASSIGNING WITH TABLE KEY package = iv_package. IF sy-subrc <> 0. ls_sap_package-package = iv_package. CREATE OBJECT ls_sap_package-instance TYPE zcl_abapgit_sap_package EXPORTING iv_package = iv_package. INSERT ls_sap_package INTO TABLE gt_sap_package ASSIGNING . ENDIF. ri_sap_package = -instance. ENDMETHOD. METHOD get_sap_report. IF gi_sap_report IS NOT BOUND. CREATE OBJECT gi_sap_report TYPE zcl_abapgit_sap_report. ENDIF. ri_report = gi_sap_report. ENDMETHOD. METHOD get_stage_logic. IF gi_stage_logic IS INITIAL. CREATE OBJECT gi_stage_logic TYPE zcl_abapgit_stage_logic. ENDIF. ri_logic = gi_stage_logic. ENDMETHOD. METHOD get_tadir. IF gi_tadir IS INITIAL. CREATE OBJECT gi_tadir TYPE zcl_abapgit_tadir. ENDIF. ri_tadir = gi_tadir. ENDMETHOD. ENDCLASS. CLASS ZCL_ABAPGIT_XML_PRETTY IMPLEMENTATION. METHOD print. DATA: li_ixml TYPE REF TO if_ixml, li_xml_doc TYPE REF TO if_ixml_document, li_stream_factory TYPE REF TO if_ixml_stream_factory, li_istream TYPE REF TO if_ixml_istream, li_parser TYPE REF TO if_ixml_parser, lv_xstring TYPE xstring, li_encoding TYPE REF TO if_ixml_encoding, li_ostream TYPE REF TO if_ixml_ostream, li_renderer TYPE REF TO if_ixml_renderer. ASSERT NOT iv_xml IS INITIAL. li_ixml = cl_ixml=>create( ). li_xml_doc = li_ixml->create_document( ). li_stream_factory = li_ixml->create_stream_factory( ). li_istream = li_stream_factory->create_istream_xstring( zcl_abapgit_convert=>string_to_xstring_utf8( iv_xml ) ). li_parser = li_ixml->create_parser( stream_factory = li_stream_factory istream = li_istream document = li_xml_doc ). li_parser->set_normalizing( abap_true ). IF li_parser->parse( ) <> 0. IF iv_ignore_errors = abap_true. rv_xml = iv_xml. RETURN. ELSE. zcx_abapgit_exception=>raise( 'error parsing xml' ). ENDIF. ENDIF. li_ostream = li_stream_factory->create_ostream_xstring( lv_xstring ). li_encoding = li_ixml->create_encoding( character_set = 'utf-8' byte_order = if_ixml_encoding=>co_big_endian ). li_xml_doc->set_encoding( li_encoding ). li_renderer = li_ixml->create_renderer( ostream = li_ostream document = li_xml_doc ). li_renderer->set_normalizing( boolc( iv_unpretty = abap_false ) ). li_renderer->render( ). rv_xml = zcl_abapgit_convert=>xstring_to_string_utf8_bom( lv_xstring ). REPLACE FIRST OCCURRENCE OF 'utf-8' IN rv_xml WITH 'utf-16'. ENDMETHOD. ENDCLASS. CLASS ZCL_ABAPGIT_XML_OUTPUT IMPLEMENTATION. METHOD build_asx_node. DATA: li_attr TYPE REF TO if_ixml_attribute. ri_element = mi_xml_doc->create_element_ns( name = 'abap' prefix = 'asx' ). li_attr = mi_xml_doc->create_attribute_ns( 'version' ). li_attr->if_ixml_node~set_value( '1.0' ). ri_element->set_attribute_node_ns( li_attr ). li_attr = mi_xml_doc->create_attribute_ns( name = 'asx' prefix = 'xmlns' ). li_attr->if_ixml_node~set_value( 'http://www.sap.com/abapxml' ). ri_element->set_attribute_node_ns( li_attr ). ENDMETHOD. METHOD zif_abapgit_xml_output~add. DATA: li_node TYPE REF TO if_ixml_node, li_doc TYPE REF TO if_ixml_document, lt_stab TYPE abap_trans_srcbind_tab. FIELD-SYMBOLS: LIKE LINE OF lt_stab. ASSERT NOT iv_name IS INITIAL. IF ig_data IS INITIAL. RETURN. ENDIF. APPEND INITIAL LINE TO lt_stab ASSIGNING . -name = iv_name. GET REFERENCE OF ig_data INTO -value. li_doc = cl_ixml=>create( )->create_document( ). CALL TRANSFORMATION id OPTIONS initial_components = 'suppress' SOURCE (lt_stab) RESULT XML li_doc. li_node = mi_xml_doc->get_root( )->get_first_child( ). IF li_node IS BOUND. mi_xml_doc->get_root( )->get_first_child( )->get_first_child( )->append_child( li_doc->get_root( )->get_first_child( )->get_first_child( )->get_first_child( ) ). ELSE. mi_xml_doc->get_root( )->append_child( li_doc->get_root( )->get_first_child( ) ). ENDIF. ENDMETHOD. METHOD zif_abapgit_xml_output~add_xml. DATA: li_element TYPE REF TO if_ixml_element. li_element = mi_xml_doc->create_element( iv_name ). li_element->append_child( ii_xml ). mi_xml_doc->get_root( )->get_first_child( )->get_first_child( )->append_child( li_element ). ENDMETHOD. METHOD zif_abapgit_xml_output~render. DATA: li_git TYPE REF TO if_ixml_element, li_abap TYPE REF TO if_ixml_element. IF mi_raw IS INITIAL. li_abap ?= mi_xml_doc->get_root( )->get_first_child( ). mi_xml_doc->get_root( )->remove_child( li_abap ). IF li_abap IS INITIAL. li_abap = build_asx_node( ). ENDIF. ELSE. li_abap = mi_raw. ENDIF. li_git = mi_xml_doc->create_element( c_abapgit_tag ). li_git->set_attribute( name = c_attr_version value = zif_abapgit_version=>c_xml_version ). IF NOT is_metadata IS INITIAL. li_git->set_attribute( name = c_attr_serializer value = is_metadata-class ). li_git->set_attribute( name = c_attr_serializer_version value = is_metadata-version ). ENDIF. li_git->append_child( li_abap ). mi_xml_doc->get_root( )->append_child( li_git ). rv_xml = to_xml( iv_normalize ). ENDMETHOD. METHOD zif_abapgit_xml_output~set_raw. mi_raw = ii_raw. ENDMETHOD. ENDCLASS. CLASS ZCL_ABAPGIT_XML_INPUT IMPLEMENTATION. METHOD constructor. super->constructor( iv_filename ). parse( iv_xml ). fix_xml( ). ENDMETHOD. METHOD fix_xml. DATA: li_git TYPE REF TO if_ixml_element, li_abap TYPE REF TO if_ixml_node. li_git ?= mi_xml_doc->find_from_name_ns( depth = 0 name = c_abapgit_tag ). li_abap = li_git->get_first_child( ). mi_xml_doc->get_root( )->remove_child( li_git ). mi_xml_doc->get_root( )->append_child( li_abap ). ENDMETHOD. METHOD zif_abapgit_xml_input~get_metadata. rs_metadata = ms_metadata. ENDMETHOD. METHOD zif_abapgit_xml_input~get_raw. ri_raw = mi_xml_doc. ENDMETHOD. METHOD zif_abapgit_xml_input~read. DATA: lx_error TYPE REF TO cx_transformation_error, lt_rtab TYPE abap_trans_resbind_tab. FIELD-SYMBOLS: LIKE LINE OF lt_rtab. ASSERT NOT iv_name IS INITIAL. CLEAR cg_data. "Initialize result to avoid problems with empty values APPEND INITIAL LINE TO lt_rtab ASSIGNING . -name = iv_name. GET REFERENCE OF cg_data INTO -value. TRY. CALL TRANSFORMATION id OPTIONS value_handling = 'accept_data_loss' SOURCE XML mi_xml_doc RESULT (lt_rtab). CATCH cx_transformation_error INTO lx_error. IF mv_filename IS INITIAL. zcx_abapgit_exception=>raise( lx_error->if_message~get_text( ) ). ELSE. zcx_abapgit_exception=>raise( |File { mv_filename }: { lx_error->if_message~get_text( ) }| ). ENDIF. ENDTRY. ENDMETHOD. ENDCLASS. CLASS zcl_abapgit_xml IMPLEMENTATION. METHOD constructor. mi_ixml = cl_ixml=>create( ). mi_xml_doc = mi_ixml->create_document( ). mv_filename = iv_filename. ENDMETHOD. METHOD error. IF ii_parser->num_errors( ) <> 0. raise_exception_for( ii_parser->get_error( 0 ) ). ENDIF. IF mv_filename IS INITIAL. zcx_abapgit_exception=>raise( |Error while parsing XML| ). ELSE. zcx_abapgit_exception=>raise( |Error while parsing XML file { mv_filename }| ). ENDIF. ENDMETHOD. METHOD parse. DATA: li_stream_factory TYPE REF TO if_ixml_stream_factory, li_istream TYPE REF TO if_ixml_istream, li_element TYPE REF TO if_ixml_element, li_version TYPE REF TO if_ixml_node, li_parser TYPE REF TO if_ixml_parser. ASSERT NOT iv_xml IS INITIAL. li_stream_factory = mi_ixml->create_stream_factory( ). li_istream = li_stream_factory->create_istream_string( iv_xml ). li_parser = mi_ixml->create_parser( stream_factory = li_stream_factory istream = li_istream document = mi_xml_doc ). li_parser->add_strip_space_element( ). IF li_parser->parse( ) <> 0. error( li_parser ). ENDIF. li_istream->close( ). li_element = mi_xml_doc->find_from_name_ns( depth = 0 name = c_abapgit_tag ). li_version = li_element->if_ixml_node~get_attributes( )->get_named_item_ns( c_attr_version ). IF li_version->get_value( ) <> zif_abapgit_version=>c_xml_version. raise_version_mismatch( li_version->get_value( ) ). ENDIF. * buffer serializer metadata. Git node will be removed lateron ms_metadata-class = li_element->get_attribute_ns( c_attr_serializer ). ms_metadata-version = li_element->get_attribute_ns( c_attr_serializer_version ). ENDMETHOD. METHOD raise_exception_for. DATA lv_message TYPE string. lv_message = |XML parser error: { ii_error->get_reason( ) }, | && |Line { ii_error->get_line( ) } | && |Col. { ii_error->get_column( ) }|. IF mv_filename IS NOT INITIAL. lv_message = lv_message && | File { mv_filename }|. ENDIF. zcx_abapgit_exception=>raise( lv_message ). ENDMETHOD. METHOD raise_version_mismatch. DATA lv_text TYPE string. lv_text = |The XML versions do not match, expected: { zif_abapgit_version=>c_xml_version }, actual: { iv_vers }|. IF mv_filename IS NOT INITIAL. lv_text = lv_text && |, file: { mv_filename }|. ENDIF. lv_text = lv_text && | (see https://docs.abapgit.org/other-xml-mismatch.html)|. zcx_abapgit_exception=>raise( lv_text ). ENDMETHOD. METHOD to_xml. * will render to codepage UTF-16 DATA: li_ostream TYPE REF TO if_ixml_ostream, li_renderer TYPE REF TO if_ixml_renderer, li_streamfactory TYPE REF TO if_ixml_stream_factory. li_streamfactory = mi_ixml->create_stream_factory( ). li_ostream = li_streamfactory->create_ostream_cstring( rv_xml ). li_renderer = mi_ixml->create_renderer( ostream = li_ostream document = mi_xml_doc ). li_renderer->set_normalizing( iv_normalize ). li_renderer->render( ). " handling of BOM moved to zcl_abapgit_convert=>string_to_xstring_utf8_bom ENDMETHOD. ENDCLASS. CLASS zcl_abapgit_utils IMPLEMENTATION. METHOD check_eol. " Check if data is using CRLF as EOL separator. If only LF is used, data was likely " edited by external tools IF iv_data IS NOT INITIAL AND iv_data CS cl_abap_char_utilities=>newline AND iv_data NS cl_abap_char_utilities=>cr_lf. zcx_abapgit_exception=>raise( 'Incorrect source format: Requires CRLF instead of LF' ). ENDIF. ENDMETHOD. METHOD is_binary. " Previously we did a simple char range test described here " stackoverflow.com/questions/277521/how-to-identify-the-file-content-as-ascii-or-binary " but this is insufficient if the data contains German umlauts and other special characters. " Therefore we adopted another algorithm, which is similarly used by AL11 " RSWATCH0 / GUESS_FILE_TYPE " We count non-printable characters if there are more than XX% it's binary. CONSTANTS: lc_binary_threshold TYPE i VALUE 10, lc_bytes_to_check TYPE i VALUE 1000. DATA: lv_string_data TYPE string, lv_printable_chars_count TYPE i, lv_percentage TYPE i, lv_data TYPE xstring, lv_xlen TYPE i. lv_xlen = xstrlen( iv_data ). IF lv_xlen = 0. RETURN. ENDIF. lv_xlen = nmin( val1 = lv_xlen val2 = lc_bytes_to_check ). lv_data = iv_data(lv_xlen). TRY. lv_string_data = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ). CATCH zcx_abapgit_exception. " Contains data that does not convert to UTF-8 so consider it binary rv_is_binary = abap_true. RETURN. ENDTRY. REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>newline IN lv_string_data WITH space. REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN lv_string_data WITH space. FIND ALL OCCURRENCES OF REGEX '[^[:print:]]' IN lv_string_data MATCH COUNT lv_printable_chars_count. lv_percentage = lv_printable_chars_count * 100 / strlen( lv_string_data ). rv_is_binary = boolc( lv_percentage > lc_binary_threshold ). ENDMETHOD. METHOD is_valid_email. " Email address validation (RFC 5322) " https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s01.html CONSTANTS lc_email_regex TYPE string VALUE '[\w!#$%&*+/=?`{|}~^-]+(?:\.[\w!#$%&*+/=?`{|}~^-]+)*@(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,6}'. IF iv_email IS INITIAL. rv_valid = abap_true. ELSE. FIND REGEX lc_email_regex IN iv_email. rv_valid = boolc( sy-subrc = 0 ). ENDIF. ENDMETHOD. ENDCLASS. CLASS zcl_abapgit_timer IMPLEMENTATION. METHOD constructor. mv_text = iv_text. mv_count = iv_count. ENDMETHOD. METHOD create. CREATE OBJECT ro_timer EXPORTING iv_text = iv_text iv_count = iv_count. ENDMETHOD. METHOD end. DATA: lv_timestamp TYPE timestampl, lv_runtime TYPE timestampl, lv_sec TYPE p LENGTH 11 DECIMALS 2. IF mv_timer IS INITIAL. rv_result = 'Runtime measurement has not been started'. ELSE. GET TIME STAMP FIELD lv_timestamp. TRY. lv_runtime = cl_abap_tstmp=>subtract( tstmp1 = lv_timestamp tstmp2 = mv_timer ). lv_sec = lv_runtime. " round to 2 decimal places IF mv_count = 1. rv_result = |1 object, |. ELSEIF mv_count > 1. rv_result = |{ mv_count } objects, |. ENDIF. rv_result = rv_result && |{ lv_sec } seconds|. CATCH cx_parameter_invalid. rv_result = 'Error getting runtime measurement'. ENDTRY. ENDIF. IF iv_output_as_status_message = abap_true. MESSAGE s000(oo) WITH mv_text rv_result. ENDIF. IF mv_text IS NOT INITIAL. rv_result = |{ mv_text } { rv_result }|. ENDIF. ENDMETHOD. METHOD start. GET TIME STAMP FIELD mv_timer. ro_timer = me. ENDMETHOD. ENDCLASS. CLASS ZCL_ABAPGIT_STRING_MAP IMPLEMENTATION. METHOD clear. IF mv_read_only = abap_true. zcx_abapgit_exception=>raise( 'Cannot clear. This string map is immutable' ). ENDIF. CLEAR mt_entries. ENDMETHOD. METHOD constructor. mv_is_strict = abap_true. mv_case_insensitive = iv_case_insensitive. ENDMETHOD. METHOD create. CREATE OBJECT ro_instance EXPORTING iv_case_insensitive = iv_case_insensitive. ENDMETHOD. METHOD delete. IF mv_read_only = abap_true. zcx_abapgit_exception=>raise( 'Cannot delete. This string map is immutable' ). ENDIF. DELETE mt_entries WHERE k = iv_key. ENDMETHOD. METHOD freeze. mv_read_only = abap_true. ENDMETHOD. METHOD get. DATA lv_key LIKE iv_key. FIELD-SYMBOLS LIKE LINE OF mt_entries. IF mv_case_insensitive = abap_true. lv_key = to_upper( iv_key ). ELSE. lv_key = iv_key. ENDIF. READ TABLE mt_entries ASSIGNING WITH KEY k = lv_key. IF sy-subrc IS INITIAL. rv_val = -v. ENDIF. ENDMETHOD. METHOD has. READ TABLE mt_entries TRANSPORTING NO FIELDS WITH KEY k = iv_key. rv_has = boolc( sy-subrc IS INITIAL ). ENDMETHOD. METHOD is_empty. rv_yes = boolc( lines( mt_entries ) = 0 ). ENDMETHOD. METHOD merge. FIELD-SYMBOLS LIKE LINE OF mt_entries. LOOP AT io_string_map->mt_entries ASSIGNING . set( iv_key = -k iv_val = -v ). ENDLOOP. ro_instance = me. ENDMETHOD. METHOD set. DATA lv_key LIKE iv_key. DATA ls_entry LIKE LINE OF mt_entries. FIELD-SYMBOLS LIKE LINE OF mt_entries. IF mv_read_only = abap_true. zcx_abapgit_exception=>raise( 'Cannot set. This string map is immutable' ). ENDIF. IF mv_case_insensitive = abap_true. lv_key = to_upper( iv_key ). ELSE. lv_key = iv_key. ENDIF. READ TABLE mt_entries ASSIGNING WITH KEY k = lv_key. IF sy-subrc IS INITIAL. -v = iv_val. ELSE. ls_entry-k = lv_key. ls_entry-v = iv_val. INSERT ls_entry INTO TABLE mt_entries. ENDIF. ro_map = me. ENDMETHOD. METHOD size. rv_size = lines( mt_entries ). ENDMETHOD. METHOD strict. mv_is_strict = iv_strict. ro_instance = me. ENDMETHOD. METHOD to_abap. DATA lo_type TYPE REF TO cl_abap_typedescr. DATA lv_field TYPE string. FIELD-SYMBOLS LIKE LINE OF mt_entries. FIELD-SYMBOLS TYPE any. lo_type = cl_abap_typedescr=>describe_by_data( cs_container ). IF lo_type->type_kind <> cl_abap_typedescr=>typekind_struct1 AND lo_type->type_kind <> cl_abap_typedescr=>typekind_struct2. zcx_abapgit_exception=>raise( 'Only structures supported' ). ENDIF. LOOP AT mt_entries ASSIGNING . lv_field = to_upper( -k ). ASSIGN COMPONENT lv_field OF STRUCTURE cs_container TO . IF sy-subrc = 0. " TODO check target type ? = -v. ELSEIF mv_is_strict = abap_false. CONTINUE. ELSE. zcx_abapgit_exception=>raise( |Component { lv_field } not found in target| ). ENDIF. ENDLOOP. ENDMETHOD. ENDCLASS. CLASS ZCL_ABAPGIT_STRING_BUFFER IMPLEMENTATION. METHOD add. APPEND iv_str TO mt_buffer. ro_me = me. ENDMETHOD. METHOD join_and_flush. rv_str = concat_lines_of( mt_buffer ). CLEAR mt_buffer. ENDMETHOD. METHOD join_w_newline_and_flush. rv_str = concat_lines_of( table = mt_buffer sep = cl_abap_char_utilities=>newline ). CLEAR mt_buffer. ENDMETHOD. METHOD join_w_space_and_flush. rv_str = concat_lines_of( table = mt_buffer sep = ` ` ). CLEAR mt_buffer. ENDMETHOD. METHOD new. CREATE OBJECT ro_me. ENDMETHOD. ENDCLASS. CLASS ZCL_ABAPGIT_PATH IMPLEMENTATION. METHOD change_dir. DATA: lv_last TYPE i, lv_temp TYPE string. lv_last = strlen( iv_cur_dir ) - 1. IF iv_cd = '' OR iv_cd = '.'. " No change rv_path = iv_cur_dir. ELSEIF iv_cd+0(1) = '/'. " Absolute path rv_path = iv_cd. ELSEIF iv_cd = '..'. " CD back IF iv_cur_dir = '/' OR iv_cur_dir = ''. " Back from root = root rv_path = iv_cur_dir. ELSE. lv_temp = reverse( iv_cur_dir ). IF lv_temp+0(1) = '/'. SHIFT lv_temp BY 1 PLACES LEFT. ENDIF. SHIFT lv_temp UP TO '/' LEFT. rv_path = reverse( lv_temp ). ENDIF. ELSEIF iv_cur_dir+lv_last(1) = '/'. " Append cd to cur_dir separated by / rv_path = iv_cur_dir && iv_cd. ELSE. rv_path = iv_cur_dir && '/' && iv_cd. ENDIF. " TODO: improve logic and cases ENDMETHOD. METHOD get_filename_from_syspath. DATA: lv_split TYPE c LENGTH 1, lv_index TYPE i, lt_split TYPE TABLE OF string. " filename | c:\filename | /dir/filename | \\server\filename IF iv_path CA '/'. lv_split = '/'. ELSE. lv_split = '\'. ENDIF. SPLIT iv_path AT lv_split INTO TABLE lt_split. lv_index = lines( lt_split ). READ TABLE lt_split INDEX lv_index INTO rv_filename. ENDMETHOD. METHOD is_root. rv_yes = boolc( iv_path = '/' ). ENDMETHOD. METHOD is_subdir. DATA lv_len TYPE i. DATA lv_last TYPE i. lv_len = strlen( iv_parent ). lv_last = lv_len - 1. rv_yes = boolc( strlen( iv_path ) > lv_len AND iv_path+0(lv_len) = iv_parent AND ( iv_parent+lv_last(1) = '/' OR iv_path+lv_len(1) = '/' ) ). ENDMETHOD. METHOD split_file_location. DATA: lv_cnt TYPE i, lv_len TYPE i. FIND FIRST OCCURRENCE OF REGEX '^/(.*/)?' IN iv_fullpath MATCH COUNT lv_cnt MATCH LENGTH lv_len. IF lv_cnt > 0. ev_path = iv_fullpath+0(lv_len). ev_filename = iv_fullpath+lv_len. ELSE. CLEAR ev_path. ev_filename = iv_fullpath. ENDIF. ev_filename = cl_http_utility=>unescape_url( escaped = ev_filename ). ENDMETHOD. ENDCLASS. CLASS zcl_abapgit_log IMPLEMENTATION. METHOD constructor. zif_abapgit_log~set_title( iv_title ). ENDMETHOD. METHOD from_exception. CREATE OBJECT ro_log. IF io_x IS BOUND. ro_log->zif_abapgit_log~add_exception( io_x ). ENDIF. ENDMETHOD. METHOD get_messages_status. DATA lr_msg TYPE REF TO zif_abapgit_log=>ty_msg. rv_status = 'S'. LOOP AT it_msg REFERENCE INTO lr_msg. CASE lr_msg->type. WHEN 'E' OR 'A' OR 'X'. rv_status = 'E'. "not okay EXIT. WHEN 'W'. rv_status = 'W'. "maybe CONTINUE. WHEN 'S' OR 'I'. IF rv_status <> 'W'. rv_status = 'S'. "okay ENDIF. CONTINUE. WHEN OTHERS. "unknown CONTINUE. ENDCASE. ENDLOOP. ENDMETHOD. METHOD zif_abapgit_log~add. FIELD-SYMBOLS: LIKE LINE OF mt_log. APPEND INITIAL LINE TO mt_log ASSIGNING . -msg-text = iv_msg. -msg-type = iv_type. -item = is_item. -exception = ix_exc. CASE iv_type. WHEN 'E' OR 'A' OR 'X'. -msg-level = zif_abapgit_log=>c_log_level-error. WHEN 'W'. -msg-level = zif_abapgit_log=>c_log_level-warning. WHEN 'S' OR 'I'. -msg-level = zif_abapgit_log=>c_log_level-info. WHEN OTHERS. "unknown ASSERT 0 = 1. ENDCASE. ENDMETHOD. METHOD zif_abapgit_log~add_error. zif_abapgit_log~add( iv_msg = iv_msg iv_type = 'E' is_item = is_item ). ENDMETHOD. METHOD zif_abapgit_log~add_exception. DATA lx_exc TYPE REF TO cx_root. DATA lv_msg TYPE string. lx_exc = ix_exc. DO. lv_msg = lx_exc->get_text( ). zif_abapgit_log~add( iv_msg = lv_msg iv_type = 'E' is_item = is_item ix_exc = lx_exc ). IF lx_exc->previous IS BOUND. lx_exc = lx_exc->previous. ELSE. EXIT. ENDIF. ENDDO. ENDMETHOD. METHOD zif_abapgit_log~add_info. zif_abapgit_log~add( iv_msg = iv_msg iv_type = 'I' is_item = is_item ). ENDMETHOD. METHOD zif_abapgit_log~add_success. zif_abapgit_log~add( iv_msg = iv_msg iv_type = 'S' is_item = is_item ). ENDMETHOD. METHOD zif_abapgit_log~add_warning. zif_abapgit_log~add( iv_msg = iv_msg iv_type = 'W' is_item = is_item ). ENDMETHOD. METHOD zif_abapgit_log~clear. CLEAR mt_log. ENDMETHOD. METHOD zif_abapgit_log~clone. DATA lo_log TYPE REF TO zcl_abapgit_log. CREATE OBJECT lo_log EXPORTING iv_title = mv_title. lo_log->mt_log = mt_log. ri_log = lo_log. ENDMETHOD. METHOD zif_abapgit_log~count. rv_count = lines( mt_log ). ENDMETHOD. METHOD zif_abapgit_log~get_item_status. DATA lr_log TYPE REF TO ty_log. DATA ls_msg TYPE zif_abapgit_log=>ty_msg. DATA ls_item_status TYPE zif_abapgit_log=>ty_item_status_out. DATA lr_item_status TYPE REF TO zif_abapgit_log=>ty_item_status_out. "collect all message for all objects LOOP AT mt_log REFERENCE INTO lr_log. CLEAR ls_item_status. ls_item_status-item = lr_log->item. READ TABLE rt_item_status REFERENCE INTO lr_item_status WITH KEY item-obj_type = ls_item_status-item-obj_type item-obj_name = ls_item_status-item-obj_name. IF sy-subrc <> 0. INSERT ls_item_status INTO TABLE rt_item_status. GET REFERENCE OF ls_item_status INTO lr_item_status. ENDIF. CLEAR ls_msg. ls_msg-type = lr_log->msg-type. ls_msg-text = lr_log->msg-text. INSERT ls_msg INTO TABLE lr_item_status->messages. ENDLOOP. "determine object status from object messages LOOP AT rt_item_status REFERENCE INTO lr_item_status. lr_item_status->status = get_messages_status( lr_item_status->messages ). IF lr_item_status->messages IS INITIAL. CLEAR ls_msg. ls_msg-type = 'I'. ls_msg-text = 'No message'. INSERT ls_msg INTO TABLE lr_item_status->messages. ENDIF. ENDLOOP. ENDMETHOD. METHOD zif_abapgit_log~get_log_level. FIELD-SYMBOLS LIKE LINE OF mt_log. rv_level = zif_abapgit_log=>c_log_level-empty. LOOP AT mt_log ASSIGNING . IF -msg-level = zif_abapgit_log=>c_log_level-error. rv_level = zif_abapgit_log=>c_log_level-error. EXIT. ELSEIF -msg-level > rv_level. rv_level = -msg-level. ENDIF. ENDLOOP. ENDMETHOD. METHOD zif_abapgit_log~get_messages. DATA ls_msg TYPE zif_abapgit_log~ty_log_out. FIELD-SYMBOLS TYPE ty_log. LOOP AT mt_log ASSIGNING . ls_msg-type = -msg-type. ls_msg-text = -msg-text. ls_msg-obj_type = -item-obj_type. ls_msg-obj_name = -item-obj_name. ls_msg-exception = -exception. APPEND ls_msg TO rt_msg. ENDLOOP. DELETE ADJACENT DUPLICATES FROM rt_msg. ENDMETHOD. METHOD zif_abapgit_log~get_status. DATA lr_log TYPE REF TO ty_log. rv_status = zif_abapgit_log=>c_status-ok. LOOP AT mt_log REFERENCE INTO lr_log. CASE lr_log->msg-type. WHEN 'E' OR 'A' OR 'X'. rv_status = zif_abapgit_log=>c_status-error. EXIT. WHEN 'W'. rv_status = zif_abapgit_log=>c_status-warning. CONTINUE. WHEN 'S' OR 'I'. IF rv_status <> zif_abapgit_log=>c_status-warning. rv_status = zif_abapgit_log=>c_status-ok. ENDIF. CONTINUE. WHEN OTHERS. "unknown ASSERT 0 = 1. ENDCASE. ENDLOOP. ENDMETHOD. METHOD zif_abapgit_log~get_title. rv_title = mv_title. IF rv_title IS INITIAL. rv_title = 'Log'. ENDIF. ENDMETHOD. METHOD zif_abapgit_log~merge_with. DATA lo_log TYPE REF TO zcl_abapgit_log. DATA lt_log_temp LIKE lo_log->mt_log. IF ii_log IS BOUND. lo_log ?= ii_log. IF iv_min_level > 0. lt_log_temp = lo_log->mt_log. DELETE lt_log_temp WHERE msg-level < iv_min_level. APPEND LINES OF lt_log_temp TO mt_log. ELSE. APPEND LINES OF lo_log->mt_log TO mt_log. ENDIF. ENDIF. ri_log = me. ENDMETHOD. METHOD zif_abapgit_log~set_title. mv_title = iv_title. ri_log = me. ENDMETHOD. ENDCLASS. CLASS zcl_abapgit_diff IMPLEMENTATION. METHOD adjust_diff. " ABAP kernel diff traverses files from bottom up which leads to odd display of diffs " SAP won't adjust this kernel service so we will do it here " https://github.com/abapGit/abapGit/issues/4395 TYPES: BEGIN OF ty_diff_block, start TYPE i, len TYPE i, END OF ty_diff_block. DATA: lv_block_begin TYPE i, lv_block_end TYPE i, ls_diff_block TYPE ty_diff_block, lt_diff_block TYPE STANDARD TABLE OF ty_diff_block WITH DEFAULT KEY. FIELD-SYMBOLS: LIKE LINE OF mt_diff, LIKE LINE OF mt_diff, LIKE LINE OF mt_diff. " Determine start and length of diff blocks LOOP AT mt_diff ASSIGNING . IF -result = zif_abapgit_definitions=>c_diff-insert OR -result = zif_abapgit_definitions=>c_diff-delete. IF ls_diff_block IS INITIAL. ls_diff_block-start = sy-tabix. ENDIF. ls_diff_block-len = ls_diff_block-len + 1. ELSEIF ls_diff_block-start IS NOT INITIAL. APPEND ls_diff_block TO lt_diff_block. CLEAR ls_diff_block. ENDIF. ENDLOOP. " For each diff block, check if beginning is same as end of block " If yes, move diff block down LOOP AT lt_diff_block INTO ls_diff_block. DO ls_diff_block-len TIMES. lv_block_begin = ls_diff_block-start + sy-index - 1. READ TABLE mt_diff ASSIGNING INDEX lv_block_begin. IF sy-subrc <> 0. EXIT. ENDIF. lv_block_end = ls_diff_block-start + ls_diff_block-len + sy-index - 1. READ TABLE mt_diff ASSIGNING INDEX lv_block_end. IF sy-subrc <> 0. EXIT. ENDIF. CASE -result. WHEN zif_abapgit_definitions=>c_diff-insert. IF -new = -new. -old_num = -old_num. -old = -old. -result = -result. CLEAR: -result, -old_num, -old. ELSE. EXIT. ENDIF. WHEN zif_abapgit_definitions=>c_diff-delete. IF -old = -old. -new_num = -new_num. -new = -new. -result = -result. CLEAR: -result, -new_num, -new. ELSE. EXIT. ENDIF. WHEN OTHERS. EXIT. ENDCASE. ENDDO. ENDLOOP. ENDMETHOD. METHOD calculate_stats. FIELD-SYMBOLS: LIKE LINE OF mt_diff. LOOP AT mt_diff ASSIGNING . CASE -result. WHEN zif_abapgit_definitions=>c_diff-insert. ms_stats-insert = ms_stats-insert + 1. WHEN zif_abapgit_definitions=>c_diff-delete. ms_stats-delete = ms_stats-delete + 1. WHEN zif_abapgit_definitions=>c_diff-update. ms_stats-update = ms_stats-update + 1. ENDCASE. ENDLOOP. ENDMETHOD. METHOD compute_diff. DATA: lv_i TYPE i, ls_diff LIKE LINE OF rt_diff, lt_delta TYPE STANDARD TABLE OF rsedcresul WITH DEFAULT KEY. FIELD-SYMBOLS: LIKE LINE OF lt_delta. " Note: Ignore case is for keywords, variables, types etc, but not for literals CALL FUNCTION 'RS_CMP_COMPUTE_DELTA' EXPORTING compare_mode = mv_compare_mode ignore_case_differences = mv_ignore_case TABLES text_tab1 = it_new text_tab2 = it_old text_tab_res = lt_delta EXCEPTIONS parameter_invalid = 1 difference_not_found = 2 OTHERS = 3. IF sy-subrc = 0. " Process delta LOOP AT lt_delta ASSIGNING . CLEAR ls_diff. IF -line1 > 0. lv_i = -line1. ls_diff-old_num = lv_i. ls_diff-old = -text1. ENDIF. IF -line2 > 0. lv_i = -line2. ls_diff-new_num = lv_i. ls_diff-new = -text2. ENDIF. IF -flag1 = 'D'. ls_diff-result = zif_abapgit_definitions=>c_diff-delete. ELSEIF -flag2 = 'I'. ls_diff-result = zif_abapgit_definitions=>c_diff-insert. ELSEIF -flag1 = 'M' AND -flag2 = 'M'. ls_diff-result = zif_abapgit_definitions=>c_diff-update. ELSEIF -flag1 = '' AND -flag2 = ''. ls_diff-result = zif_abapgit_definitions=>c_diff-unchanged. ELSEIF -flag1 = '' AND -flag2 = 'E'. " ignore comment ls_diff-result = zif_abapgit_definitions=>c_diff-unchanged. ELSEIF -flag1 = 'E' AND -flag2 = ''. " ignore comment ls_diff-result = zif_abapgit_definitions=>c_diff-unchanged. ELSE. ASSERT 0 = 1. " unknown comparison result ENDIF. APPEND ls_diff TO rt_diff. ENDLOOP. ELSEIF sy-subrc = 2. " The function doesn't find all diffs... rt_diff = compute_diff_extra( it_new = it_new it_old = it_old ). ELSE. ASSERT 0 = 1. " incorrect function call ENDIF. ENDMETHOD. METHOD compute_diff_extra. DATA: lv_last_new TYPE c LENGTH 1, lv_last_old TYPE c LENGTH 1, ls_diff LIKE LINE OF rt_diff. FIELD-SYMBOLS: LIKE LINE OF it_old, LIKE LINE OF it_new. LOOP AT it_old ASSIGNING . CLEAR ls_diff. ls_diff-old_num = sy-tabix. ls_diff-old = . READ TABLE it_new ASSIGNING INDEX sy-tabix. IF sy-subrc <> 0. EXIT. ENDIF. ls_diff-new_num = sy-tabix. ls_diff-new = . " SAP function ignores lines that contain only whitespace so we compare directly " Also check if one line has trailing space(s) IF ( mv_compare_mode = 1 OR mv_compare_mode = 3 ) AND <> . IF strlen( condense( ) ) = 0 OR strlen( condense( ) ) = 0. ls_diff-result = zif_abapgit_definitions=>c_diff-update. ELSEIF strlen( ) > 0 AND strlen( ) > 0. lv_last_new = substring( val = off = strlen( ) - 1 ). lv_last_old = substring( val = off = strlen( ) - 1 ). IF lv_last_new = space OR lv_last_old = space. ls_diff-result = zif_abapgit_definitions=>c_diff-update. ENDIF. ENDIF. ENDIF. APPEND ls_diff TO rt_diff. ENDLOOP. ENDMETHOD. METHOD constructor. DATA: lt_new TYPE rswsourcet, lt_old TYPE rswsourcet. mv_compare_mode = 1. IF iv_ignore_indentation = abap_true. mv_compare_mode = mv_compare_mode + 1. ENDIF. IF iv_ignore_comments = abap_true. mv_compare_mode = mv_compare_mode + 2. ENDIF. mv_ignore_case = iv_ignore_case. unpack( EXPORTING iv_new = iv_new iv_old = iv_old IMPORTING et_new = lt_new et_old = lt_old ). mt_diff = compute_diff( it_new = lt_new it_old = lt_old ). adjust_diff( ). calculate_stats( ). map_beacons( ). shortlist( ). ENDMETHOD. METHOD create_regex_set. DATA: lo_regex TYPE REF TO cl_abap_regex, lt_regex TYPE zif_abapgit_definitions=>ty_string_tt, lv_regex LIKE LINE OF lt_regex. APPEND '^\s*(CLASS|FORM|MODULE|REPORT|METHOD|INTERFACE|FUNCTION)\s[^=]' TO lt_regex. APPEND '^\s*(PUBLIC|PROTECTED|PRIVATE)\sSECTION(\s|\.)' TO lt_regex. APPEND '^\s*(CLASS|INTERFACE|FUNCTION|TYPE)-POOL\s' TO lt_regex. APPEND '^\s*(START|END)-OF-SELECTION(\s|\.)' TO lt_regex. APPEND '^\s*INITIALIZATION(\s|\.)' TO lt_regex. APPEND '^\s*(TOP-OF-PAGE|END-OF-PAGE)(\s|\.)' TO lt_regex. APPEND '^\s*AT\s*(SELECTION-SCREEN|LINE-SELECTION|USER-COMMAND|PF\d+)(\s|\.)' TO lt_regex. APPEND '^\s*(DEFINE|ENHANCEMENT)\s' TO lt_regex. LOOP AT lt_regex INTO lv_regex. CREATE OBJECT lo_regex EXPORTING pattern = lv_regex ignore_case = abap_true. APPEND lo_regex TO rt_regex_set. ENDLOOP. ENDMETHOD. METHOD get. rt_diff = mt_diff. ENDMETHOD. METHOD get_beacons. rt_beacons = mt_beacons. ENDMETHOD. METHOD is_line_patched. FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_diff. READ TABLE mt_diff INDEX iv_index ASSIGNING . IF sy-subrc = 0. rv_patched = -patch_flag. ELSE. zcx_abapgit_exception=>raise( |Diff line not found { iv_index }| ). ENDIF. ENDMETHOD. METHOD map_beacons. DATA: lv_beacon_idx TYPE i VALUE c_starting_beacon, lv_offs TYPE i, lv_beacon_str TYPE string, lv_beacon_2lev TYPE string, lv_submatch TYPE string, lo_regex TYPE REF TO cl_abap_regex, lt_regex TYPE ty_regexset_tt. FIELD-SYMBOLS: LIKE LINE OF mt_diff. lt_regex = create_regex_set( ). LOOP AT mt_diff ASSIGNING . CLEAR lv_offs. -beacon = lv_beacon_idx. LOOP AT lt_regex INTO lo_regex. FIND FIRST OCCURRENCE OF REGEX lo_regex IN -new SUBMATCHES lv_submatch. IF sy-subrc = 0. " Match lv_beacon_str = -new. lv_submatch = to_upper( lv_submatch ). " Get rid of comments and end of line FIND FIRST OCCURRENCE OF '.' IN lv_beacon_str MATCH OFFSET lv_offs. IF sy-subrc <> 0. FIND FIRST OCCURRENCE OF '"' IN lv_beacon_str MATCH OFFSET lv_offs. ENDIF. IF lv_offs > 0. lv_beacon_str = lv_beacon_str(lv_offs). ENDIF. lv_beacon_str = condense( val = lv_beacon_str del = ` ` ). IF lv_submatch = 'CLASS'. lv_beacon_2lev = replace( val = lv_beacon_str regex = '\s+(DEFINITION|IMPLEMENTATION)' with = '' occ = 0 ). ELSEIF lv_submatch = 'METHOD'. lv_beacon_str = lv_beacon_2lev && ` => ` && lv_beacon_str. ELSEIF lv_submatch = 'PUBLIC' OR lv_submatch = 'PROTECTED' OR lv_submatch = 'PRIVATE'. lv_beacon_str = lv_beacon_2lev && ` ` && lv_beacon_str. ENDIF. APPEND lv_beacon_str TO mt_beacons. lv_beacon_idx = sy-tabix. -beacon = lv_beacon_idx. EXIT. "Loop ENDIF. ENDLOOP. ENDLOOP. ENDMETHOD. METHOD set_patch_by_old_diff. FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_diff. LOOP AT mt_diff ASSIGNING USING KEY new_num WHERE old = is_diff_old-old AND new = is_diff_old-new AND new_num = is_diff_old-new_num AND old_num = is_diff_old-old_num. -patch_flag = iv_patch_flag. EXIT. ENDLOOP. ENDMETHOD. METHOD set_patch_new. FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_diff. READ TABLE mt_diff WITH TABLE KEY new_num COMPONENTS new_num = iv_line_new ASSIGNING . IF sy-subrc <> 0. zcx_abapgit_exception=>raise( |Invalid new line number { iv_line_new }| ). ENDIF. -patch_flag = iv_patch_flag. ENDMETHOD. METHOD set_patch_old. FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_diff. READ TABLE mt_diff WITH TABLE KEY old_num COMPONENTS old_num = iv_line_old ASSIGNING . IF sy-subrc <> 0. zcx_abapgit_exception=>raise( |Invalid old line number { iv_line_old }| ). ENDIF. -patch_flag = iv_patch_flag. ENDMETHOD. METHOD shortlist. DATA: lv_index TYPE i. FIELD-SYMBOLS: LIKE LINE OF mt_diff. IF lines( mt_diff ) < 20. LOOP AT mt_diff ASSIGNING . -short = abap_true. ENDLOOP. ELSE. LOOP AT mt_diff TRANSPORTING NO FIELDS WHERE NOT result IS INITIAL AND short = abap_false. lv_index = sy-tabix. DO 8 TIMES. " Backward READ TABLE mt_diff INDEX ( lv_index - sy-index ) ASSIGNING . IF sy-subrc <> 0 OR -short = abap_true. " tab bound or prev marker EXIT. ENDIF. -short = abap_true. ENDDO. DO 8 TIMES. " Forward READ TABLE mt_diff INDEX ( lv_index + sy-index - 1 ) ASSIGNING . IF sy-subrc <> 0. " tab bound reached EXIT. ENDIF. CHECK -short = abap_false. " skip marked -short = abap_true. ENDDO. ENDLOOP. ENDIF. ENDMETHOD. METHOD stats. rs_count = ms_stats. ENDMETHOD. METHOD unpack. DATA: lv_new TYPE string, lv_old TYPE string, lv_new_last TYPE c LENGTH 1, lv_old_last TYPE c LENGTH 1. lv_new = zcl_abapgit_convert=>xstring_to_string_utf8( iv_new ). lv_old = zcl_abapgit_convert=>xstring_to_string_utf8( iv_old ). " Check if one value contains a final newline but the other not " If yes, add a special character that's visible in diff render IF lv_new IS NOT INITIAL. lv_new_last = substring( val = lv_new off = strlen( lv_new ) - 1 ). ENDIF. IF lv_old IS NOT INITIAL. lv_old_last = substring( val = lv_old off = strlen( lv_old ) - 1 ). ENDIF. IF lv_new_last = cl_abap_char_utilities=>newline AND lv_old_last <> cl_abap_char_utilities=>newline AND lv_old IS NOT INITIAL. lv_old = lv_old && cl_abap_char_utilities=>form_feed. ELSEIF lv_new_last <> cl_abap_char_utilities=>newline AND lv_old_last = cl_abap_char_utilities=>newline AND lv_new IS NOT INITIAL. lv_new = lv_new && cl_abap_char_utilities=>form_feed. ENDIF. SPLIT lv_new AT cl_abap_char_utilities=>newline INTO TABLE et_new. SPLIT lv_old AT cl_abap_char_utilities=>newline INTO TABLE et_old. ENDMETHOD. ENDCLASS. CLASS kHGwldKtJfHZXmphMQgfeIQhGnfrcH DEFINITION DEFERRED. CLASS kHGwldKtJfHZXmphMQgfcZaQwkuAox DEFINITION DEFERRED. CLASS kHGwldKtJfHZXmphMQgfQYNhjRNkGw DEFINITION DEFERRED. * renamed: zcl_abapgit_convert :: lcl_in CLASS kHGwldKtJfHZXmphMQgfQYNhjRNkGw DEFINITION. PUBLIC SECTION. CLASS-METHODS convert IMPORTING !iv_data TYPE xsequence !iv_length TYPE i OPTIONAL RETURNING VALUE(rv_string) TYPE string RAISING zcx_abapgit_exception. PRIVATE SECTION. CLASS-DATA go_conv_new TYPE REF TO object. CLASS-DATA go_conv_old TYPE REF TO object. ENDCLASS. CLASS kHGwldKtJfHZXmphMQgfQYNhjRNkGw IMPLEMENTATION. METHOD convert. DATA lv_class TYPE string. DATA lx_error TYPE REF TO cx_root. IF go_conv_new IS INITIAL AND go_conv_old IS INITIAL. TRY. CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_in RECEIVING instance = go_conv_new. CATCH cx_sy_dyn_call_illegal_class. lv_class = 'CL_ABAP_CONV_IN_CE'. CALL METHOD (lv_class)=>create EXPORTING encoding = 'UTF-8' RECEIVING conv = go_conv_old. ENDTRY. ENDIF. TRY. IF go_conv_new IS NOT INITIAL. CALL METHOD go_conv_new->('IF_ABAP_CONV_IN~CONVERT') EXPORTING source = iv_data RECEIVING result = rv_string. ELSE. CALL METHOD go_conv_old->('CONVERT') EXPORTING input = iv_data n = iv_length IMPORTING data = rv_string. ENDIF. CATCH cx_parameter_invalid_range cx_sy_codepage_converter_init cx_sy_conversion_codepage cx_parameter_invalid_type INTO lx_error. zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. ENDMETHOD. ENDCLASS. * renamed: zcl_abapgit_convert :: lcl_out CLASS kHGwldKtJfHZXmphMQgfcZaQwkuAox DEFINITION. PUBLIC SECTION. CLASS-METHODS convert IMPORTING !iv_string TYPE string RETURNING VALUE(rv_xstring) TYPE xstring RAISING zcx_abapgit_exception. PRIVATE SECTION. CLASS-DATA go_conv_new TYPE REF TO object. CLASS-DATA go_conv_old TYPE REF TO object. ENDCLASS. CLASS kHGwldKtJfHZXmphMQgfcZaQwkuAox IMPLEMENTATION. METHOD convert. DATA lx_error TYPE REF TO cx_root. DATA lv_class TYPE string. IF go_conv_new IS INITIAL AND go_conv_old IS INITIAL. TRY. CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_out RECEIVING instance = go_conv_new. CATCH cx_sy_dyn_call_illegal_class. lv_class = 'CL_ABAP_CONV_OUT_CE'. CALL METHOD (lv_class)=>create EXPORTING encoding = 'UTF-8' RECEIVING conv = go_conv_old. ENDTRY. ENDIF. TRY. IF go_conv_new IS NOT INITIAL. CALL METHOD go_conv_new->('IF_ABAP_CONV_OUT~CONVERT') EXPORTING source = iv_string RECEIVING result = rv_xstring. ELSE. CALL METHOD go_conv_old->('CONVERT') EXPORTING data = iv_string IMPORTING buffer = rv_xstring. ENDIF. CATCH cx_parameter_invalid_range cx_sy_codepage_converter_init cx_sy_conversion_codepage cx_parameter_invalid_type INTO lx_error. zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. ENDMETHOD. ENDCLASS. * renamed: zcl_abapgit_convert :: lcl_bcp47_language_table CLASS kHGwldKtJfHZXmphMQgfeIQhGnfrcH DEFINITION CREATE PRIVATE. PUBLIC SECTION. TYPES: BEGIN OF ty_language_mapping, sap1_code TYPE sy-langu, sap2_code TYPE laiso, bcp47_code TYPE string, END OF ty_language_mapping, ty_language_mappings TYPE STANDARD TABLE OF ty_language_mapping WITH DEFAULT KEY. CLASS-DATA gv_language_mappings TYPE ty_language_mappings. CLASS-METHODS: sap1_to_sap2 IMPORTING im_sap1 TYPE sy-langu RETURNING VALUE(re_sap2) TYPE laiso RAISING zcx_abapgit_exception, sap2_to_sap1 IMPORTING im_sap2 TYPE laiso RETURNING VALUE(re_sap1) TYPE sy-langu RAISING zcx_abapgit_exception, sap1_to_bcp47 IMPORTING im_sap1 TYPE sy-langu RETURNING VALUE(re_bcp47) TYPE string RAISING zcx_abapgit_exception, bcp47_to_sap1 IMPORTING im_bcp47 TYPE string RETURNING VALUE(re_sap1) TYPE sy-langu RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS fill_language_mappings. CLASS-METHODS fill_language_mappings_1. CLASS-METHODS fill_language_mappings_2. CLASS-METHODS fill_language_mapping IMPORTING im_sap1 TYPE string im_sap2 TYPE string im_bcp47 TYPE string. ENDCLASS. CLASS kHGwldKtJfHZXmphMQgfeIQhGnfrcH IMPLEMENTATION. METHOD sap1_to_bcp47. DATA lv_language_mapping TYPE ty_language_mapping. IF gv_language_mappings IS INITIAL OR lines( gv_language_mappings ) = 0. fill_language_mappings( ). ENDIF. LOOP AT gv_language_mappings INTO lv_language_mapping WHERE sap1_code = im_sap1. IF re_bcp47 IS INITIAL OR strlen( re_bcp47 ) > strlen( lv_language_mapping-bcp47_code ). re_bcp47 = lv_language_mapping-bcp47_code. ENDIF. ENDLOOP. IF re_bcp47 IS INITIAL. zcx_abapgit_exception=>raise( |Could not map SAP1 language code { im_sap1 } to BCP47 language code.| ). ENDIF. ENDMETHOD. METHOD bcp47_to_sap1. DATA lv_language_mapping TYPE ty_language_mapping. IF gv_language_mappings IS INITIAL OR lines( gv_language_mappings ) = 0. fill_language_mappings( ). ENDIF. LOOP AT gv_language_mappings INTO lv_language_mapping. IF to_lower( lv_language_mapping-bcp47_code ) = to_lower( im_bcp47 ) AND re_sap1 IS INITIAL. re_sap1 = lv_language_mapping-sap1_code. ENDIF. ENDLOOP. IF re_sap1 IS INITIAL. zcx_abapgit_exception=>raise( |Could not map BCP47 language code { im_bcp47 } to SAP1 language code.| ). ENDIF. ENDMETHOD. METHOD sap1_to_sap2. DATA lv_language_mapping TYPE ty_language_mapping. IF gv_language_mappings IS INITIAL. fill_language_mappings( ). ENDIF. READ TABLE gv_language_mappings WITH KEY sap1_code = im_sap1 INTO lv_language_mapping. re_sap2 = lv_language_mapping-sap2_code. IF re_sap2 IS INITIAL. zcx_abapgit_exception=>raise( |Could not convert SAP1 language code { im_sap1 } to SAP2 language code.| ). ENDIF. ENDMETHOD. METHOD sap2_to_sap1. DATA lv_language_mapping TYPE ty_language_mapping. IF gv_language_mappings IS INITIAL. fill_language_mappings( ). ENDIF. READ TABLE gv_language_mappings WITH KEY sap2_code = im_sap2 INTO lv_language_mapping. re_sap1 = lv_language_mapping-sap1_code. IF re_sap1 IS INITIAL. zcx_abapgit_exception=>raise( |Could not map SAP2 language code { im_sap2 } to SAP1 language code.| ). ENDIF. ENDMETHOD. METHOD fill_language_mapping. DATA lv_line TYPE ty_language_mapping. DATA lv_sap1 TYPE sy-langu. IF strlen( im_sap1 ) = 4. lv_sap1 = zcl_abapgit_convert=>uccp( im_sap1 ). ELSEIF strlen( im_sap1 ) = 1. lv_sap1 = im_sap1. ENDIF. lv_line-bcp47_code = im_bcp47. lv_line-sap2_code = im_sap2. lv_line-sap1_code = lv_sap1. APPEND lv_line TO gv_language_mappings. CLEAR lv_line. ENDMETHOD. METHOD fill_language_mappings. " table is filled with two separate methods to comply " with https://rules.abaplint.org/method_length/ fill_language_mappings_1( ). fill_language_mappings_2( ). ENDMETHOD. METHOD fill_language_mappings_1. fill_language_mapping( im_sap1 = 'a' im_sap2 = 'AF' im_bcp47 = 'af' ). fill_language_mapping( im_sap1 = 'BF51' im_sap2 = 'SQ' im_bcp47 = 'sq' ). fill_language_mapping( im_sap1 = 'BA15' im_sap2 = 'EU' im_bcp47 = 'eu' ). fill_language_mapping( im_sap1 = 'B8F3' im_sap2 = 'BS' im_bcp47 = 'bs' ). fill_language_mapping( im_sap1 = 'W' im_sap2 = 'BG' im_bcp47 = 'bg' ). fill_language_mapping( im_sap1 = 'c' im_sap2 = 'CA' im_bcp47 = 'ca' ). fill_language_mapping( im_sap1 = '1' im_sap2 = 'ZH' im_bcp47 = 'zh' ). fill_language_mapping( im_sap1 = '1' im_sap2 = 'ZH' im_bcp47 = 'zh-Hans' ). fill_language_mapping( im_sap1 = 'B343' im_sap2 = '3C' im_bcp47 = 'zh-SG' ). fill_language_mapping( im_sap1 = 'M' im_sap2 = 'ZF' im_bcp47 = 'zh-Hant' ). fill_language_mapping( im_sap1 = '6' im_sap2 = 'HR' im_bcp47 = 'hr' ). fill_language_mapping( im_sap1 = 'C' im_sap2 = 'CS' im_bcp47 = 'cs' ). fill_language_mapping( im_sap1 = 'K' im_sap2 = 'DA' im_bcp47 = 'da' ). fill_language_mapping( im_sap1 = 'N' im_sap2 = 'NL' im_bcp47 = 'nl' ). fill_language_mapping( im_sap1 = 'N' im_sap2 = 'NL' im_bcp47 = 'nl-NL' ). fill_language_mapping( im_sap1 = 'B284' im_sap2 = '1D' im_bcp47 = 'nl-BE' ). fill_language_mapping( im_sap1 = 'E' im_sap2 = 'EN' im_bcp47 = 'en' ). fill_language_mapping( im_sap1 = 'E' im_sap2 = 'EN' im_bcp47 = 'en-US' ). fill_language_mapping( im_sap1 = 'B46E' im_sap2 = '6N' im_bcp47 = 'en-GB' ). fill_language_mapping( im_sap1 = 'B285' im_sap2 = '1E' im_bcp47 = 'en-AU' ). fill_language_mapping( im_sap1 = 'B2E5' im_sap2 = '2E' im_bcp47 = 'en-BZ' ). fill_language_mapping( im_sap1 = 'B345' im_sap2 = '3E' im_bcp47 = 'en-CA' ). fill_language_mapping( im_sap1 = 'B405' im_sap2 = '5E' im_bcp47 = 'en-HK' ). fill_language_mapping( im_sap1 = 'B465' im_sap2 = '6E' im_bcp47 = 'en-IN' ). fill_language_mapping( im_sap1 = 'B4C5' im_sap2 = '7E' im_bcp47 = 'en-ID' ). fill_language_mapping( im_sap1 = 'B525' im_sap2 = '8E' im_bcp47 = 'en-IE' ). fill_language_mapping( im_sap1 = 'B585' im_sap2 = '9E' im_bcp47 = 'en-JM' ). fill_language_mapping( im_sap1 = 'B225' im_sap2 = '0E' im_bcp47 = 'en-MY' ). fill_language_mapping( im_sap1 = 'B28E' im_sap2 = '1N' im_bcp47 = 'en-NZ' ). fill_language_mapping( im_sap1 = 'B2EE' im_sap2 = '2N' im_bcp47 = 'en-PH' ). fill_language_mapping( im_sap1 = 'B34E' im_sap2 = '3N' im_bcp47 = 'en-SG' ). fill_language_mapping( im_sap1 = 'B3AE' im_sap2 = '4N' im_bcp47 = 'en-ZA' ). fill_language_mapping( im_sap1 = 'B40E' im_sap2 = '5N' im_bcp47 = 'en-TT' ). fill_language_mapping( im_sap1 = 'B4CE' im_sap2 = '7N' im_bcp47 = 'en-ZW' ). fill_language_mapping( im_sap1 = '9' im_sap2 = 'ET' im_bcp47 = 'et' ). fill_language_mapping( im_sap1 = 'U' im_sap2 = 'FI' im_bcp47 = 'fi' ). fill_language_mapping( im_sap1 = 'F' im_sap2 = 'FR' im_bcp47 = 'fr' ). fill_language_mapping( im_sap1 = 'F' im_sap2 = 'FR' im_bcp47 = 'fr-FR' ). fill_language_mapping( im_sap1 = 'B286' im_sap2 = '1F' im_bcp47 = 'fr-BE' ). fill_language_mapping( im_sap1 = 'B2E6' im_sap2 = '2F' im_bcp47 = 'fr-CM' ). ENDMETHOD. METHOD fill_language_mappings_2. fill_language_mapping( im_sap1 = 'B346' im_sap2 = '3F' im_bcp47 = 'fr-CA' ). fill_language_mapping( im_sap1 = 'B3A6' im_sap2 = '4F' im_bcp47 = 'fr-CG' ). fill_language_mapping( im_sap1 = 'B406' im_sap2 = '5F' im_bcp47 = 'fr-CI' ). fill_language_mapping( im_sap1 = 'B466' im_sap2 = '6F' im_bcp47 = 'fr-HT' ). fill_language_mapping( im_sap1 = 'B4C6' im_sap2 = '7F' im_bcp47 = 'fr-LU' ). fill_language_mapping( im_sap1 = 'B526' im_sap2 = '8F' im_bcp47 = 'fr-ML' ). fill_language_mapping( im_sap1 = 'B586' im_sap2 = '9F' im_bcp47 = 'fr-MC' ). fill_language_mapping( im_sap1 = 'B288' im_sap2 = '1H' im_bcp47 = 'fr-MA' ). fill_language_mapping( im_sap1 = 'B2E8' im_sap2 = '2H' im_bcp47 = 'fr-RE' ). fill_language_mapping( im_sap1 = 'B348' im_sap2 = '3H' im_bcp47 = 'fr-SN' ). fill_language_mapping( im_sap1 = 'B3A8' im_sap2 = '4H' im_bcp47 = 'fr-CH' ). fill_language_mapping( im_sap1 = 'BAC4' im_sap2 = 'GD' im_bcp47 = 'gd' ). fill_language_mapping( im_sap1 = 'BACC' im_sap2 = 'GL' im_bcp47 = 'gl' ). fill_language_mapping( im_sap1 = 'D' im_sap2 = 'DE' im_bcp47 = 'de' ). fill_language_mapping( im_sap1 = 'D' im_sap2 = 'DE' im_bcp47 = 'de-DE' ). fill_language_mapping( im_sap1 = 'B287' im_sap2 = '1G' im_bcp47 = 'de-AT' ). fill_language_mapping( im_sap1 = 'B2E7' im_sap2 = '2G' im_bcp47 = 'de-LI' ). fill_language_mapping( im_sap1 = 'B347' im_sap2 = '3G' im_bcp47 = 'de-LU' ). fill_language_mapping( im_sap1 = 'B3A7' im_sap2 = '4G' im_bcp47 = 'de-CH' ). fill_language_mapping( im_sap1 = 'G' im_sap2 = 'EL' im_bcp47 = 'el' ). fill_language_mapping( im_sap1 = 'B' im_sap2 = 'HE' im_bcp47 = 'he' ). fill_language_mapping( im_sap1 = 'H' im_sap2 = 'HU' im_bcp47 = 'hu' ). fill_language_mapping( im_sap1 = 'b' im_sap2 = 'IS' im_bcp47 = 'is' ). fill_language_mapping( im_sap1 = 'i' im_sap2 = 'ID' im_bcp47 = 'id' ). fill_language_mapping( im_sap1 = 'BAC1' im_sap2 = 'GA' im_bcp47 = 'ga' ). fill_language_mapping( im_sap1 = 'I' im_sap2 = 'IT' im_bcp47 = 'it' ). fill_language_mapping( im_sap1 = 'I' im_sap2 = 'IT' im_bcp47 = 'it-IT' ). fill_language_mapping( im_sap1 = 'B289' im_sap2 = '1I' im_bcp47 = 'it-CH' ). fill_language_mapping( im_sap1 = 'J' im_sap2 = 'JA' im_bcp47 = 'ja' ). fill_language_mapping( im_sap1 = '3' im_sap2 = 'KO' im_bcp47 = 'ko' ). fill_language_mapping( im_sap1 = '3' im_sap2 = 'KO' im_bcp47 = 'ko-KR' ). fill_language_mapping( im_sap1 = 'Y' im_sap2 = 'LV' im_bcp47 = 'lv' ). fill_language_mapping( im_sap1 = 'X' im_sap2 = 'LT' im_bcp47 = 'lt' ). fill_language_mapping( im_sap1 = '7' im_sap2 = 'MS' im_bcp47 = 'ms' ). fill_language_mapping( im_sap1 = '7' im_sap2 = 'MS' im_bcp47 = 'ms-MY' ). fill_language_mapping( im_sap1 = 'B28D' im_sap2 = '1M' im_bcp47 = 'ms-BN' ). fill_language_mapping( im_sap1 = 'O' im_sap2 = 'NO' im_bcp47 = 'no' ). fill_language_mapping( im_sap1 = 'L' im_sap2 = 'PL' im_bcp47 = 'pl' ). fill_language_mapping( im_sap1 = 'P' im_sap2 = 'PT' im_bcp47 = 'pt' ). fill_language_mapping( im_sap1 = 'P' im_sap2 = 'PT' im_bcp47 = 'pt-BR' ). fill_language_mapping( im_sap1 = 'BEED' im_sap2 = 'RM' im_bcp47 = 'rm' ). fill_language_mapping( im_sap1 = '4' im_sap2 = 'RO' im_bcp47 = 'ro' ). fill_language_mapping( im_sap1 = '4' im_sap2 = 'RO' im_bcp47 = 'ro-RO' ). fill_language_mapping( im_sap1 = 'R' im_sap2 = 'RU' im_bcp47 = 'ru-RU' ). fill_language_mapping( im_sap1 = '0' im_sap2 = 'SR' im_bcp47 = 'sr' ). fill_language_mapping( im_sap1 = '0' im_sap2 = 'SR' im_bcp47 = 'sr-Cyrl' ). fill_language_mapping( im_sap1 = 'd' im_sap2 = 'SH' im_bcp47 = 'sr-Latn' ). fill_language_mapping( im_sap1 = 'Q' im_sap2 = 'SK' im_bcp47 = 'sk' ). fill_language_mapping( im_sap1 = '5' im_sap2 = 'SL' im_bcp47 = 'sl' ). fill_language_mapping( im_sap1 = 'BF42' im_sap2 = 'SB' im_bcp47 = 'wen' ). fill_language_mapping( im_sap1 = 'B9B3' im_sap2 = 'DS' im_bcp47 = 'dsb' ). fill_language_mapping( im_sap1 = 'BB33' im_sap2 = 'HS' im_bcp47 = 'hsb' ). fill_language_mapping( im_sap1 = 'S' im_sap2 = 'ES' im_bcp47 = 'es' ). fill_language_mapping( im_sap1 = 'S' im_sap2 = 'ES' im_bcp47 = 'es-ES' ). fill_language_mapping( im_sap1 = 'B293' im_sap2 = '1S' im_bcp47 = 'es-AR' ). fill_language_mapping( im_sap1 = 'B2F3' im_sap2 = '2S' im_bcp47 = 'es-BO' ). fill_language_mapping( im_sap1 = 'B353' im_sap2 = '3S' im_bcp47 = 'es-CL' ). fill_language_mapping( im_sap1 = 'B233' im_sap2 = '0S' im_bcp47 = 'es-CO' ). fill_language_mapping( im_sap1 = 'B3B3' im_sap2 = '4S' im_bcp47 = 'es-CR' ). fill_language_mapping( im_sap1 = 'B413' im_sap2 = '5S' im_bcp47 = 'es-DO' ). fill_language_mapping( im_sap1 = 'B473' im_sap2 = '6S' im_bcp47 = 'es-EC' ). fill_language_mapping( im_sap1 = 'B4D3' im_sap2 = '7S' im_bcp47 = 'es-SV' ). fill_language_mapping( im_sap1 = 'B533' im_sap2 = '8S' im_bcp47 = 'es-GT' ). fill_language_mapping( im_sap1 = 'B593' im_sap2 = '9S' im_bcp47 = 'es-HN' ). fill_language_mapping( im_sap1 = 'B298' im_sap2 = '1X' im_bcp47 = 'es-MX' ). fill_language_mapping( im_sap1 = 'B2F8' im_sap2 = '2X' im_bcp47 = 'es-NI' ). fill_language_mapping( im_sap1 = 'B358' im_sap2 = '3X' im_bcp47 = 'es-PA' ). fill_language_mapping( im_sap1 = 'B3B8' im_sap2 = '4X' im_bcp47 = 'es-PY' ). fill_language_mapping( im_sap1 = 'B418' im_sap2 = '5X' im_bcp47 = 'es-PE' ). fill_language_mapping( im_sap1 = 'B478' im_sap2 = '6X' im_bcp47 = 'es-PR' ). fill_language_mapping( im_sap1 = 'B4D8' im_sap2 = '7X' im_bcp47 = 'es-UY' ). fill_language_mapping( im_sap1 = 'B538' im_sap2 = '8X' im_bcp47 = 'es-VE' ). fill_language_mapping( im_sap1 = 'BF57' im_sap2 = 'SW' im_bcp47 = 'sw' ). fill_language_mapping( im_sap1 = 'V' im_sap2 = 'SV' im_bcp47 = 'sv' ). fill_language_mapping( im_sap1 = 'BFAC' im_sap2 = 'TL' im_bcp47 = 'tl' ). fill_language_mapping( im_sap1 = '2' im_sap2 = 'TH' im_bcp47 = 'th' ). fill_language_mapping( im_sap1 = 'T' im_sap2 = 'TR' im_bcp47 = 'tr' ). fill_language_mapping( im_sap1 = '8' im_sap2 = 'UK' im_bcp47 = 'uk' ). fill_language_mapping( im_sap1 = 'C069' im_sap2 = 'VI' im_bcp47 = 'vi' ). fill_language_mapping( im_sap1 = 'C0C1' im_sap2 = 'WA' im_bcp47 = 'wa' ). fill_language_mapping( im_sap1 = 'A' im_sap2 = 'AR' im_bcp47 = 'ar-SA' ). ENDMETHOD. ENDCLASS. CLASS zcl_abapgit_convert IMPLEMENTATION. METHOD base64_to_xstring. rv_xstr = cl_http_utility=>decode_x_base64( iv_base64 ). ENDMETHOD. METHOD bitbyte_to_int. DATA: lv_bitbyte TYPE string, lv_len TYPE i, lv_offset TYPE i. lv_bitbyte = iv_bits. SHIFT lv_bitbyte LEFT DELETING LEADING '0 '. lv_len = strlen( lv_bitbyte ). lv_offset = lv_len - 1. rv_int = 0. DO lv_len TIMES. IF sy-index = 1. "Initialize IF lv_bitbyte+lv_offset(1) = '1'. rv_int = 1. ENDIF. ELSEIF lv_bitbyte+lv_offset(1) = '1'. rv_int = rv_int + ( 2 ** ( sy-index - 1 ) ). ENDIF. lv_offset = lv_offset - 1. "Move Cursor ENDDO. ENDMETHOD. METHOD conversion_exit_isola_output. language_sap1_to_sap2( EXPORTING im_lang_sap1 = iv_spras RECEIVING re_lang_sap2 = rv_spras EXCEPTIONS no_assignment = 1 OTHERS = 2 ). "#EC CI_SUBRC TRANSLATE rv_spras TO UPPER CASE. ENDMETHOD. METHOD int_to_xstring4. * returns xstring of length 4 containing the integer value iv_i DATA lv_x TYPE x LENGTH 4. lv_x = iv_i. rv_xstring = lv_x. ENDMETHOD. METHOD language_sap1_to_bcp47. DATA lv_converter_instance TYPE REF TO object. DATA lv_converter_class_name TYPE string VALUE `CL_AFF_LANGUAGE_CONVERTER`. TRY. CALL METHOD (lv_converter_class_name)=>create_instance RECEIVING result = lv_converter_instance. TRY. CALL METHOD lv_converter_instance->(`IF_AFF_LANGUAGE_CONVERTER~SAP1_TO_BCP47`) EXPORTING language = im_lang_sap1 RECEIVING result = re_lang_bcp47. CATCH cx_static_check. RAISE no_assignment. ENDTRY. CATCH cx_sy_dyn_call_error. TRY. re_lang_bcp47 = kHGwldKtJfHZXmphMQgfeIQhGnfrcH=>sap1_to_bcp47( im_lang_sap1 ). CATCH zcx_abapgit_exception. RAISE no_assignment. ENDTRY. ENDTRY. ENDMETHOD. METHOD language_bcp47_to_sap1. DATA lv_converter_instance TYPE REF TO object. DATA lv_converter_class_name TYPE string VALUE `CL_AFF_LANGUAGE_CONVERTER`. DATA lv_regex TYPE REF TO cl_abap_regex. DATA lv_abap_matcher TYPE REF TO cl_abap_matcher. DATA lv_sap2_lang_code TYPE laiso. TRY. CALL METHOD (lv_converter_class_name)=>create_instance RECEIVING result = lv_converter_instance. TRY. CALL METHOD lv_converter_instance->(`IF_AFF_LANGUAGE_CONVERTER~BCP47_TO_SAP1`) EXPORTING language = im_lang_bcp47 RECEIVING result = re_lang_sap1. CATCH cx_static_check. RAISE no_assignment. ENDTRY. CATCH cx_sy_dyn_call_error. TRY. re_lang_sap1 = kHGwldKtJfHZXmphMQgfeIQhGnfrcH=>bcp47_to_sap1( im_lang_bcp47 ). CATCH zcx_abapgit_exception. CREATE OBJECT lv_regex EXPORTING pattern = `[A-Z0-9]{2}`. lv_abap_matcher = lv_regex->create_matcher( text = im_lang_bcp47 ). IF abap_true = lv_abap_matcher->match( ). "Fallback try to convert from SAP language lv_sap2_lang_code = im_lang_bcp47. language_sap2_to_sap1( EXPORTING im_lang_sap2 = lv_sap2_lang_code RECEIVING re_lang_sap1 = re_lang_sap1 EXCEPTIONS no_assignment = 1 OTHERS = 2 ). IF sy-subrc <> 0. RAISE no_assignment. ENDIF. ELSE. RAISE no_assignment. ENDIF. ENDTRY. ENDTRY. ENDMETHOD. METHOD language_sap1_to_sap2. TRY. re_lang_sap2 = kHGwldKtJfHZXmphMQgfeIQhGnfrcH=>sap1_to_sap2( im_lang_sap1 ). CATCH zcx_abapgit_exception. RAISE no_assignment. ENDTRY. ENDMETHOD. METHOD language_sap2_to_sap1. TRY. re_lang_sap1 = kHGwldKtJfHZXmphMQgfeIQhGnfrcH=>sap2_to_sap1( im_lang_sap2 ). CATCH zcx_abapgit_exception. RAISE no_assignment. ENDTRY. ENDMETHOD. METHOD split_string. FIND FIRST OCCURRENCE OF cl_abap_char_utilities=>cr_lf IN iv_string. " Convert string into table depending on separator type CR_LF vs. LF IF sy-subrc = 0. SPLIT iv_string AT cl_abap_char_utilities=>cr_lf INTO TABLE rt_lines. ELSE. SPLIT iv_string AT cl_abap_char_utilities=>newline INTO TABLE rt_lines. ENDIF. ENDMETHOD. METHOD string_to_tab. DATA lv_length TYPE i. DATA lv_iterations TYPE i. DATA lv_offset TYPE i. FIELD-SYMBOLS TYPE any. CLEAR et_tab. ev_size = strlen( iv_str ). APPEND INITIAL LINE TO et_tab ASSIGNING . = iv_str. lv_length = cl_abap_typedescr=>describe_by_data( )->length / cl_abap_char_utilities=>charsize. lv_iterations = ev_size DIV lv_length. DO lv_iterations TIMES. lv_offset = sy-index * lv_length. APPEND INITIAL LINE TO et_tab ASSIGNING . = iv_str+lv_offset. ENDDO. ENDMETHOD. METHOD string_to_xstring. rv_xstr = string_to_xstring_utf8( iv_str ). ENDMETHOD. METHOD string_to_xstring_utf8. rv_xstring = kHGwldKtJfHZXmphMQgfcZaQwkuAox=>convert( iv_string ). ENDMETHOD. METHOD string_to_xstring_utf8_bom. IF iv_string IS INITIAL. RETURN. ENDIF. rv_xstring = string_to_xstring_utf8( iv_string ). " Add UTF-8 BOM IF xstrlen( rv_xstring ) < 3 OR rv_xstring(3) <> cl_abap_char_utilities=>byte_order_mark_utf8. rv_xstring = cl_abap_char_utilities=>byte_order_mark_utf8 && rv_xstring. ENDIF. ENDMETHOD. METHOD xstring_remove_bom. rv_xstr = iv_xstr. " cl_abap_conv_in_ce does not handle BOM in non-Unicode systems, so we remove it IF cl_abap_char_utilities=>charsize = 1 AND xstrlen( rv_xstr ) > 3 AND rv_xstr(3) = cl_abap_char_utilities=>byte_order_mark_utf8. rv_xstr = rv_xstr+3. ENDIF. ENDMETHOD. METHOD xstring_to_bintab. DATA lv_length TYPE i. DATA lv_iterations TYPE i. DATA lv_offset TYPE i. DATA lv_struct TYPE abap_bool. FIELD-SYMBOLS TYPE any. CLEAR et_bintab. ev_size = xstrlen( iv_xstr ). APPEND INITIAL LINE TO et_bintab ASSIGNING . lv_struct = boolc( cl_abap_typedescr=>describe_by_data( )->type_kind = cl_abap_typedescr=>typekind_struct1 ). IF lv_struct = abap_true. ASSIGN COMPONENT 1 OF STRUCTURE TO . ENDIF. = iv_xstr. lv_length = cl_abap_typedescr=>describe_by_data( )->length. lv_iterations = ev_size DIV lv_length. DO lv_iterations TIMES. lv_offset = sy-index * lv_length. APPEND INITIAL LINE TO et_bintab ASSIGNING . IF lv_struct = abap_true. ASSIGN COMPONENT 1 OF STRUCTURE TO . ENDIF. = iv_xstr+lv_offset. ENDDO. ENDMETHOD. METHOD xstring_to_int. * use the built-in type conversion rv_i = iv_xstring. ENDMETHOD. METHOD xstring_to_string_utf8. DATA lv_data TYPE xstring. DATA lv_length TYPE i. " Remove BOM for non-Unicode systems lv_data = xstring_remove_bom( iv_data ). lv_length = iv_length. IF lv_length <= 0. lv_length = xstrlen( lv_data ). ENDIF. rv_string = kHGwldKtJfHZXmphMQgfQYNhjRNkGw=>convert( iv_data = lv_data iv_length = lv_length ). ENDMETHOD. METHOD xstring_to_string_utf8_bom. DATA lv_xstring TYPE xstring. IF iv_xstring IS INITIAL. RETURN. ENDIF. lv_xstring = iv_xstring. " Add UTF-8 BOM IF xstrlen( lv_xstring ) < 3 OR lv_xstring(3) <> cl_abap_char_utilities=>byte_order_mark_utf8. lv_xstring = cl_abap_char_utilities=>byte_order_mark_utf8 && lv_xstring. ENDIF. rv_string = xstring_to_string_utf8( lv_xstring ). ENDMETHOD. METHOD x_to_bitbyte. CLEAR rv_bitbyte. GET BIT 1 OF iv_x INTO rv_bitbyte+0(1). GET BIT 2 OF iv_x INTO rv_bitbyte+1(1). GET BIT 3 OF iv_x INTO rv_bitbyte+2(1). GET BIT 4 OF iv_x INTO rv_bitbyte+3(1). GET BIT 5 OF iv_x INTO rv_bitbyte+4(1). GET BIT 6 OF iv_x INTO rv_bitbyte+5(1). GET BIT 7 OF iv_x INTO rv_bitbyte+6(1). GET BIT 8 OF iv_x INTO rv_bitbyte+7(1). ENDMETHOD. METHOD uccp. DATA lv_class TYPE string. DATA lv_xstr TYPE xstring. DATA lo_instance TYPE REF TO object. lv_class = 'CL_ABAP_CONV_IN_CE'. TRY. CALL METHOD (lv_class)=>uccp EXPORTING uccp = iv_uccp RECEIVING char = rv_char. CATCH cx_sy_dyn_call_illegal_class. lv_xstr = iv_uccp. CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_in EXPORTING codepage = 'UTF-16' RECEIVING instance = lo_instance. * convert endianness CONCATENATE lv_xstr+1(1) lv_xstr(1) INTO lv_xstr IN BYTE MODE. CALL METHOD lo_instance->('IF_ABAP_CONV_IN~CONVERT') EXPORTING source = lv_xstr RECEIVING result = rv_char. ENDTRY. ENDMETHOD. ENDCLASS. CLASS zcl_abapgit_ui_factory IMPLEMENTATION. METHOD get_asset_manager. DATA lo_buf TYPE REF TO zcl_abapgit_string_buffer. DATA li_asset_man TYPE REF TO zif_abapgit_gui_asset_manager. CREATE OBJECT lo_buf. li_asset_man = zcl_abapgit_gui_asset_manager=>create( ). **************************************************** * abapmerge Pragma [include] - ZABAPGIT_CSS_COMMON.W3MI.DATA.CSS **************************************************** lo_buf->add( '/*' ). lo_buf->add( ' * ABAPGIT COMMON CSS' ). lo_buf->add( ' */' ). lo_buf->add( '' ). lo_buf->add( '/* GLOBALS */' ). lo_buf->add( '' ). lo_buf->add( 'body {' ). lo_buf->add( ' overflow-x: hidden;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'body.centered {' ). lo_buf->add( ' max-width: 1280px;' ). lo_buf->add( ' margin: 0 auto;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'body.full_width {' ). lo_buf->add( ' width:100%;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'a, a:visited {' ). lo_buf->add( ' text-decoration: none;' ). lo_buf->add( '}' ). lo_buf->add( 'a:hover, a:active {' ). lo_buf->add( ' cursor: pointer;' ). lo_buf->add( ' text-decoration: underline;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'img {' ). lo_buf->add( ' border-width: 0px;' ). lo_buf->add( ' vertical-align: middle;' ). lo_buf->add( '}' ). lo_buf->add( 'table { border-collapse: collapse; }' ). lo_buf->add( 'pre { display: inline; }' ). lo_buf->add( 'sup {' ). lo_buf->add( ' vertical-align: top;' ). lo_buf->add( ' position: relative;' ). lo_buf->add( ' top: -0.5em;' ). lo_buf->add( ' font-size: 75%;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'input, textarea, select {' ). lo_buf->add( ' padding: 3px 0.5em;' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( 'input:focus, textarea:focus {' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.cursor-pointer {' ). lo_buf->add( ' cursor: pointer;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'span.separator {' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( ' padding-right: 0.5em;' ). lo_buf->add( ' opacity: 0.25;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* MODIFIERS */' ). lo_buf->add( '' ). lo_buf->add( '.emphasis { font-weight: bold !important; }' ). lo_buf->add( '.crossout { text-decoration: line-through !important; }' ). lo_buf->add( '.right { text-align:right; }' ). lo_buf->add( '.center { text-align:center; }' ). lo_buf->add( '.paddings { padding: 0.5em 0.5em; }' ). lo_buf->add( '.pad-sides { padding-left: 0.3em; padding-right: 0.3em; }' ). lo_buf->add( '.pad-1em { padding: 1em 1em; }' ). lo_buf->add( '.margin-v5 { margin-top: 0.5em; margin-bottom: 0.5em; }' ). lo_buf->add( '.margin-v1 { margin-top: 1em; margin-bottom: 1em; }' ). lo_buf->add( '.indent5em { padding-left: 0.5em; }' ). lo_buf->add( '.pad4px { padding: 4px; }' ). lo_buf->add( '.w100 { width: 100%; }' ). lo_buf->add( '.wmin { width: 1%; }' ). lo_buf->add( '.w40 { width: 40%; }' ). lo_buf->add( '.float-right { float: right; }' ). lo_buf->add( '.pad-right { padding-right: 6px; }' ). lo_buf->add( '.no-pad { padding: 0px !important; }' ). lo_buf->add( '.inline { display: inline; }' ). lo_buf->add( '.hidden { visibility: hidden; }' ). lo_buf->add( '.nodisplay { display: none }' ). lo_buf->add( '.m-em5-sides { margin-left: 0.5em; margin-right: 0.5em }' ). lo_buf->add( '.w600px { width: 600px }' ). lo_buf->add( '.w800px { width: 800px }' ). lo_buf->add( '.w1000px { width: 1000px }' ). lo_buf->add( '.wmax600px { max-width: 600px }' ). lo_buf->add( '.auto-center { /* use with max-width */' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( ' margin-left: auto;' ). lo_buf->add( ' margin-right: auto;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'span.boxed {' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' padding: 4px 7px;' ). lo_buf->add( ' margin-left: 0.2em;' ). lo_buf->add( ' margin-right: 0.2em;' ). lo_buf->add( ' font-size: smaller;' ). lo_buf->add( '}' ). lo_buf->add( 'span.boxed i.icon {' ). lo_buf->add( ' padding-right: 5px;' ). lo_buf->add( '}' ). lo_buf->add( '.red-filled-set {' ). lo_buf->add( ' border-width: 0px;' ). lo_buf->add( ' color: hsl(0, 78%, 93%);' ). lo_buf->add( ' background-color: hsl(0, 78%, 65%);' ). lo_buf->add( '}' ). lo_buf->add( '.green-filled-set {' ). lo_buf->add( ' border-width: 0px;' ). lo_buf->add( ' color: hsl(120, 45%, 90%);' ). lo_buf->add( ' background-color: hsl(120, 27%, 60%);' ). lo_buf->add( '}' ). lo_buf->add( '.yellow-filled-set {' ). lo_buf->add( ' border-width: 0px;' ). lo_buf->add( ' color: hsl(45, 99%, 90%);' ). lo_buf->add( ' background-color: hsl(45, 100%, 46%);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* PANELS */' ). lo_buf->add( '' ). lo_buf->add( 'div.panel {' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' padding: 0.5em 0.5em;' ). lo_buf->add( ' margin: 0.5em 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.dummydiv {' ). lo_buf->add( ' padding: 0.5em 1em;' ). lo_buf->add( ' text-align: center;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'a.close-btn {' ). lo_buf->add( ' text-decoration: none;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* STRUCTURE DIVS, HEADER & FOOTER */' ). lo_buf->add( '' ). lo_buf->add( 'div#header {' ). lo_buf->add( ' padding: 0.5em 0.5em;' ). lo_buf->add( ' border-bottom: 3px double;' ). lo_buf->add( '}' ). lo_buf->add( 'div#header > div { display: inline-block }' ). lo_buf->add( '' ). lo_buf->add( '.logo .icon { display: inline-block }' ). lo_buf->add( '.logo .icon:before { width: auto }' ). lo_buf->add( '' ). lo_buf->add( '/* official logo colors, not vars, redefine in themes directly*/' ). lo_buf->add( '.logo .icon.icon-git-alt { color: #f03c2e }' ). lo_buf->add( '.logo .icon.icon-abapgit {' ). lo_buf->add( ' color: #362701;' ). lo_buf->add( ' vertical-align: bottom;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div#header .logo { font-size: x-large }' ). lo_buf->add( 'div#header .page-title { font-size: x-large }' ). lo_buf->add( 'div#header span.spacer {' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( ' padding-right: 0.25em;' ). lo_buf->add( ' padding-left: 0.25em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div#footer .sponsor a { font-size: smaller; }' ). lo_buf->add( 'div#footer .logo { font-size: large }' ). lo_buf->add( 'div#footer {' ). lo_buf->add( ' padding: 0.5em 0.5em;' ). lo_buf->add( ' border-top: 3px double;' ). lo_buf->add( '}' ). lo_buf->add( 'div#footer .version {' ). lo_buf->add( ' margin-top: 0.5em;' ). lo_buf->add( ' font-size: small;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '#debug-output {' ). lo_buf->add( ' text-align: right;' ). lo_buf->add( ' padding-right: 0.5em;' ). lo_buf->add( ' font-size: smaller;' ). lo_buf->add( '}' ). lo_buf->add( '#debug-output p {' ). lo_buf->add( ' margin-top: 0em;' ). lo_buf->add( ' margin-bottom: 0em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* ERROR LOG */' ). lo_buf->add( '' ). lo_buf->add( 'div.log {' ). lo_buf->add( ' padding: 6px;' ). lo_buf->add( ' margin: 4px;' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' border-radius: 4px;' ). lo_buf->add( '}' ). lo_buf->add( 'div.log > span { display:block; }' ). lo_buf->add( 'div.log .icon { padding-right: 6px; }' ). lo_buf->add( '' ). lo_buf->add( '/* REPOSITORY */' ). lo_buf->add( '' ). lo_buf->add( 'div.repo {' ). lo_buf->add( ' padding: 0.5em 1em 0.5em 1em;' ). lo_buf->add( ' position: relative;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_name span.name {' ). lo_buf->add( ' font-weight: bold;' ). lo_buf->add( ' font-size: 14pt;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_name a.url {' ). lo_buf->add( ' font-size: 12pt;' ). lo_buf->add( ' margin-left: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_name span.url {' ). lo_buf->add( ' font-size: 12pt;' ). lo_buf->add( ' margin-left: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_name .icon {' ). lo_buf->add( ' padding-right: 4px;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_attr {' ). lo_buf->add( ' font-size: 12pt;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_attr span {' ). lo_buf->add( ' margin-left: 0.2em;' ). lo_buf->add( ' margin-right: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_attr span.bg_marker {' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' font-size: 8pt;' ). lo_buf->add( ' padding: 4px 2px 3px 2px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* ABAPGIT OBJECTS */' ). lo_buf->add( '' ). lo_buf->add( 'span.branch,' ). lo_buf->add( 'span.user-box,' ). lo_buf->add( 'span.package-box,' ). lo_buf->add( 'span.path-box,' ). lo_buf->add( 'span.transport-box {' ). lo_buf->add( ' padding: 2px 4px;' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' border-radius: 4px;' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'span.package-box i.icon {' ). lo_buf->add( ' margin-right: 0.15em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* MISC AND REFACTOR */' ). lo_buf->add( '' ). lo_buf->add( '.hidden-submit {' ). lo_buf->add( ' border: 0 none;' ). lo_buf->add( ' height: 0;' ). lo_buf->add( ' width: 0;' ). lo_buf->add( ' padding: 0;' ). lo_buf->add( ' margin: 0;' ). lo_buf->add( ' position: absolute;' ). lo_buf->add( ' overflow: hidden;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* STATE BLOCK COMMON*/' ). lo_buf->add( '' ). lo_buf->add( 'span.state-block {' ). lo_buf->add( ' margin-left: 1em;' ). lo_buf->add( ' font-family: Consolas, "Lucida Console", Courier, monospace;' ). lo_buf->add( ' font-size: x-small;' ). lo_buf->add( ' vertical-align: 13%;' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( ' text-align: center;' ). lo_buf->add( ' white-space: nowrap;' ). lo_buf->add( '}' ). lo_buf->add( 'span.state-block span {' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( ' padding: 0px 3px;' ). lo_buf->add( ' border-width: 1px;' ). lo_buf->add( ' border-style: solid;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* REPOSITORY TABLE*/' ). lo_buf->add( '' ). lo_buf->add( 'div.repo_container {' ). lo_buf->add( ' position: relative;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.repo_banner {' ). lo_buf->add( ' margin: 0em 1em 1em;' ). lo_buf->add( ' padding: 0.5em 0.5em;' ). lo_buf->add( ' text-align: center;' ). lo_buf->add( ' font-size: 85%;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.repo_tab {' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( ' line-height: 1.2;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_tab th {' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( ' padding: 0.5em;' ). lo_buf->add( ' border-bottom: 1px solid;' ). lo_buf->add( ' font-weight: normal;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_tab td {' ). lo_buf->add( ' vertical-align: middle;' ). lo_buf->add( ' padding-top: 2px;' ). lo_buf->add( ' padding-bottom: 2px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab td.icon {' ). lo_buf->add( ' width: 1px;' ). lo_buf->add( ' text-align: center;' ). lo_buf->add( ' padding-left: 8px;' ). lo_buf->add( ' padding-right: 4px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab td.transport {' ). lo_buf->add( ' width: 140px;' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_tab td.type {' ). lo_buf->add( ' width: 4em;' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab td.filename{' ). lo_buf->add( ' padding-left: 1em;' ). lo_buf->add( ' word-break: break-all;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab td.object {' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab td.files {' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( ' line-height: 1.5;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab tr.object_row{' ). lo_buf->add( ' border-top: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab td.cmd, .repo_tab th.cmd {' ). lo_buf->add( ' text-align: right;' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( ' padding-right: 0.7em;' ). lo_buf->add( ' min-width: 70px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab th.cmd .icon{' ). lo_buf->add( ' padding-right: 8px;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_tab tr:first-child td { border-top: 0px; }' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab tr:hover td {' ). lo_buf->add( ' background-image: linear-gradient(rgba(0, 0, 0, 0.075), rgba(0, 0, 0, 0.075));' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* STAGE */' ). lo_buf->add( '' ). lo_buf->add( 'th.stage-status { width: 30px; }' ). lo_buf->add( 'th.stage-objtype { width: 30px; }' ). lo_buf->add( 'input.stage-filter { width: 18em; }' ). lo_buf->add( '' ). lo_buf->add( '.stage_tab {' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' margin-top: 0.2em;' ). lo_buf->add( ' line-height: 1.5;' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab td {' ). lo_buf->add( ' border-top: 1px solid;' ). lo_buf->add( ' vertical-align: middle;' ). lo_buf->add( ' padding: 2px 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab th {' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( ' font-weight: normal;' ). lo_buf->add( ' padding: 4px 0.5em;' ). lo_buf->add( ' border-bottom: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab td.status {' ). lo_buf->add( ' width: 2em;' ). lo_buf->add( ' text-align: center;' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab td.highlight {' ). lo_buf->add( ' font-weight: bold;' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab td.name {' ). lo_buf->add( ' word-break: break-all;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.stage_tab tr:first-child td { border-top: 0px; }' ). lo_buf->add( '' ). lo_buf->add( '.stage_tab tr:hover td {' ). lo_buf->add( ' background-image: linear-gradient(rgba(0, 0, 0, 0.075), rgba(0, 0, 0, 0.075));' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.stage_tab td.cmd { cursor: pointer; }' ). lo_buf->add( '.stage_tab td.cmd a { padding: 0px 4px; }' ). lo_buf->add( '.stage_tab th.cmd a { padding: 0px 4px; }' ). lo_buf->add( '.stage_tab tbody tr:first-child td { padding-top: 0.5em; }' ). lo_buf->add( '.stage_tab tbody tr:last-child td { padding-bottom: 0.5em; }' ). lo_buf->add( '' ). lo_buf->add( '/* COMMIT */' ). lo_buf->add( '' ). lo_buf->add( 'div.form-container {' ). lo_buf->add( ' padding: 1em 1em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'form.aligned-form {' ). lo_buf->add( ' display: table;' ). lo_buf->add( ' border-spacing: 2px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'form.aligned-form label {' ). lo_buf->add( ' padding-right: 1em;' ). lo_buf->add( ' vertical-align: middle;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'form.aligned-form select {' ). lo_buf->add( ' padding-right: 1em;' ). lo_buf->add( ' vertical-align: middle;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'form.aligned-form span.sub-title {' ). lo_buf->add( ' font-size: smaller;' ). lo_buf->add( ' padding-top: 8px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'form.aligned-form div.row { display: table-row; }' ). lo_buf->add( 'form.aligned-form label { display: table-cell; }' ). lo_buf->add( 'form.aligned-form input { display: table-cell; }' ). lo_buf->add( 'form.aligned-form input[type="text"] { width: 25em; }' ). lo_buf->add( 'form.aligned-form span.cell { display: table-cell; }' ). lo_buf->add( '' ). lo_buf->add( '/* SETTINGS STYLES */' ). lo_buf->add( '' ). lo_buf->add( 'div.settings_container {' ). lo_buf->add( ' padding: 0.5em 0.5em 1em;' ). lo_buf->add( ' font-size: 10pt;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.settings_section {' ). lo_buf->add( ' margin-left:50px' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.settings td:first-child {' ). lo_buf->add( ' padding-left: 1em;' ). lo_buf->add( ' padding-right: 1em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* DIFF */' ). lo_buf->add( '' ). lo_buf->add( 'div.diff {' ). lo_buf->add( ' padding: 0.7em' ). lo_buf->add( '}' ). lo_buf->add( 'div.diff_head {' ). lo_buf->add( ' padding-bottom: 0.7em;' ). lo_buf->add( '}' ). lo_buf->add( 'span.diff_name {' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( 'span.diff_changed_by {' ). lo_buf->add( ' float: right;' ). lo_buf->add( '}' ). lo_buf->add( 'span.diff_banner {' ). lo_buf->add( ' border-style: solid;' ). lo_buf->add( ' border-width: 1px;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' padding-left: 0.3em;' ). lo_buf->add( ' padding-right: 0.3em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.diff_content {' ). lo_buf->add( ' border-top: 1px solid;' ). lo_buf->add( ' border-bottom: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.diff_content tbody tr td{' ). lo_buf->add( ' width: 50%;' ). lo_buf->add( ' vertical-align: top' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.diff_head span.state-block {' ). lo_buf->add( ' margin-left: 0.5em;' ). lo_buf->add( ' font-size: inherit;' ). lo_buf->add( ' vertical-align: initial;' ). lo_buf->add( '}' ). lo_buf->add( 'div.diff_head span.state-block span {' ). lo_buf->add( ' padding: 0px 4px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* DIFF TABLE */' ). lo_buf->add( '' ). lo_buf->add( 'table.diff_tab {' ). lo_buf->add( ' font-family: Consolas, Courier, monospace;' ). lo_buf->add( ' font-size: 10pt;' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab td,' ). lo_buf->add( 'table.diff_tab th {' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( ' padding-right: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab th {' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( ' font-weight: normal;' ). lo_buf->add( ' padding-top: 3px;' ). lo_buf->add( ' padding-bottom: 3px;' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab thead.header th {' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( ' font-weight: bold;' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( ' font-size: 9pt;' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab td.num, th.num {' ). lo_buf->add( ' width: 1%;' ). lo_buf->add( ' min-width: 2em;' ). lo_buf->add( ' padding-right: 8px;' ). lo_buf->add( ' padding-left: 8px;' ). lo_buf->add( ' text-align: right !important;' ). lo_buf->add( ' border-left: 1px solid;' ). lo_buf->add( ' border-right: 1px solid;' ). lo_buf->add( ' -ms-user-select: none;' ). lo_buf->add( ' user-select: none;' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab td.patch, th.patch {' ). lo_buf->add( ' width: 1%;' ). lo_buf->add( ' min-width: 1.5em;' ). lo_buf->add( ' padding-right: 8px;' ). lo_buf->add( ' padding-left: 8px;' ). lo_buf->add( ' text-align: right !important;' ). lo_buf->add( ' border-left: 1px solid;' ). lo_buf->add( ' border-right: 1px solid;' ). lo_buf->add( ' -ms-user-select: none;' ). lo_buf->add( ' user-select: none;' ). lo_buf->add( ' cursor: pointer;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.diff_tab tr.diff_line:hover td {' ). lo_buf->add( ' background-image: linear-gradient(rgba(0, 0, 0, 0.075), rgba(0, 0, 0, 0.075));' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.diff_tab td.num::before {' ). lo_buf->add( ' content: attr(line-num);' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab code {' ). lo_buf->add( ' font-family: inherit;' ). lo_buf->add( ' white-space: pre;' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab td.code {' ). lo_buf->add( ' word-wrap: break-word;' ). lo_buf->add( ' white-space: pre-wrap;' ). lo_buf->add( ' overflow: visible;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.diff_tab tbody tr:first-child td { padding-top: 0.5em; }' ). lo_buf->add( 'table.diff_tab tbody tr:last-child td { padding-bottom: 0.5em; }' ). lo_buf->add( '' ). lo_buf->add( 'table.diff_tab td.mark, th.mark {' ). lo_buf->add( ' width: 0.1%;' ). lo_buf->add( ' -ms-user-select: none;' ). lo_buf->add( ' user-select: none;' ). lo_buf->add( ' cursor: default;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.diff_select_left td.diff_right,' ). lo_buf->add( '.diff_select_left td.diff_right *,' ). lo_buf->add( '.diff_select_left th.diff_right,' ). lo_buf->add( '.diff_select_left th.diff_right *,' ). lo_buf->add( '.diff_select_right td.diff_left,' ). lo_buf->add( '.diff_select_right td.diff_left *,' ). lo_buf->add( '.diff_select_right th.diff_left,' ). lo_buf->add( '.diff_select_right th.diff_left * {' ). lo_buf->add( ' -ms-user-select: none;' ). lo_buf->add( ' user-select: none;' ). lo_buf->add( ' cursor: text;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.diff_select_left td.diff_left,' ). lo_buf->add( '.diff_select_left td.diff_left *,' ). lo_buf->add( '.diff_select_left th.diff_left,' ). lo_buf->add( '.diff_select_left th.diff_left *,' ). lo_buf->add( '.diff_select_right td.diff_right,' ). lo_buf->add( '.diff_select_right td.diff_right *,' ). lo_buf->add( '.diff_select_right th.diff_right,' ). lo_buf->add( '.diff_select_right th.diff_right * {' ). lo_buf->add( ' -ms-user-select: text;' ). lo_buf->add( ' user-select: text;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'td.diff_others::selection,' ). lo_buf->add( 'td.diff_others *::selection,' ). lo_buf->add( 'th.diff_others::selection,' ). lo_buf->add( 'th.diff_others *::selection {' ). lo_buf->add( ' background-color: transparent;' ). lo_buf->add( ' cursor: default;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.diff_select_left td.diff_right::selection,' ). lo_buf->add( '.diff_select_left td.diff_right *::selection,' ). lo_buf->add( '.diff_select_left th.diff_right::selection,' ). lo_buf->add( '.diff_select_left th.diff_right *::selection,' ). lo_buf->add( '.diff_select_right td.diff_left::selection,' ). lo_buf->add( '.diff_select_right td.diff_left *::selection,' ). lo_buf->add( '.diff_select_right th.diff_left::selection,' ). lo_buf->add( '.diff_select_right th.diff_left *::selection {' ). lo_buf->add( ' background-color: transparent;' ). lo_buf->add( ' cursor: text;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* DEBUG INFO STYLES */' ). lo_buf->add( '' ). lo_buf->add( 'div.debug_container {' ). lo_buf->add( ' padding: 0.5em;' ). lo_buf->add( ' font-size: 10pt;' ). lo_buf->add( ' font-family: Consolas, Courier, monospace;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.debug_container p {' ). lo_buf->add( ' margin: 0px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* *** */' ). lo_buf->add( '' ). lo_buf->add( 'li.action_link.enabled{' ). lo_buf->add( ' visibility: visible;' ). lo_buf->add( ' position: relative;' ). lo_buf->add( ' display: block;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'li.action_link:not(enabled){' ). lo_buf->add( ' visibility: hidden;' ). lo_buf->add( ' position: fixed; /* so it does not take up space when hidden */' ). lo_buf->add( ' display: none;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* TUTORIAL */' ). lo_buf->add( '' ). lo_buf->add( 'div.tutorial {' ). lo_buf->add( ' margin-top: 3px;' ). lo_buf->add( ' padding: 0.5em 1em 0.5em 1em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.tutorial li { margin: 2px 0px }' ). lo_buf->add( 'div.tutorial h1 { font-size: 18pt; }' ). lo_buf->add( 'div.tutorial h2 { font-size: 14pt;}' ). lo_buf->add( '' ). lo_buf->add( '/* MENU */' ). lo_buf->add( '' ). lo_buf->add( '/* Special credits to example at https://codepen.io/philhoyt/pen/ujHzd */' ). lo_buf->add( '/* container div, aligned left, but with .float-right modifier aligns right */' ). lo_buf->add( '' ). lo_buf->add( '.nav-container ul {' ). lo_buf->add( ' list-style: none;' ). lo_buf->add( ' position: relative;' ). lo_buf->add( ' float: left;' ). lo_buf->add( ' margin: 0;' ). lo_buf->add( ' padding: 0;' ). lo_buf->add( ' white-space: nowrap;' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( '}' ). lo_buf->add( '.nav-container.float-right ul { float: right; }' ). lo_buf->add( '' ). lo_buf->add( '.nav-container ul a {' ). lo_buf->add( ' display: block;' ). lo_buf->add( ' text-decoration: none;' ). lo_buf->add( ' line-height: 30px;' ). lo_buf->add( ' padding: 0 12px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* clearfix https://css-tricks.com/snippets/css/clear-fix/ */' ). lo_buf->add( '.nav-container:after {' ). lo_buf->add( ' clear: both;' ). lo_buf->add( ' display: block;' ). lo_buf->add( ' content: "";' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* submenues align to left or right border of the active item' ). lo_buf->add( ' depending on .float-right modifier */' ). lo_buf->add( '.nav-container ul li {' ). lo_buf->add( ' position: relative;' ). lo_buf->add( ' float: left;' ). lo_buf->add( ' margin: 0;' ). lo_buf->add( ' padding: 0;' ). lo_buf->add( '}' ). lo_buf->add( '.nav-container.float-right ul ul { left: auto; right: 0; }' ). lo_buf->add( '.nav-container ul li.current-menu-item { font-weight: 700; }' ). lo_buf->add( '.nav-container ul li.force-nav-hover ul { display: block; }' ). lo_buf->add( '.nav-container ul li:hover > ul { display: block; }' ). lo_buf->add( '' ). lo_buf->add( '/* special selection style for 1st level items (see also .corner below) */' ). lo_buf->add( '' ). lo_buf->add( '.nav-container ul ul {' ). lo_buf->add( ' display: none;' ). lo_buf->add( ' position: absolute;' ). lo_buf->add( ' top: 100%;' ). lo_buf->add( ' left: 0;' ). lo_buf->add( ' z-index: 1;' ). lo_buf->add( ' padding: 0;' ). lo_buf->add( ' box-shadow: 1px 1px 3px 0px #bbb;' ). lo_buf->add( ' max-height: 700px;' ). lo_buf->add( ' overflow: auto;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.nav-container ul ul li {' ). lo_buf->add( ' float: none;' ). lo_buf->add( ' min-width: 160px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.nav-container ul ul a {' ). lo_buf->add( ' line-height: 120%;' ). lo_buf->add( ' padding: 8px 15px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.nav-container ul ul ul {' ). lo_buf->add( ' top: 0;' ). lo_buf->add( ' left: 100%;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.nav-container.float-right ul ul ul {' ). lo_buf->add( ' left: auto;' ). lo_buf->add( ' right: 100%;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* Minizone to extent hover area,' ). lo_buf->add( ' aligned to the left or to the right of the selected item' ). lo_buf->add( ' depending on .float-right modifier */' ). lo_buf->add( '.nav-container > ul > li > div.minizone {' ). lo_buf->add( ' display: none;' ). lo_buf->add( ' z-index: 1;' ). lo_buf->add( ' position: absolute;' ). lo_buf->add( ' padding: 0px;' ). lo_buf->add( ' width: 16px;' ). lo_buf->add( ' height: 100%;' ). lo_buf->add( ' bottom: 0px;' ). lo_buf->add( ' left: 100%;' ). lo_buf->add( '}' ). lo_buf->add( '.nav-container > ul > li:hover div.minizone { display: block; }' ). lo_buf->add( '.nav-container.float-right > ul > li > div.minizone {' ). lo_buf->add( ' left: auto;' ). lo_buf->add( ' right: 100%;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* icons - text-align strictly left - otherwise look ugly' ). lo_buf->add( ' + bite a bit of left padding for nicer look' ). lo_buf->add( ' + forbids item text wrapping (maybe can be done differently) */' ). lo_buf->add( '.nav-container ul ul li a .icon {' ). lo_buf->add( ' padding-right: 10px;' ). lo_buf->add( ' margin-left: -3px;' ). lo_buf->add( '}' ). lo_buf->add( '.nav-container ul.with-icons li {' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( ' white-space: nowrap;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* Special .corner modifier - hangs menu at the top right corner' ). lo_buf->add( ' and cancels 1st level background coloring */' ). lo_buf->add( '.nav-container.corner {' ). lo_buf->add( ' position: absolute;' ). lo_buf->add( ' right: 0px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* Toolbar separator style */' ). lo_buf->add( '.nav-container ul ul li.separator {' ). lo_buf->add( ' font-size: x-small;' ). lo_buf->add( ' text-align: center;' ). lo_buf->add( ' padding: 4px 0;' ). lo_buf->add( ' text-transform: uppercase;' ). lo_buf->add( ' border-bottom: 1px solid;' ). lo_buf->add( ' border-top: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( '.nav-container ul ul li.separator:first-child { border-top: none; }' ). lo_buf->add( '' ). lo_buf->add( '/* NEWS ANNOUNCEMENT */' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel {' ). lo_buf->add( ' position: absolute;' ). lo_buf->add( ' z-index: 99;' ). lo_buf->add( ' top: 36px;' ). lo_buf->add( ' left: 50%;' ). lo_buf->add( ' width: 40em;' ). lo_buf->add( ' margin-left: -20em;' ). lo_buf->add( ' box-shadow: 1px 1px 3px 2px #dcdcdc;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel-fixed {' ). lo_buf->add( ' position: fixed;' ). lo_buf->add( ' top: 15%;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel div.info-hint {' ). lo_buf->add( ' text-transform: uppercase;' ). lo_buf->add( ' font-size: small;' ). lo_buf->add( ' padding: 8px 6px 0px;' ). lo_buf->add( ' text-align: center;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel div.info-title {' ). lo_buf->add( ' text-transform: uppercase;' ). lo_buf->add( ' font-size: small;' ). lo_buf->add( ' padding: 6px;' ). lo_buf->add( ' text-align: center;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel div.info-title a.close-btn {' ). lo_buf->add( ' padding-left: 12px;' ). lo_buf->add( ' padding-right: 2px;' ). lo_buf->add( ' position: relative;' ). lo_buf->add( ' bottom: 1px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel div.info-list {' ). lo_buf->add( ' padding: 0.8em 0.7em 1em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel ul {' ). lo_buf->add( ' padding-left: 10px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel li {' ). lo_buf->add( ' padding-left: 0px;' ). lo_buf->add( ' list-style-type: none;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel h1:first-child { margin: auto; }' ). lo_buf->add( 'div.info-panel h1 {' ). lo_buf->add( ' font-size: inherit;' ). lo_buf->add( ' padding: 6px 4px;' ). lo_buf->add( ' margin: 4px auto auto;' ). lo_buf->add( ' text-decoration: underline;' ). lo_buf->add( ' font-weight: normal;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel .version-marker {' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( ' margin-left: 20px;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' padding: 0px 6px;' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel .update { border: 1px solid; }' ). lo_buf->add( 'div.info-panel div.info-list td { padding-right: 1em }' ). lo_buf->add( '' ). lo_buf->add( '/* ERROR MESSAGE PANEL */' ). lo_buf->add( '' ). lo_buf->add( 'div.message-panel {' ). lo_buf->add( ' z-index: 99;' ). lo_buf->add( ' box-shadow: 2px 2px 4px 0px hsla(0, 0%, 0%, .1);' ). lo_buf->add( ' padding: 0.5em 1em;' ). lo_buf->add( ' position: fixed;' ). lo_buf->add( ' bottom: 12px;' ). lo_buf->add( ' width: 95%;' ). lo_buf->add( ' margin: 0 auto;' ). lo_buf->add( ' max-width: 1248px;' ). lo_buf->add( '' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' border-radius: 5px;' ). lo_buf->add( ' border-color: hsl(0, 42%, 64%);' ). lo_buf->add( ' background-color: hsla(0, 42%, 90%, 1);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.message-panel-bar {' ). lo_buf->add( ' position: absolute;' ). lo_buf->add( ' bottom: 10px;' ). lo_buf->add( ' right: 10px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.message-panel-commands {' ). lo_buf->add( ' display: none;' ). lo_buf->add( ' margin-right: 2em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.message-panel-commands a {' ). lo_buf->add( ' padding: 0em 0.5em;' ). lo_buf->add( ' border-left: 1px solid;' ). lo_buf->add( ' border-left-color: #ccc;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.message-panel-commands a:first-child {' ). lo_buf->add( ' padding-left: 0;' ). lo_buf->add( ' border-left: none;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.message-panel:hover .message-panel-commands {' ). lo_buf->add( ' display: block;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* TOOLTIP TEXT */' ). lo_buf->add( '' ). lo_buf->add( '.link-hint {' ). lo_buf->add( ' line-height: 1em;' ). lo_buf->add( ' text-align: center;' ). lo_buf->add( ' padding: 5px 15px;' ). lo_buf->add( ' border-radius: 4px;' ). lo_buf->add( ' position: absolute;' ). lo_buf->add( ' z-index: 1;' ). lo_buf->add( ' margin-top: -30px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.link-hint-a {' ). lo_buf->add( ' margin-left: -60px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.link-hint-input {' ). lo_buf->add( ' margin-left: -30px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.link-hint-i {' ). lo_buf->add( ' margin-left: -30px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.link-hint .pending { color: hsla(0, 0%, 0%, 0.2); }' ). lo_buf->add( '' ). lo_buf->add( '/* Tooltip arrow */' ). lo_buf->add( '.link-hint::after {' ). lo_buf->add( ' content: "";' ). lo_buf->add( ' position: absolute;' ). lo_buf->add( ' top: 100%;' ). lo_buf->add( ' left: 50%;' ). lo_buf->add( ' margin-left: -5px;' ). lo_buf->add( ' border-width: 5px;' ). lo_buf->add( ' border-style: solid;' ). lo_buf->add( ' border-color: transparent;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* HOTKEYS */' ). lo_buf->add( '' ). lo_buf->add( 'ul.hotkeys {' ). lo_buf->add( ' list-style-type: none;' ). lo_buf->add( ' padding: 0;' ). lo_buf->add( ' margin: 0;' ). lo_buf->add( ' font-size: smaller;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'ul.hotkeys span.key-id {' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' padding: 1px 7px;' ). lo_buf->add( ' width: 3em;' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( ' text-align: center;' ). lo_buf->add( ' margin-top: 0.2em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'ul.hotkeys span.key-descr {' ). lo_buf->add( ' margin-left: 1.2em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.corner-hint {' ). lo_buf->add( ' position: fixed;' ). lo_buf->add( ' bottom: 10px;' ). lo_buf->add( ' right: 10px;' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' padding: 4px;' ). lo_buf->add( ' font-size: smaller;' ). lo_buf->add( ' opacity: 0.5;' ). lo_buf->add( ' z-index: 99;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* Commit popup */' ). lo_buf->add( 'table.commit tr .title {' ). lo_buf->add( ' font-weight: bold;' ). lo_buf->add( ' vertical-align: top;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* Repo overview */' ). lo_buf->add( '.repo-overview {' ). lo_buf->add( ' padding: 0.5em 0.7em;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview table {' ). lo_buf->add( ' font-size: 90%;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview-toolbar {' ). lo_buf->add( ' padding: 1em 1em;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview-toolbar label {' ). lo_buf->add( ' margin-right: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview th {' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( ' font-weight: normal;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview table {' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview thead tr {' ). lo_buf->add( ' border-bottom: 1px solid;' ). lo_buf->add( ' line-height: 1.5;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview tfoot tr {' ). lo_buf->add( ' border-top: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview tr.favorite .icon-star {' ). lo_buf->add( ' color: #5e8dc9 !important;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview td,' ). lo_buf->add( '.repo-overview th {' ). lo_buf->add( ' padding: 6px 6px; /* maybe use height ? */' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview .ro-detail { display: none; }' ). lo_buf->add( '.repo-overview .ro-go a {' ). lo_buf->add( ' padding: 0px 0.15em;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview .ro-go a:hover {' ). lo_buf->add( ' color: #ff721e;' ). lo_buf->add( ' text-decoration: none;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview td.labels {' ). lo_buf->add( ' max-width: 18ch;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* REPO LABELS */' ). lo_buf->add( '' ). lo_buf->add( '.repo-label-catalog {' ). lo_buf->add( ' padding: 1em 1em;' ). lo_buf->add( ' margin-top: -1em;' ). lo_buf->add( '}' ). lo_buf->add( '.repo-label-catalog label {' ). lo_buf->add( ' margin-right: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( 'ul.repo-labels {' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( ' list-style-type: none;' ). lo_buf->add( ' padding-inline-start: 0px;' ). lo_buf->add( ' padding-left: 0px;' ). lo_buf->add( ' margin-block-start: 0px;' ). lo_buf->add( ' margin-block-end: 0px;' ). lo_buf->add( ' margin-top: 0px;' ). lo_buf->add( ' margin-bottom: 0px;' ). lo_buf->add( '}' ). lo_buf->add( 'ul.repo-labels li {' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( ' padding: 3px 5px;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' border-style: solid;' ). lo_buf->add( ' border-width: 1px;' ). lo_buf->add( ' margin-bottom: 2px;' ). lo_buf->add( '}' ). lo_buf->add( 'ul.repo-labels li a {' ). lo_buf->add( ' color: inherit;' ). lo_buf->add( '}' ). lo_buf->add( 'ul.repo-labels li:not(:last-child) { margin-right: 0.3em; }' ). lo_buf->add( 'table ul.repo-labels li {' ). lo_buf->add( ' font-size: 90%;' ). lo_buf->add( ' padding: 2px 4px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* LABEL COLORS */' ). lo_buf->add( '' ). lo_buf->add( '.rl-white {' ). lo_buf->add( ' color: hsl(0, 0%, 30%);' ). lo_buf->add( ' background-color: hsl(0, 0%, 100%);' ). lo_buf->add( ' border-color: hsl(0, 0%, 80%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-white-b {' ). lo_buf->add( ' color: hsl(214, 100%, 60%);' ). lo_buf->add( ' background-color: hsl(0, 0%, 100%);' ). lo_buf->add( ' border-color: hsl(214, 89%, 86%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-white-r {' ). lo_buf->add( ' color: hsl(0, 100%, 41%);' ). lo_buf->add( ' background-color: hsl(0, 0%, 100%);' ). lo_buf->add( ' border-color: hsl(0, 100%, 85%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-grey {' ). lo_buf->add( ' color: hsl(0, 0%, 100%);' ). lo_buf->add( ' background-color: hsl(0, 0%, 70%);' ). lo_buf->add( ' border-color: hsl(0, 0%, 60%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-dark-w {' ). lo_buf->add( ' color: hsl(0, 0%, 100%);' ). lo_buf->add( ' background-color: hsl(0, 0%, 25%);' ). lo_buf->add( ' border-color: hsl(0, 0%, 25%);;' ). lo_buf->add( '}' ). lo_buf->add( '.rl-dark-y {' ). lo_buf->add( ' color: hsl(43, 95%, 75%);' ). lo_buf->add( ' background-color: hsl(0, 0%, 25%);' ). lo_buf->add( ' border-color: hsl(0, 0%, 25%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-dark-r {' ). lo_buf->add( ' color: hsl(0, 100%, 74%);' ). lo_buf->add( ' background-color: hsl(0, 0%, 25%);' ). lo_buf->add( ' border-color: hsl(0, 0%, 25%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-dark-b {' ). lo_buf->add( ' color: hsl(227, 92%, 80%);' ). lo_buf->add( ' background-color: hsl(0, 0%, 25%);' ). lo_buf->add( ' border-color: hsl(0, 0%, 25%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-lightblue {' ). lo_buf->add( ' color: hsl(217, 80%, 25%);' ). lo_buf->add( ' background-color: hsl(216, 76%, 84%);' ). lo_buf->add( ' border-color: hsl(216, 76%, 73%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-darkblue {' ). lo_buf->add( ' color: hsl(218, 77%, 88%);' ). lo_buf->add( ' background-color: hsl(217, 66%, 32%);' ). lo_buf->add( ' border-color: hsl(217, 66%, 20%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-lightgreen {' ). lo_buf->add( ' color: hsl(153, 76%, 18%);' ). lo_buf->add( ' background-color: hsl(152, 65%, 82%);' ). lo_buf->add( ' border-color: hsl(152, 65%, 65%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-darkgreen {' ). lo_buf->add( ' color: hsl(0, 0%, 100%);' ). lo_buf->add( ' background-color: hsl(153, 77%, 37%);' ). lo_buf->add( ' border-color: hsl(153, 77%, 30%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-lightred {' ). lo_buf->add( ' color: hsl(8, 86%, 29%);' ). lo_buf->add( ' background-color: hsl(8, 74%, 80%);' ). lo_buf->add( ' border-color: hsl(8, 74%, 70%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-darkred {' ). lo_buf->add( ' color: hsl(7, 76%, 85%);' ). lo_buf->add( ' background-color: hsl(8, 77%, 29%);' ). lo_buf->add( ' border-color: hsl(8, 77%, 20%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-yellow {' ). lo_buf->add( ' color: hsl(44, 87%, 22%);' ). lo_buf->add( ' background-color: hsl(44, 94%, 87%);' ). lo_buf->add( ' border-color: hsl(44, 94%, 70%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-darkyellow {' ). lo_buf->add( ' color: hsl(49, 100%, 24%);' ). lo_buf->add( ' background-color: hsl(49, 100%, 64%);' ). lo_buf->add( ' border-color: hsl(49, 100%, 49%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-orange {' ). lo_buf->add( ' color: hsl(0, 0%, 100%);' ). lo_buf->add( ' background-color: hsl(19, 100%, 61%);' ). lo_buf->add( ' border-color: hsl(19, 100%, 50%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-brown {' ). lo_buf->add( ' color: hsl(33, 100%, 89%);' ). lo_buf->add( ' background-color: hsl(33, 66%, 39%);' ). lo_buf->add( ' border-color: hsl(33, 66%, 30%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-pink {' ). lo_buf->add( ' color: hsl(340, 35%, 45%);' ). lo_buf->add( ' background-color: hsl(340, 85%, 77%);' ). lo_buf->add( ' border-color: hsl(340, 85%, 65%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-teal {' ). lo_buf->add( ' color: hsl(0, 0%, 100%);' ). lo_buf->add( ' background-color: hsl(191, 61%, 45%);' ). lo_buf->add( ' border-color: hsl(191, 61%, 37%);' ). lo_buf->add( '}' ). lo_buf->add( '.rl-darkviolet {' ). lo_buf->add( ' color: hsl(0, 0%, 100%);' ). lo_buf->add( ' background-color: hsl(258, 100%, 80%);' ). lo_buf->add( ' border-color: hsl(258, 100%, 72%);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* FORM FIELD HELP TOOLTIP */' ). lo_buf->add( '' ). lo_buf->add( '.form-field-help-tooltip {' ). lo_buf->add( ' position: relative;' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( '}' ). lo_buf->add( '.form-field-help-tooltip .form-field-help-tooltip-text {' ). lo_buf->add( ' visibility: hidden;' ). lo_buf->add( ' width: 40ch;' ). lo_buf->add( ' border-radius: 5px;' ). lo_buf->add( ' position: absolute;' ). lo_buf->add( ' z-index: 1;' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' padding: 0.4em 0.6em;' ). lo_buf->add( ' text-align: justify;' ). lo_buf->add( '}' ). lo_buf->add( '.form-field-help-tooltip .form-field-help-tooltip-text p {' ). lo_buf->add( ' margin: 0px;' ). lo_buf->add( '}' ). lo_buf->add( '.form-field-help-tooltip .form-field-help-tooltip-text {' ). lo_buf->add( ' background-color: white;' ). lo_buf->add( ' border-color: #888;' ). lo_buf->add( '}' ). lo_buf->add( '.form-field-help-tooltip:hover .form-field-help-tooltip-text {' ). lo_buf->add( ' visibility: visible;' ). lo_buf->add( '}' ). lo_buf->add( '.form-field-help-tooltip code {' ). lo_buf->add( ' border-radius: 5px;' ). lo_buf->add( ' font-size: 90%;' ). lo_buf->add( ' padding: 0.1em 0.4em;' ). lo_buf->add( ' background-color: #e2e2e2;' ). lo_buf->add( ' word-wrap: break-word;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* TABLE COMPONENT DEFAULT STYLE */' ). lo_buf->add( '' ). lo_buf->add( 'div.default-table-container {' ). lo_buf->add( ' padding: 6px 0.5em;' ). lo_buf->add( ' background-color: white;' ). lo_buf->add( ' border-radius: 6px;' ). lo_buf->add( ' overflow-x: hidden;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.default-table {' ). lo_buf->add( ' line-height: 1.5;' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.default-table thead tr:last-child {' ). lo_buf->add( ' border-bottom: #efefef solid 1px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.default-table td,' ). lo_buf->add( 'table.default-table th {' ). lo_buf->add( ' padding: 6px 8px;' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.default-table th {' ). lo_buf->add( ' white-space: nowrap;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.default-table th span.sort-arrow {' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( ' color: hsla(0, 0%, 0%, 0.15);' ). lo_buf->add( ' width: 1em; /*for constant width*/' ). lo_buf->add( ' text-align: right;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.default-table th span.sort-active {' ). lo_buf->add( ' color: #4078c0;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.default-table th {' ). lo_buf->add( ' padding-bottom: 10px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* CODE INSPECTOR */' ). lo_buf->add( '' ). lo_buf->add( 'div.ci {' ). lo_buf->add( ' margin-top: 1px;' ). lo_buf->add( ' margin-bottom: 1px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.ci-msg {' ). lo_buf->add( ' padding: 0.7em 1em 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( 'div.ci-msg span.ci-variant {' ). lo_buf->add( ' font-weight: bold;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.ci-stats {' ). lo_buf->add( ' padding: 0.5em 1em;' ). lo_buf->add( '}' ). lo_buf->add( 'div.ci-stats span.count {' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( ' padding: 2px 6px;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.ci-detail {' ). lo_buf->add( ' padding: 6px 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.ci-detail table td,' ). lo_buf->add( 'div.ci-detail table th {' ). lo_buf->add( ' vertical-align: text-top;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.ci-detail table th[data-cid="kind"],' ). lo_buf->add( 'div.ci-detail table th[data-cid="obj_type"] {' ). lo_buf->add( ' white-space: nowrap' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.ci-detail table td[data-cid="kind"] span {' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' width: 1em;' ). lo_buf->add( ' height: 1em;' ). lo_buf->add( ' vertical-align: inherit;' ). lo_buf->add( ' color: transparent;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.ci-detail table td[data-cid="text"] {' ). lo_buf->add( ' font-size: smaller;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* FLOATING BUTTONS */' ). lo_buf->add( '' ). lo_buf->add( '.floating-button {' ). lo_buf->add( ' position: fixed;' ). lo_buf->add( ' top: 8em;' ). lo_buf->add( ' right: 2.8em;' ). lo_buf->add( ' padding: 1em 1.8em;' ). lo_buf->add( ' border-radius: 4px;' ). lo_buf->add( ' border-width: 1px;' ). lo_buf->add( ' border-style: solid;' ). lo_buf->add( ' box-shadow: 2px 2px 6px 0px #ccc;' ). lo_buf->add( ' cursor: pointer;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* COMMAND PALETTE */' ). lo_buf->add( '' ). lo_buf->add( '.cmd-palette {' ). lo_buf->add( ' position: absolute;' ). lo_buf->add( ' z-index: 99;' ). lo_buf->add( ' top: 36px;' ). lo_buf->add( ' left: 50%;' ). lo_buf->add( ' width: 40em;' ). lo_buf->add( ' margin-left: -20em;' ). lo_buf->add( ' box-shadow: 1px 1px 3px 2px #dcdcdc;' ). lo_buf->add( ' background-color: white;' ). lo_buf->add( ' border: solid 2px;' ). lo_buf->add( ' padding: 0px 1px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.cmd-palette input {' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( ' box-sizing: border-box;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.cmd-palette ul {' ). lo_buf->add( ' max-height: 10em;' ). lo_buf->add( ' overflow-y: scroll;' ). lo_buf->add( ' margin: 4px 0;' ). lo_buf->add( ' padding: 2px 4px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.cmd-palette li {' ). lo_buf->add( ' list-style-type: none;' ). lo_buf->add( ' cursor: default;' ). lo_buf->add( ' padding: 4px 6px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.cmd-palette li .icon {' ). lo_buf->add( ' margin-right: 10px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.cmd-palette li .icon:before {' ). lo_buf->add( ' width: 1.1em;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* SETTINGS */' ). lo_buf->add( '' ). lo_buf->add( 'table.settings_tab {' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' max-width: 600px;' ). lo_buf->add( ' line-height: 1.5;' ). lo_buf->add( '}' ). lo_buf->add( 'table.settings_tab th {' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( ' padding: 0.5em;' ). lo_buf->add( ' border-bottom: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( 'table.settings_tab td {' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( ' padding: 0.3em 0.5em;' ). lo_buf->add( ' border-top: 1px solid;' ). lo_buf->add( '}' ). lo_buf->add( 'table.settings_tab input {' ). lo_buf->add( ' border: none;' ). lo_buf->add( ' text-align: center;' ). lo_buf->add( '}' ). lo_buf->add( 'settings_tab tr:first-child td { border-top: 0px; }' ). lo_buf->add( '' ). lo_buf->add( '/* UNIT TESTS */' ). lo_buf->add( '' ). lo_buf->add( 'table.unit_tests {' ). lo_buf->add( ' line-height: 1.5;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* DIALOGS */' ). lo_buf->add( '' ). lo_buf->add( '.dialog {' ). lo_buf->add( ' margin: 0 auto;' ). lo_buf->add( ' margin-top: 1em;' ). lo_buf->add( ' margin-bottom: 1em;' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' padding: 1em 1em;' ). lo_buf->add( ' border-radius: 6px;' ). lo_buf->add( ' text-align: left;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog-form {' ). lo_buf->add( ' width: 600px;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog-form-center {' ). lo_buf->add( ' margin: 1em auto 1em;' ). lo_buf->add( ' max-width: 600px;' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog ul {' ). lo_buf->add( ' padding: 0;' ). lo_buf->add( ' margin: 0;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li {' ). lo_buf->add( ' padding: 5px 10px;' ). lo_buf->add( ' display: block;' ). lo_buf->add( ' list-style: none;' ). lo_buf->add( ' position: relative;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.dialog-commands {' ). lo_buf->add( ' text-align: right;' ). lo_buf->add( ' margin-top: 12px;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.dialog-commands a {' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' cursor: pointer;' ). lo_buf->add( ' text-decoration: none;' ). lo_buf->add( ' padding: 6px 12px;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.dialog-commands input[type="button"],' ). lo_buf->add( '.dialog li.dialog-commands input[type="submit"] {' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' padding: 6px 12px;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( ' cursor: pointer;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.dialog-commands a.main,' ). lo_buf->add( '.dialog li.dialog-commands input[type="submit"].main {' ). lo_buf->add( ' border: 1px solid transparent;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog label {' ). lo_buf->add( ' display: block;' ). lo_buf->add( ' font-size: 90%;' ). lo_buf->add( ' margin-top: 6px;' ). lo_buf->add( ' margin-bottom: 6px;' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.error small {' ). lo_buf->add( ' display: block;' ). lo_buf->add( ' font-size: 75%;' ). lo_buf->add( ' margin: 4px 0px;' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.hidden {' ). lo_buf->add( ' padding: 0px 0px;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog .radio-container {' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( ' padding: 4px;' ). lo_buf->add( ' border-radius: 3px;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog input[type="checkbox"] + label {' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog input[type="password"],' ). lo_buf->add( '.dialog input[type="text"] {' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( ' box-sizing: border-box;' ). lo_buf->add( ' height: 2.5em;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog input[type="number"] {' ). lo_buf->add( ' width: 25%;' ). lo_buf->add( ' box-sizing: border-box;' ). lo_buf->add( ' height: 2.5em;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog textarea {' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( ' box-sizing: border-box;' ). lo_buf->add( ' padding: 10px;' ). lo_buf->add( ' font-family: Arial,Helvetica,sans-serif;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog .radio-container input[type="radio"] {' ). lo_buf->add( ' visibility: hidden;' ). lo_buf->add( ' display: none;' ). lo_buf->add( ' height: 0px;' ). lo_buf->add( ' width: 0px;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog .radio-container input[type="radio"] + label {' ). lo_buf->add( ' border: 1px solid transparent;' ). lo_buf->add( ' cursor: pointer;' ). lo_buf->add( ' width: auto;' ). lo_buf->add( ' margin: 0px;' ). lo_buf->add( ' padding: 3px 8px;' ). lo_buf->add( ' border-radius: 2px;' ). lo_buf->add( ' display: inline-block;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog .radio-container input[type="radio"]:checked + label {' ). lo_buf->add( ' border: 1px solid transparent;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog table {' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog table thead td {' ). lo_buf->add( ' font-size: 14px;' ). lo_buf->add( ' height: 2.5em;' ). lo_buf->add( ' background-color: #ddd;' ). lo_buf->add( ' border: 1px solid #ccc;' ). lo_buf->add( ' padding: 0px 10px;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog table tbody td {' ). lo_buf->add( ' border: 1px solid #ccc;' ). lo_buf->add( ' background-color: white;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog table td input {' ). lo_buf->add( ' border: 0px;' ). lo_buf->add( ' background: none;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.with-command div.input-container {' ). lo_buf->add( ' display: table-cell;' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.with-command div.command-container {' ). lo_buf->add( ' display: table-cell;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.with-command input[type="button"],' ). lo_buf->add( '.dialog li.with-command input[type="submit"] {' ). lo_buf->add( ' height: 2.5em;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog fieldset {' ). lo_buf->add( ' margin-top: 1em;' ). lo_buf->add( ' border: 1px solid;' ). lo_buf->add( ' border-right: none;' ). lo_buf->add( ' border-left: none;' ). lo_buf->add( ' border-bottom: none;' ). lo_buf->add( ' border-radius: 6px; /* does not work in IE ? */' ). lo_buf->add( ' padding-bottom: 1em;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog fieldset:first-child {' ). lo_buf->add( ' margin-top: 0;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog fieldset legend {' ). lo_buf->add( ' font-size: large;' ). lo_buf->add( ' font-weight: bold;' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( ' padding-right: 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog .dialog-help {' ). lo_buf->add( ' float: left;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* STICKY HEADERS */' ). lo_buf->add( '' ). lo_buf->add( '/* https://www.w3schools.com/howto/howto_js_navbar_sticky.asp */' ). lo_buf->add( '/* Note: We have to use JS since IE does not support CSS position:sticky */' ). lo_buf->add( '' ). lo_buf->add( '/* The sticky class is added to the navbar with JS when it reaches its scroll position */' ). lo_buf->add( '.sticky {' ). lo_buf->add( ' position: fixed;' ). lo_buf->add( ' top: 0;' ). lo_buf->add( ' z-index: 10;' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( ' padding: 0.5em;' ). lo_buf->add( ' margin-bottom: 3px;' ). lo_buf->add( ' max-height: 47px;' ). lo_buf->add( ' max-width: 1265px; /* if set to 1280px, then actual width will be 1296px (strange) */' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.sticky_full_width {' ). lo_buf->add( ' position: fixed;' ). lo_buf->add( ' top: 0;' ). lo_buf->add( ' z-index: 10;' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( ' padding: 0.5em 0.5em;' ). lo_buf->add( ' margin-bottom: 3px;' ). lo_buf->add( ' max-height: 47px;' ). lo_buf->add( '}' ). lo_buf->add( '.sticky_full_width .nav-container {' ). lo_buf->add( ' margin-right: 18px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* Add some top padding to the page content to prevent sudden quick movement' ). lo_buf->add( ' as the navigation bar gets a new position at the top of the page */' ). lo_buf->add( '.sticky + .not_sticky {' ). lo_buf->add( ' padding-top: 50px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* Give more padding if browser control warning is present */' ). lo_buf->add( '.sticky:has(.browser-control-warning) + .not_sticky,' ). lo_buf->add( '.sticky_full_width:has(.browser-control-warning) + .not_sticky {' ). lo_buf->add( ' padding-top: 75px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.sticky_full_width + .not_sticky {' ). lo_buf->add( ' padding-top: 50px;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* Light toolbar or blocks with separators */' ). lo_buf->add( '.toolbar-light a {' ). lo_buf->add( ' padding-left: 0.5em;' ). lo_buf->add( ' padding-right: 0.5em;' ). lo_buf->add( ' border-left: 1px solid;' ). lo_buf->add( ' border-left-color: #ccc;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.toolbar-light a:first-child {' ). lo_buf->add( ' padding-left: 0;' ). lo_buf->add( ' border-left: none;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* Warning if wrong browser control is used */' ). lo_buf->add( '.browser-control-warning {' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* MODAL POPUP */' ). lo_buf->add( '/* https://css-tricks.com/considerations-styling-modal/ */' ). lo_buf->add( '' ). lo_buf->add( '.modal {' ). lo_buf->add( ' /* center on screen */' ). lo_buf->add( ' position: fixed;' ). lo_buf->add( ' top: 50%;' ). lo_buf->add( ' left: 50%;' ). lo_buf->add( ' transform: translate(-50%, -50%);' ). lo_buf->add( ' /* size */' ). lo_buf->add( ' max-width: 100%;' ). lo_buf->add( ' max-height: 100%;' ). lo_buf->add( ' /* infront of overlay */' ). lo_buf->add( ' z-index: 1010;' ). lo_buf->add( ' display: block;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.modal-guts {' ). lo_buf->add( ' padding: 6px 6px;' ). lo_buf->add( ' /* let it scroll */' ). lo_buf->add( ' overflow: auto;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.modal-guts .dialog {' ). lo_buf->add( ' box-shadow: 2px 2px 4px 1px rgba(0,0,0,0.3);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.modal-overlay {' ). lo_buf->add( ' /* darken and prevent interactions with background */' ). lo_buf->add( ' z-index: 1000;' ). lo_buf->add( ' position: fixed;' ). lo_buf->add( ' top: 0;' ). lo_buf->add( ' left: 0;' ). lo_buf->add( ' width: 100%;' ). lo_buf->add( ' height: 100%;' ). lo_buf->add( ' background: rgba(0, 0, 0, 0.3);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.modal .radio-container label {' ). lo_buf->add( ' /* hacky, improve later, get rid of !important, hook it to a named style instead */' ). lo_buf->add( ' border-radius: 3px !important;' ). lo_buf->add( ' border: 1px solid rgba(0, 0, 0, 0.3) !important;' ). lo_buf->add( ' margin-bottom: 2px !important;' ). lo_buf->add( '}' ). lo_buf->add( '.modal .radio-container label:hover {' ). lo_buf->add( ' background-color: rgba(0, 0, 0, 0.1);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* WHERE USED PAGE */' ). lo_buf->add( '' ). lo_buf->add( 'div.wu-header {' ). lo_buf->add( ' padding: 8px 0.5em;' ). lo_buf->add( ' margin: 0px 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( 'div.wu {' ). lo_buf->add( ' padding: 8px 0.5em;' ). lo_buf->add( '}' ). lo_buf->add( 'div.wu table thead tr:first-child {' ). lo_buf->add( ' /* TODO: maybe move this to default table style */' ). lo_buf->add( ' color: hsl(0, 0%, 80%);' ). lo_buf->add( ' text-transform: uppercase;' ). lo_buf->add( ' font-size: 90%;' ). lo_buf->add( '}' ). lo_buf->add( 'div.wu table tbody {' ). lo_buf->add( ' font-size: 90%;' ). lo_buf->add( ' vertical-align: baseline; /* for second lines, used type */' ). lo_buf->add( '}' ). lo_buf->add( 'div.wu table td[data-cid="dep_obj_name"] span.used-obj {' ). lo_buf->add( ' display: block;' ). lo_buf->add( ' color: hsl(0, 0%, 70%);' ). lo_buf->add( ' font-size: smaller;' ). lo_buf->add( ' text-transform: lowercase;' ). lo_buf->add( '}' ). lo_buf->add( 'div.wu table td[data-gid="where"],' ). lo_buf->add( 'div.wu table th[data-gid="where"] {' ). lo_buf->add( ' background-color: hsl(0, 0%, 97%);' ). lo_buf->add( '}' ). li_asset_man->register_asset( iv_url = 'css/common.css' iv_type = 'text/css' iv_mime_name = 'ZABAPGIT_CSS_COMMON' iv_inline = lo_buf->join_w_newline_and_flush( ) ). **************************************************** * abapmerge Pragma [include] - ZABAPGIT_CSS_THEME_DEFAULT.W3MI.DATA.CSS **************************************************** lo_buf->add( '/*' ). lo_buf->add( ' * ABAPGIT COLOR THEME CSS - DEFAULT' ). lo_buf->add( ' */' ). lo_buf->add( '' ). lo_buf->add( ':root {' ). lo_buf->add( ' --theme-background-color: #E8E8E8;' ). lo_buf->add( ' --theme-container-background-color: #f2f2f2;' ). lo_buf->add( ' --theme-container-border-color: lightgrey;' ). lo_buf->add( ' --theme-table-background-color: white;' ). lo_buf->add( ' --theme-table-head-background-color: #edf2f9;' ). lo_buf->add( ' --theme-table-border-color: #ddd;' ). lo_buf->add( ' --theme-table-cell-border-color: #eee;' ). lo_buf->add( '' ). lo_buf->add( ' --theme-primary-font: "72", Arial, Helvetica, sans-serif;' ). lo_buf->add( ' --theme-primary-font-color: #333333;' ). lo_buf->add( ' --theme-primary-font-color-reduced: #ccc;' ). lo_buf->add( ' --theme-font-size: 12pt;' ). lo_buf->add( ' --theme-link-color: #4078c0;' ). lo_buf->add( '' ). lo_buf->add( ' --theme-greyscale-dark: #808080;' ). lo_buf->add( ' --theme-greyscale-medium: #b3b3b3;' ). lo_buf->add( ' --theme-greyscale-light: #ccc;' ). lo_buf->add( ' --theme-greyscale-lighter: lightgrey;' ). lo_buf->add( ' --theme-linkhint-background: lightgreen;' ). lo_buf->add( ' --theme-debug-color: #aaa;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* GLOBALS */' ). lo_buf->add( '' ). lo_buf->add( 'body {' ). lo_buf->add( ' background-color: var(--theme-background-color);' ). lo_buf->add( ' font-family: var(--theme-primary-font);' ). lo_buf->add( ' color: var(--theme-primary-font-color);' ). lo_buf->add( ' font-size: var(--theme-font-size);' ). lo_buf->add( '}' ). lo_buf->add( 'a, a:visited { color: var(--theme-link-color); }' ). lo_buf->add( '.link {' ). lo_buf->add( ' color: var(--theme-link-color);' ). lo_buf->add( ' cursor: pointer;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'input, textarea, select { border-color: #ddd; }' ). lo_buf->add( 'input:focus, textarea:focus { border-color: #8cadd9; }' ). lo_buf->add( '' ). lo_buf->add( '/* COLOR PALETTE */' ). lo_buf->add( '' ). lo_buf->add( '.grey { color: var(--theme-greyscale-lighter) !important; }' ). lo_buf->add( '.grey70 { color: var(--theme-greyscale-medium) !important; }' ). lo_buf->add( '.grey80 { color: var(--theme-greyscale-light) !important; }' ). lo_buf->add( '.darkgrey { color: var(--theme-greyscale-dark) !important; }' ). lo_buf->add( '.bgorange { background-color: orange; }' ). lo_buf->add( '.attention { color: red !important; }' ). lo_buf->add( '.error { color: #d41919 !important; }' ). lo_buf->add( '.warning { color: #efb301 !important; }' ). lo_buf->add( '.success { color: green !important; }' ). lo_buf->add( '.blue { color: #5e8dc9 !important; }' ). lo_buf->add( '.red { color: red !important; }' ). lo_buf->add( '.white { color: white !important; }' ). lo_buf->add( '.pink { color: pink !important; }' ). lo_buf->add( '' ). lo_buf->add( '/* FLOATING BUTTONS AND COLOR SETS */' ). lo_buf->add( '' ). lo_buf->add( '.blue-set {' ). lo_buf->add( ' border-color: #abc3e3;' ). lo_buf->add( ' color: #5e8dc9;' ). lo_buf->add( ' background-color: #d9e4f2;' ). lo_buf->add( '}' ). lo_buf->add( '.grey-set {' ). lo_buf->add( ' border-color: #c7c7c7;' ). lo_buf->add( ' color: var(--theme-greyscale-dark);' ). lo_buf->add( ' background-color: #e6e6e6;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* ABAPGIT OBJECTS */' ). lo_buf->add( '' ). lo_buf->add( 'span.user-box {' ). lo_buf->add( ' border-color: #c2d4ea;' ). lo_buf->add( ' background-color: #d9e4f2;' ). lo_buf->add( '}' ). lo_buf->add( 'span.package-box {' ). lo_buf->add( ' border-color: #d3ccd2;' ). lo_buf->add( ' background-color: #ebe3ea;' ). lo_buf->add( '}' ). lo_buf->add( 'span.path-box,' ). lo_buf->add( 'span.transport-box {' ). lo_buf->add( ' border-color: #a7e3cf;' ). lo_buf->add( ' background-color: #dbf3eb;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* PANELS */' ). lo_buf->add( '/* TODO: add warning and error colors */' ). lo_buf->add( '' ). lo_buf->add( 'div.panel.success {' ). lo_buf->add( ' color: #589a58 !important;' ). lo_buf->add( ' background-color: #c5eac5;' ). lo_buf->add( '}' ). lo_buf->add( 'div.panel.error {' ). lo_buf->add( ' color: #d41919;' ). lo_buf->add( ' background-color: #fad6d6;' ). lo_buf->add( '}' ). lo_buf->add( '#debug-output { color: var(--theme-debug-color); }' ). lo_buf->add( 'div.dummydiv { background-color: var(--theme-container-background-color); }' ). lo_buf->add( '' ). lo_buf->add( '/* STRUCTURE DIVS, HEADER & FOOTER */' ). lo_buf->add( '' ). lo_buf->add( 'div#header {' ). lo_buf->add( ' background-color: var(--theme-background-color);' ). lo_buf->add( ' border-bottom-color: var(--theme-container-border-color);' ). lo_buf->add( '}' ). lo_buf->add( 'div#header .page-title { color: var(--theme-greyscale-medium); }' ). lo_buf->add( 'div#footer .version { color: var(--theme-greyscale-medium); }' ). lo_buf->add( 'div#footer { border-top-color: var(--theme-container-border-color); }' ). lo_buf->add( '' ). lo_buf->add( '/* ERROR LOG */' ). lo_buf->add( '' ). lo_buf->add( 'div.log {' ). lo_buf->add( ' background-color: #fee6e6;' ). lo_buf->add( ' border-color: #fdcece;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* REPOSITORY */' ). lo_buf->add( '' ). lo_buf->add( 'div.repo { background-color: var(--theme-container-background-color); }' ). lo_buf->add( '.repo_name span.name { color: #333; }' ). lo_buf->add( '.repo_name span.url { color: var(--theme-primary-font-color-reduced); }' ). lo_buf->add( '.repo_name a.url { color: var(--theme-primary-font-color-reduced); }' ). lo_buf->add( '.repo_name a.url:hover { color: var(--theme-link-color); }' ). lo_buf->add( '.repo_attr { color: grey; }' ). lo_buf->add( '' ). lo_buf->add( '.repo_attr span.bg_marker {' ). lo_buf->add( ' border-color: #d2d2d2;' ). lo_buf->add( ' background-color: #d8d8d8;' ). lo_buf->add( ' color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.repo_attr span.branch_head {' ). lo_buf->add( ' border-color: #d8dff3;' ). lo_buf->add( ' background-color: #eceff9;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'span.branch {' ). lo_buf->add( ' border-color: #d9d9d9;' ). lo_buf->add( ' background-color: #e2e2e2;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'span.branch_branch {' ). lo_buf->add( ' border-color: #e7d9b1;' ). lo_buf->add( ' background-color: #f8f0d8;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* REPOSITORY TABLE*/' ). lo_buf->add( '' ). lo_buf->add( 'table.repo_tab {' ). lo_buf->add( ' border-color: var(--theme-table-border-color);' ). lo_buf->add( ' background-color: var(--theme-table-background-color);' ). lo_buf->add( '}' ). lo_buf->add( '.repo_tab th {' ). lo_buf->add( ' color: var(--theme-link-color);' ). lo_buf->add( ' background-color: #edf2f9;' ). lo_buf->add( ' border-bottom-color: var(--theme-table-border-color);' ). lo_buf->add( '}' ). lo_buf->add( '.repo_tab td {' ). lo_buf->add( ' color: var(--theme-primary-font-color);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab tr.object_row{' ). lo_buf->add( ' border-top-color: var(--theme-table-cell-border-color);' ). lo_buf->add( '}' ). lo_buf->add( '.repo_tab .inactive { color: orange; }' ). lo_buf->add( '.repo_tab tr.unsupported { color: var(--theme-greyscale-lighter); }' ). lo_buf->add( '.repo_tab tr.modified { background-color: #fbf7e9; }' ). lo_buf->add( '.repo_tab td.current_dir { color: var(--theme-primary-font-color-reduced); }' ). lo_buf->add( '' ). lo_buf->add( '/* STAGE */' ). lo_buf->add( '' ). lo_buf->add( '.stage_tab {' ). lo_buf->add( ' border-color: #ddd;' ). lo_buf->add( ' background-color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab th {' ). lo_buf->add( ' color: var(--theme-greyscale-dark);' ). lo_buf->add( ' background-color: #edf2f9;' ). lo_buf->add( ' border-bottom-color: #ddd;' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab td {' ). lo_buf->add( ' color: var(--theme-greyscale-medium);' ). lo_buf->add( ' border-top-color: var(--theme-table-cell-border-color);' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab td.status {' ). lo_buf->add( ' color: var(--theme-primary-font-color-reduced);' ). lo_buf->add( ' background-color: #fafafa;' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab td.highlight { color: #444 !important; }' ). lo_buf->add( '.stage_tab td.method { font-weight: bold; }' ). lo_buf->add( '.stage_tab mark {' ). lo_buf->add( ' color: white;' ). lo_buf->add( ' background-color: #79a0d2;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* COMMIT */' ). lo_buf->add( '' ). lo_buf->add( 'div.form-container { background-color: #F8F8F8; }' ). lo_buf->add( 'form.aligned-form label { color: var(--theme-greyscale-medium); }' ). lo_buf->add( 'form.aligned-form span.sub-title { color: var(--theme-greyscale-medium); }' ). lo_buf->add( '' ). lo_buf->add( '/* SETTINGS STYLES */' ). lo_buf->add( '' ). lo_buf->add( 'div.settings_container {' ). lo_buf->add( ' color: #444;' ). lo_buf->add( ' background-color: var(--theme-container-background-color);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* DIFF */' ). lo_buf->add( '' ). lo_buf->add( 'div.diff { background-color: var(--theme-container-background-color); }' ). lo_buf->add( 'span.diff_name { color: grey; }' ). lo_buf->add( 'span.diff_name strong { color: #333; }' ). lo_buf->add( 'span.diff_changed_by { color: grey; }' ). lo_buf->add( 'span.diff_changed_by span.user {' ). lo_buf->add( ' border-color: #c2d4ea;' ). lo_buf->add( ' background-color: #d9e4f2;' ). lo_buf->add( '}' ). lo_buf->add( '.diff_ins {' ). lo_buf->add( ' border-color: #abf2ab;' ). lo_buf->add( ' background-color: #e0ffe0;' ). lo_buf->add( '}' ). lo_buf->add( '.diff_del {' ). lo_buf->add( ' border-color: #ff667d;' ). lo_buf->add( ' background-color: #ffccd4;' ). lo_buf->add( '}' ). lo_buf->add( '.diff_upd {' ). lo_buf->add( ' border-color: #dada00;' ). lo_buf->add( ' background-color: #ffffcc;' ). lo_buf->add( '}' ). lo_buf->add( 'div.diff_content {' ). lo_buf->add( ' background-color: #fff;' ). lo_buf->add( ' border-top-color: #ddd;' ). lo_buf->add( ' border-bottom-color: #ddd;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* STATE BLOCK COLORS */' ). lo_buf->add( '' ). lo_buf->add( 'span.state-block span.added {' ). lo_buf->add( ' background-color: #69ad74;' ). lo_buf->add( ' border-color: #579e64;' ). lo_buf->add( ' color: white;' ). lo_buf->add( '}' ). lo_buf->add( 'span.state-block span.changed {' ). lo_buf->add( ' background-color: #e0c150;' ). lo_buf->add( ' border-color: #d4af25;' ). lo_buf->add( ' color: white;' ). lo_buf->add( '}' ). lo_buf->add( 'span.state-block span.mixed {' ). lo_buf->add( ' background-color: #e0c150;' ). lo_buf->add( ' border-color: #579e64;' ). lo_buf->add( ' color: #69ad74;' ). lo_buf->add( '}' ). lo_buf->add( 'span.state-block span.deleted {' ). lo_buf->add( ' background-color: #c76861;' ). lo_buf->add( ' border-color: #b8605a;' ). lo_buf->add( ' color: white;' ). lo_buf->add( '}' ). lo_buf->add( 'span.state-block span.none {' ). lo_buf->add( ' background-color: #e8e8e8;' ). lo_buf->add( ' border-color: #dbdbdb;' ). lo_buf->add( ' color: #c8c8c8;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* DIFF TABLE */' ). lo_buf->add( '' ). lo_buf->add( 'table.diff_tab td,' ). lo_buf->add( 'table.diff_tab th {' ). lo_buf->add( ' color: #444;' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab thead.header th {' ). lo_buf->add( ' color: #eee;' ). lo_buf->add( ' background-color: var(--theme-greyscale-medium);' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab thead.nav_line {' ). lo_buf->add( ' background-color: #edf2f9;' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab thead.nav_line th {' ). lo_buf->add( ' color: var(--theme-greyscale-medium);' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab td.num, th.num {' ). lo_buf->add( ' color: var(--theme-primary-font-color-reduced);' ). lo_buf->add( ' border-left-color: var(--theme-table-cell-border-color);' ). lo_buf->add( ' border-right-color: var(--theme-table-cell-border-color);' ). lo_buf->add( '}' ). lo_buf->add( 'table.diff_tab td.patch, th.patch {' ). lo_buf->add( ' color: var(--theme-primary-font-color-reduced);' ). lo_buf->add( ' border-left-color: var(--theme-table-cell-border-color);' ). lo_buf->add( ' border-right-color: var(--theme-table-cell-border-color);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* STYLES FOR SYNTAX HIGHLIGHTING */' ). lo_buf->add( '' ). lo_buf->add( '/* ABAP */' ). lo_buf->add( '.syntax-hl span.keyword { color: #0a69ce; }' ). lo_buf->add( '.syntax-hl span.text { color: #48ce4f; }' ). lo_buf->add( '.syntax-hl span.comment { color: var(--theme-greyscale-dark); font-style: italic; }' ). lo_buf->add( '/* XML+HTML */' ). lo_buf->add( '.syntax-hl span.xml_tag { color: #457ce3; }' ). lo_buf->add( '.syntax-hl span.attr { color: #b777fb; }' ). lo_buf->add( '.syntax-hl span.attr_val { color: #7a02f9; }' ). lo_buf->add( '/* CSS+JS */' ). lo_buf->add( '.syntax-hl span.properties { color:#0a69ce; }' ). lo_buf->add( '.syntax-hl span.values { color:blue; }' ). lo_buf->add( '.syntax-hl span.units { color:maroon; }' ). lo_buf->add( '.syntax-hl span.selectors { color:purple; }' ). lo_buf->add( '.syntax-hl span.functions { color:purple; }' ). lo_buf->add( '.syntax-hl span.colors { color:purple; }' ). lo_buf->add( '.syntax-hl span.extensions { color:darkblue; }' ). lo_buf->add( '.syntax-hl span.at_rules { color:darkblue; }' ). lo_buf->add( '.syntax-hl span.html { color:green; }' ). lo_buf->add( '.syntax-hl span.variables { color:purple; }' ). lo_buf->add( '' ). lo_buf->add( '/* DEBUG INFO STYLES */' ). lo_buf->add( '' ). lo_buf->add( 'div.debug_container {' ). lo_buf->add( ' color: #444;' ). lo_buf->add( ' background-color: var(--theme-container-background-color);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* Repo overview */' ). lo_buf->add( '' ). lo_buf->add( '.repo-overview { background-color: var(--theme-container-background-color); }' ). lo_buf->add( '.repo-overview table {' ). lo_buf->add( ' background-color: var(--theme-table-background-color);' ). lo_buf->add( ' border-color: var(--theme-table-border-color);' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview th {' ). lo_buf->add( ' color: var(--theme-link-color);' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview thead tr {' ). lo_buf->add( ' background-color: var(--theme-table-head-background-color);' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview thead tr,' ). lo_buf->add( '.repo-overview tfoot tr {' ). lo_buf->add( ' border-color: var(--theme-table-border-color);' ). lo_buf->add( '}' ). lo_buf->add( '.repo-overview a.remote_repo { color: var(--theme-primary-font-color-reduced); }' ). lo_buf->add( '.repo-overview a.remote_repo:hover { color: var(--theme-link-color); }' ). lo_buf->add( '.repo-overview tbody tr:hover td { background-color: hsla(214, 50%, 50%, 0.05); }' ). lo_buf->add( '.repo-overview tbody tr.selected { background-color: hsla(214, 50%, 75%, 0.33); }' ). lo_buf->add( '' ). lo_buf->add( '/* TUTORIAL */' ). lo_buf->add( '' ). lo_buf->add( 'div.tutorial { background-color: var(--theme-container-background-color); }' ). lo_buf->add( 'div.tutorial hr { border-color: var(--theme-greyscale-light); }' ). lo_buf->add( 'div.tutorial h1, h2 { color: #404040; }' ). lo_buf->add( '' ). lo_buf->add( '/* MENU */' ). lo_buf->add( '' ). lo_buf->add( '.nav-container ul li:hover { background-color: #fff; }' ). lo_buf->add( '.nav-container ul ul li:hover { background-color: #f6f6f6; }' ). lo_buf->add( '.nav-container > ul > li:hover > a { background-color: #ffffff80; }' ). lo_buf->add( '.nav-container ul ul { background-color: #fff; }' ). lo_buf->add( '.nav-container.corner > ul > li:hover > a { background-color: inherit; }' ). lo_buf->add( '' ). lo_buf->add( '.nav-container ul ul li.separator {' ). lo_buf->add( ' color: var(--theme-greyscale-medium);' ). lo_buf->add( ' border-bottom-color: #eee;' ). lo_buf->add( ' border-top-color: #eee;' ). lo_buf->add( '}' ). lo_buf->add( '.nav-container ul ul li.separator:hover { background-color: inherit; }' ). lo_buf->add( '' ). lo_buf->add( '/* NEWS ANNOUNCEMENT */' ). lo_buf->add( '' ). lo_buf->add( 'div.info-panel { background-color: white; }' ). lo_buf->add( 'div.info-panel div.info-hint { color: var(--theme-greyscale-light); }' ). lo_buf->add( 'div.info-panel div.info-title {' ). lo_buf->add( ' color: #f8f8f8;' ). lo_buf->add( ' background-color: #888;' ). lo_buf->add( '}' ). lo_buf->add( 'div.info-panel div.info-title a.close-btn { color: #d8d8d8; }' ). lo_buf->add( 'div.info-panel div.info-list { color: #444; }' ). lo_buf->add( 'div.info-panel .version-marker {' ). lo_buf->add( ' color: white;' ). lo_buf->add( ' border-color: #c0c0c0;' ). lo_buf->add( ' background-color: var(--theme-greyscale-light);' ). lo_buf->add( '}' ). lo_buf->add( 'div.info-panel .update {' ). lo_buf->add( ' border-color: #e8ba30;' ). lo_buf->add( ' background-color: #f5c538;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* TOOLTIPS TEXT */' ). lo_buf->add( '' ). lo_buf->add( '.link-hint { color: var(--theme-primary-font-color); }' ). lo_buf->add( '.link-hint { background-color: var(--theme-linkhint-background) }' ). lo_buf->add( '.link-hint::after { border-top-color: var(--theme-linkhint-background) }' ). lo_buf->add( '' ). lo_buf->add( '/* HOTKEYS */' ). lo_buf->add( '' ). lo_buf->add( 'ul.hotkeys span.key-id {' ). lo_buf->add( ' background-color: #f0f0f0;' ). lo_buf->add( ' border-color: #dcdcdc;' ). lo_buf->add( '}' ). lo_buf->add( 'div.corner-hint {' ). lo_buf->add( ' color: var(--theme-greyscale-medium);' ). lo_buf->add( ' border-color: var(--theme-greyscale-light);' ). lo_buf->add( ' background-color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* CODE INSPECTOR */' ). lo_buf->add( '' ). lo_buf->add( 'div.ci { background-color: var(--theme-container-background-color); }' ). lo_buf->add( '' ). lo_buf->add( 'div.ci-msg span.ci-variant { color: var(--theme-primary-font-color); }' ). lo_buf->add( '' ). lo_buf->add( 'div.ci-stats span.error-count {' ). lo_buf->add( ' border-color: hsl(350, 100%, 80%);' ). lo_buf->add( ' background-color: hsl(350, 100%, 90%);' ). lo_buf->add( '}' ). lo_buf->add( 'div.ci-stats span.warn-count {' ). lo_buf->add( ' border-color: hsl(60, 100%, 42%);' ). lo_buf->add( ' background-color: hsl(60, 100%, 90%);' ). lo_buf->add( '}' ). lo_buf->add( 'div.ci-stats span.info-count {' ). lo_buf->add( ' border-color: hsl(120, 80%, 80%);' ). lo_buf->add( ' background-color: hsl(120, 80%, 94%);' ). lo_buf->add( '}' ). lo_buf->add( 'div.ci-stats span.all-count {' ). lo_buf->add( ' border-color: hsl(235, 100%, 89%);' ). lo_buf->add( ' background-color: hsl(235, 100%, 93%);' ). lo_buf->add( '}' ). lo_buf->add( 'div.ci-detail table td[data-cid="text"] {' ). lo_buf->add( ' color: hsl(0, 0%, 40%);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'div.ci-detail table tr[data-kind="error"] td[data-cid="kind"] span {' ). lo_buf->add( ' background-color: hsl(0, 100%, 68%);' ). lo_buf->add( '}' ). lo_buf->add( 'div.ci-detail table tr[data-kind="warning"] td[data-cid="kind"] span {' ). lo_buf->add( ' background-color:hsl(52, 100%, 49%);' ). lo_buf->add( '}' ). lo_buf->add( 'div.ci-detail table tr[data-kind="info"] td[data-cid="kind"] span {' ). lo_buf->add( ' background-color: hsl(118, 67%, 47%);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* COMMAND PALETTE */' ). lo_buf->add( '' ). lo_buf->add( '.cmd-palette {' ). lo_buf->add( ' border-color: #ccc;' ). lo_buf->add( '}' ). lo_buf->add( '.cmd-palette li.selected {' ). lo_buf->add( ' background-color: hsla(214, 50%, 90%, 1);' ). lo_buf->add( '}' ). lo_buf->add( '.cmd-palette mark {' ). lo_buf->add( ' color: white;' ). lo_buf->add( ' background-color: #79a0d2;' ). lo_buf->add( ' /* todo merge with stage search */' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* SETTINGS */' ). lo_buf->add( '' ). lo_buf->add( 'table.settings_tab {' ). lo_buf->add( ' background-color: #fff;' ). lo_buf->add( ' border-color: #ddd;' ). lo_buf->add( '}' ). lo_buf->add( 'table.settings_tab th {' ). lo_buf->add( ' color: #888888;' ). lo_buf->add( ' border-bottom-color: #ddd;' ). lo_buf->add( '}' ). lo_buf->add( 'table.settings_tab td {' ). lo_buf->add( ' color: #333;' ). lo_buf->add( ' border-top-color: #eee;' ). lo_buf->add( '}' ). lo_buf->add( 'table.settings_tab input {' ). lo_buf->add( ' background-color: #f8f8f8;' ). lo_buf->add( '}' ). lo_buf->add( 'table.settings_tab input:focus {' ). lo_buf->add( ' background-color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* HTML FORMS */' ). lo_buf->add( '' ). lo_buf->add( '.dialog input::placeholder { color: #ccc }' ). lo_buf->add( '.dialog textarea::placeholder { color: #ccc }' ). lo_buf->add( '.dialog input:-ms-input-placeholder { color: #ccc }' ). lo_buf->add( '.dialog textarea:-ms-input-placeholder { color: #ccc }' ). lo_buf->add( '.dialog {' ). lo_buf->add( ' border-color: #ccc;' ). lo_buf->add( ' background-color: #f0f0f0;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.dialog-commands a,' ). lo_buf->add( '.dialog li.dialog-commands input[type="submit"] {' ). lo_buf->add( ' border-color: #ccc;' ). lo_buf->add( ' background-color: #ddd;' ). lo_buf->add( ' color: #000;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.dialog-commands a.main,' ). lo_buf->add( '.dialog li.dialog-commands input[type="submit"].main {' ). lo_buf->add( ' background-color: #64a8ff;' ). lo_buf->add( ' color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog label {' ). lo_buf->add( ' color: #444;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog label em {' ). lo_buf->add( ' color: #64a8ff;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.error small {' ). lo_buf->add( ' color: #ff5959;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.error input[type="number"],' ). lo_buf->add( '.dialog li.error input[type="text"] {' ). lo_buf->add( ' border-color: #ff5959;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog .radio-container {' ). lo_buf->add( ' border-color: #ddd;' ). lo_buf->add( ' background-color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog .radio-container input[type="radio"] + label {' ). lo_buf->add( ' color: #808080;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog .radio-container input[type="radio"]:checked + label {' ). lo_buf->add( ' background-color: #64a8ff;' ). lo_buf->add( ' color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.with-command input[type="button"]:hover,' ). lo_buf->add( '.dialog li.with-command input[type="submit"]:hover {' ). lo_buf->add( ' background-color: #64a8ff;' ). lo_buf->add( ' color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog fieldset {' ). lo_buf->add( ' border-color: #dfdfdf;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog fieldset legend {' ). lo_buf->add( ' color: #444;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog input:read-only {' ). lo_buf->add( ' background-color: #f4f4f4;' ). lo_buf->add( ' color: var(--theme-greyscale-dark);' ). lo_buf->add( '}' ). lo_buf->add( '/* for IE */' ). lo_buf->add( '.dialog input[readonly] {' ). lo_buf->add( ' background-color: #f4f4f4;' ). lo_buf->add( ' color: var(--theme-greyscale-dark);' ). lo_buf->add( '}' ). li_asset_man->register_asset( iv_url = 'css/theme-default.css' iv_type = 'text/css' iv_cacheable = abap_false iv_mime_name = 'ZABAPGIT_CSS_THEME_DEFAULT' iv_inline = lo_buf->join_w_newline_and_flush( ) ). **************************************************** * abapmerge Pragma [include] - ZABAPGIT_CSS_THEME_DARK.W3MI.DATA.CSS **************************************************** lo_buf->add( '/*' ). lo_buf->add( ' * ABAPGIT THEME CSS - DARK' ). lo_buf->add( ' */' ). lo_buf->add( '' ). lo_buf->add( '/* https://experience.sap.com/fiori-design-web/colors/ */' ). lo_buf->add( '' ). lo_buf->add( ':root {' ). lo_buf->add( ' --theme-background-color: #333333;' ). lo_buf->add( ' --theme-container-background-color: #444444;' ). lo_buf->add( ' --theme-primary-font: "72", Arial, Helvetica, sans-serif;' ). lo_buf->add( ' --theme-primary-font-color: #cccccc;' ). lo_buf->add( ' --theme-primary-font-color-reduced: #EEEEEE;' ). lo_buf->add( ' --theme-font-size: 11pt;' ). lo_buf->add( ' --theme-link-color: #d9ffff;' ). lo_buf->add( ' --theme-link-color-hover: #f6f6f6;' ). lo_buf->add( ' --theme-container-border-color: #D1E0EE;' ). lo_buf->add( ' --theme-table-border-color: #E5E5E5; /* ALV border color */' ). lo_buf->add( ' --theme-greyscale-dark: #666666;' ). lo_buf->add( ' --theme-greyscale-medium: #999999;' ). lo_buf->add( ' --theme-greyscale-light: #CCCCCC;' ). lo_buf->add( ' --theme-greyscale-lighter: #E5E5E5;' ). lo_buf->add( ' --theme-list-hover-background-color: black;' ). lo_buf->add( '' ). lo_buf->add( ' --theme-table-background-color: #333333;' ). lo_buf->add( ' --theme-table-head-background-color: #202020;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* GLOBALS */' ). lo_buf->add( '' ). lo_buf->add( 'body {' ). lo_buf->add( ' background-color: var(--theme-background-color);' ). lo_buf->add( ' color: var(--theme-primary-font-color);' ). lo_buf->add( '}' ). lo_buf->add( 'select, input, textarea {' ). lo_buf->add( ' color: var(--theme-primary-font-color);' ). lo_buf->add( ' border-color: #ffffff;' ). lo_buf->add( ' background-color: var(--theme-background-color);' ). lo_buf->add( '}' ). lo_buf->add( 'a:hover { color: var(--theme-link-color-hover); }' ). lo_buf->add( '' ). lo_buf->add( '/* HEADER */' ). lo_buf->add( '' ). lo_buf->add( '#header a, #header a:visited { color: var(--theme-link-color); }' ). lo_buf->add( '' ). lo_buf->add( '/* MENU */' ). lo_buf->add( '' ). lo_buf->add( 'div#toc .favorites a { opacity: 1; }' ). lo_buf->add( '.nav-container ul a:hover { text-decoration: underline; }' ). lo_buf->add( '.nav-container ul ul { background-color: #555555; }' ). lo_buf->add( '.nav-container ul li:hover { background-color: #555555; }' ). lo_buf->add( '.nav-container ul ul li:hover { background-color: var(--theme-list-hover-background-color); }' ). lo_buf->add( 'table.repo_tab {' ). lo_buf->add( ' border-color: var(--theme-container-background-color);' ). lo_buf->add( ' background-color: var(--theme-background-color);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* ABAPGIT OBJECTS */' ). lo_buf->add( '' ). lo_buf->add( 'span.user-box {' ). lo_buf->add( ' background-color: #4c6782;' ). lo_buf->add( ' border-color: #7491b2;' ). lo_buf->add( '}' ). lo_buf->add( 'span.package-box {' ). lo_buf->add( ' background-color: #705a6d;' ). lo_buf->add( ' border-color: #987095;' ). lo_buf->add( '}' ). lo_buf->add( 'span.path-box,' ). lo_buf->add( 'span.transport-box {' ). lo_buf->add( ' background-color: #456d5d;' ). lo_buf->add( ' border-color: #60a087;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* PANELS */' ). lo_buf->add( '' ). lo_buf->add( '#debug-output { color: var(--theme-greyscale-dark); }' ). lo_buf->add( '' ). lo_buf->add( '/* abapGit logo in header and footer */' ). lo_buf->add( '.logo .icon.icon-abapgit {' ). lo_buf->add( ' color: var(--theme-primary-font-color);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* TUTORIAL */' ). lo_buf->add( '' ). lo_buf->add( 'div.tutorial h1, h2 { color: var(--theme-primary-font-color); }' ). lo_buf->add( '' ). lo_buf->add( '/* REPOSITORY */' ). lo_buf->add( '' ). lo_buf->add( 'div.repo { background-color: var(--theme-container-background-color); }' ). lo_buf->add( '.repo_name span.name { color: var(--theme-primary-font-color-reduced); }' ). lo_buf->add( '.repo_name span.url { color: var(--theme-greyscale-medium); }' ). lo_buf->add( '.repo_name a.url { color: var(--theme-greyscale-medium); }' ). lo_buf->add( '.repo_attr { color: var(--theme-primary-font-color); }' ). lo_buf->add( '' ). lo_buf->add( 'span.branch_branch {' ). lo_buf->add( ' border-color: var(--theme-greyscale-medium);' ). lo_buf->add( ' background-color: #777777;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* REPOSITORY TABLE */' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab td { color: var(--theme-primary-font-color); }' ). lo_buf->add( '.repo_tab tr.unsupported { background-color: #555; }' ). lo_buf->add( '.repo_tab tr.modified { background-color: #555; }' ). lo_buf->add( '.repo_tab tr:hover {background-color: var(--theme-list-hover-background-color) !important;}' ). lo_buf->add( '' ). lo_buf->add( '.repo_tab th {' ). lo_buf->add( ' border-top-color: var(--theme-greyscale-dark);' ). lo_buf->add( ' background-color: black;' ). lo_buf->add( '}' ). lo_buf->add( '.repo_tab td {' ). lo_buf->add( ' border-top-color: var(--theme-greyscale-dark);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* STAGE */' ). lo_buf->add( '' ). lo_buf->add( '.stage_tab {' ). lo_buf->add( ' border-color: var(--theme-greyscale-dark);' ). lo_buf->add( ' background-color: var(--theme-background-color);' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab th {' ). lo_buf->add( ' border-top-color: var(--theme-greyscale-dark);' ). lo_buf->add( ' background-color: black;' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab td {' ). lo_buf->add( ' color: var(--theme-primary-font-color);' ). lo_buf->add( ' border-top-color: var(--theme-greyscale-dark);' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab td.status.highlight {' ). lo_buf->add( ' color: var(--theme-primary-font-color) !important;' ). lo_buf->add( ' background-color: var(--theme-background-color);' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab td.status {' ). lo_buf->add( ' color: #777;' ). lo_buf->add( ' background-color: var(--theme-background-color);' ). lo_buf->add( '}' ). lo_buf->add( '.stage_tab th { background-color: var(--theme-container-background-color); }' ). lo_buf->add( '.stage_tab tr:hover {background-color: var(--theme-list-hover-background-color) !important;}' ). lo_buf->add( '' ). lo_buf->add( '/* COMMIT */' ). lo_buf->add( '' ). lo_buf->add( 'div.form-container { background-color: var(--theme-background-color); }' ). lo_buf->add( '' ). lo_buf->add( '/* SETTINGS STYLES */' ). lo_buf->add( '' ). lo_buf->add( 'div.settings_container { color: var(--theme-primary-font-color); }' ). lo_buf->add( '' ). lo_buf->add( '/* DIFF */' ). lo_buf->add( '' ). lo_buf->add( '.diff_ins { background-color: #352; }' ). lo_buf->add( '.diff_del { background-color: #411; }' ). lo_buf->add( '.diff_upd { background-color: #551; }' ). lo_buf->add( 'div.diff_content { background-color: var(--theme-background-color); }' ). lo_buf->add( '' ). lo_buf->add( '/* DIFF TABLE */' ). lo_buf->add( '' ). lo_buf->add( 'table.diff_tab td,th { color: #fff; }' ). lo_buf->add( 'table.diff_tab thead.nav_line { background-color: var(--theme-container-background-color); }' ). lo_buf->add( '' ). lo_buf->add( '/* STYLES FOR SYNTAX HIGHLIGHTING */' ). lo_buf->add( '' ). lo_buf->add( '/* ABAP */' ). lo_buf->add( '.syntax-hl span.keyword { color: #4af; }' ). lo_buf->add( '.syntax-hl span.text { color: #8f8; }' ). lo_buf->add( '.syntax-hl span.comment { color: #999; }' ). lo_buf->add( '/* XML+HTML */' ). lo_buf->add( '.syntax-hl span.xml_tag { color: #659cff; }' ). lo_buf->add( '.syntax-hl span.attr { color: #bab2f9; }' ). lo_buf->add( '.syntax-hl span.attr_val { color: #b777fb; }' ). lo_buf->add( '/* CSS+JS */' ). lo_buf->add( '.syntax-hl span.properties { color:#0a69ce; }' ). lo_buf->add( '.syntax-hl span.values { color:blue; }' ). lo_buf->add( '.syntax-hl span.units { color:maroon; }' ). lo_buf->add( '.syntax-hl span.selectors { color:purple; }' ). lo_buf->add( '.syntax-hl span.functions { color:purple; }' ). lo_buf->add( '.syntax-hl span.colors { color:purple; }' ). lo_buf->add( '.syntax-hl span.extensions { color:lightblue; }' ). lo_buf->add( '.syntax-hl span.at_rules { color:lightblue; }' ). lo_buf->add( '.syntax-hl span.html { color:green; }' ). lo_buf->add( '.syntax-hl span.variables { color:purple; }' ). lo_buf->add( '' ). lo_buf->add( '/* DEBUG INFO STYLES */' ). lo_buf->add( '' ). lo_buf->add( 'div.debug_container#debug_info { color: var(--theme-primary-font-color); }' ). lo_buf->add( '' ). lo_buf->add( '/* DB ENTRIES */' ). lo_buf->add( '' ). lo_buf->add( 'div.db_list { background-color: var(--theme-container-background-color); }' ). lo_buf->add( 'table.db_tab td { color: var(--theme-primary-font-color); }' ). lo_buf->add( 'table.db_tab td.data { opacity: 0.5; }' ). lo_buf->add( 'table.db_tab tbody tr:hover, tr:active { background-color: var(--theme-list-hover-background-color); }' ). lo_buf->add( 'table.db_tab th {' ). lo_buf->add( ' color: var(--theme-primary-font-color);' ). lo_buf->add( ' border-bottom-color: #333;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'table.db_tab tr.selected {' ). lo_buf->add( ' background: rgba(92, 92, 92, 1) !important;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/* ERROR LOGS */' ). lo_buf->add( '' ). lo_buf->add( 'div.log { color: var(--theme-greyscale-dark); }' ). lo_buf->add( '.close-btn, .message-panel, .message-panel-commands a { color: var(--theme-greyscale-dark); }' ). lo_buf->add( '.message-panel-commands a:hover { color: var(--theme-greyscale-dark); }' ). lo_buf->add( '' ). lo_buf->add( '/* DIALOGS */' ). lo_buf->add( '' ). lo_buf->add( '.dialog {' ). lo_buf->add( ' color: var(--theme-primary-font-color-reduced);' ). lo_buf->add( ' background-color: var(--theme-container-background-color);' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.dialog-commands a,' ). lo_buf->add( '.dialog li.dialog-commands input[type="submit"] {' ). lo_buf->add( ' border-color: #ccc;' ). lo_buf->add( ' background-color: var(--theme-greyscale-dark);' ). lo_buf->add( ' color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.dialog-commands a.main,' ). lo_buf->add( '.dialog li.dialog-commands input[type="submit"].main {' ). lo_buf->add( ' background-color: #64a8ff;' ). lo_buf->add( ' color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog label {' ). lo_buf->add( ' color: var(--theme-primary-font-color);' ). lo_buf->add( '}' ). lo_buf->add( '.dialog label em {' ). lo_buf->add( ' color: #64a8ff;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.error small {' ). lo_buf->add( ' color: #ff5959;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.error input[type="number"],' ). lo_buf->add( '.dialog li.error input[type="text"] {' ). lo_buf->add( ' border-color: #ff5959;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog .radio-container {' ). lo_buf->add( ' border-color: #ddd;' ). lo_buf->add( ' background-color: var(--theme-greyscale-dark);' ). lo_buf->add( '}' ). lo_buf->add( '.dialog .radio-container input[type="radio"] + label {' ). lo_buf->add( ' color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog .radio-container input[type="radio"]:checked + label {' ). lo_buf->add( ' background-color: #64a8ff;' ). lo_buf->add( ' color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog li.with-command input[type="button"]:hover,' ). lo_buf->add( '.dialog li.with-command input[type="submit"]:hover {' ). lo_buf->add( ' background-color: #64a8ff;' ). lo_buf->add( ' color: #fff;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog fieldset {' ). lo_buf->add( ' border-color: #dfdfdf;' ). lo_buf->add( '}' ). lo_buf->add( '.dialog fieldset legend {' ). lo_buf->add( ' color: var(--theme-primary-font-color);' ). lo_buf->add( '}' ). lo_buf->add( '.dialog input:read-only {' ). lo_buf->add( ' background-color: var(--theme-greyscale-dark);' ). lo_buf->add( ' color: var(--theme-greyscale-medium);' ). lo_buf->add( '}' ). lo_buf->add( '/* for IE */' ). lo_buf->add( '.dialog input[readonly] {' ). lo_buf->add( ' background-color: var(--theme-greyscale-dark);' ). lo_buf->add( ' color: var(--theme-greyscale-medium);' ). lo_buf->add( '} ' ). li_asset_man->register_asset( iv_url = 'css/theme-dark.css' iv_type = 'text/css' iv_cacheable = abap_false iv_mime_name = 'ZABAPGIT_CSS_THEME_DARK' iv_inline = lo_buf->join_w_newline_and_flush( ) ). **************************************************** * abapmerge Pragma [include] - ZABAPGIT_CSS_THEME_BELIZE_BLUE.W3MI.DATA.CSS **************************************************** lo_buf->add( '/*' ). lo_buf->add( ' * ABAPGIT THEME CSS - BELIZE BLUE' ). lo_buf->add( ' */' ). lo_buf->add( '' ). lo_buf->add( '/* https://experience.sap.com/fiori-design-web/colors/ */' ). lo_buf->add( '' ). lo_buf->add( ':root {' ). lo_buf->add( ' --fiori-color-global-light-base: #EFF4F9; /* Background in SAP GUI */' ). lo_buf->add( ' --fiori-color-gui-tab-background: #FCFDFE; /* Tabstrip background */' ). lo_buf->add( ' --fiori-color-gui-container-border: #D1E0EE;' ). lo_buf->add( ' --fiori-color-gui-uneditable-background: #F2F2F2; /* Textbox not editable */' ). lo_buf->add( ' --fiori-color-gui-editable-background: #FFFFFF; /* Textbox editable */' ). lo_buf->add( ' --fiori-color-font-primary: #333333; /* Grayscale 1 */' ). lo_buf->add( ' --fiori-color-font-secondary: #666666; /* Grayscale 2 */' ). lo_buf->add( ' --fiori-color-font-highlighted: #003D84;' ). lo_buf->add( ' --fiori-color-message-box-background: #2F3C48; /* Bottom message container */' ). lo_buf->add( '' ). lo_buf->add( ' --theme-background-color: var(--fiori-color-global-light-base);' ). lo_buf->add( ' --theme-container-background-color: var(--fiori-color-gui-tab-background);' ). lo_buf->add( ' --theme-primary-font: "72", Arial, Helvetica, sans-serif;' ). lo_buf->add( ' --theme-primary-font-color: var(--fiori-color-font-primary);' ). lo_buf->add( ' --theme-primary-font-color-reduced: var(--fiori-color-font-secondary);' ). lo_buf->add( ' --theme-font-size: 11pt;' ). lo_buf->add( ' --theme-link-color: var(--fiori-color-font-highlighted);' ). lo_buf->add( ' --theme-container-border-color: var(--fiori-color-gui-container-border);' ). lo_buf->add( ' --theme-table-border-color: #E5E5E5; /* ALV border color */' ). lo_buf->add( ' --theme-greyscale-dark: #666666;' ). lo_buf->add( ' --theme-greyscale-medium: #BFBFBF;' ). lo_buf->add( ' --theme-greyscale-light: #CCCCCC;' ). lo_buf->add( ' --theme-greyscale-lighter: #E5E5E5;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '#header a, #header a:visited {' ). lo_buf->add( ' color: #346187;' ). lo_buf->add( '}' ). li_asset_man->register_asset( iv_url = 'css/theme-belize-blue.css' iv_type = 'text/css' iv_cacheable = abap_false iv_mime_name = 'ZABAPGIT_CSS_THEME_BELIZE_BLUE' iv_inline = lo_buf->join_w_newline_and_flush( ) ). **************************************************** * abapmerge Pragma [include] - ZABAPGIT_JS_COMMON.W3MI.DATA.JS **************************************************** lo_buf->add( '/**********************************************************' ). lo_buf->add( ' * abapGit JavaScript Function Library' ). lo_buf->add( ' **********************************************************/' ). lo_buf->add( '' ). lo_buf->add( '/**********************************************************' ). lo_buf->add( ' Global variables used from outside' ). lo_buf->add( ' **********************************************************/' ). lo_buf->add( '' ). lo_buf->add( '/* exported setInitialFocus */' ). lo_buf->add( '/* exported setInitialFocusWithQuerySelector */' ). lo_buf->add( '/* exported submitFormById */' ). lo_buf->add( '/* exported errorStub */' ). lo_buf->add( '/* exported confirmInitialized */' ). lo_buf->add( '/* exported perfOut */' ). lo_buf->add( '/* exported perfLog */' ). lo_buf->add( '/* exported perfClear */' ). lo_buf->add( '/* exported enableArrowListNavigation */' ). lo_buf->add( '/* exported activateLinkHints */' ). lo_buf->add( '/* exported setKeyBindings */' ). lo_buf->add( '/* exported preparePatch */' ). lo_buf->add( '/* exported registerStagePatch */' ). lo_buf->add( '/* exported toggleRepoListDetail */' ). lo_buf->add( '/* exported onTagTypeChange */' ). lo_buf->add( '/* exported getIndocStyleSheet */' ). lo_buf->add( '/* exported addMarginBottom */' ). lo_buf->add( '/* exported enumerateJumpAllFiles */' ). lo_buf->add( '/* exported createRepoCatalogEnumerator */' ). lo_buf->add( '/* exported enumerateUiActions */' ). lo_buf->add( '/* exported onDiffCollapse */' ). lo_buf->add( '/* exported restoreScrollPosition */' ). lo_buf->add( '/* exported toggleBrowserControlWarning */' ). lo_buf->add( '/* exported displayBrowserControlFooter */' ). lo_buf->add( '' ). lo_buf->add( '/**********************************************************' ). lo_buf->add( ' * Polyfills' ). lo_buf->add( ' **********************************************************/' ). lo_buf->add( '' ). lo_buf->add( '// Bind polyfill (for IE7), taken from https://developer.mozilla.org/' ). lo_buf->add( 'if (!Function.prototype.bind) {' ). lo_buf->add( ' Function.prototype.bind = function(oThis) {' ). lo_buf->add( ' if (typeof this !== "function") {' ). lo_buf->add( ' throw new TypeError("Function.prototype.bind - subject is not callable");' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' var aArgs = Array.prototype.slice.call(arguments, 1);' ). lo_buf->add( ' var fToBind = this;' ). lo_buf->add( ' var fNOP = function() { };' ). lo_buf->add( ' var fBound = function() {' ). lo_buf->add( ' return fToBind.apply(' ). lo_buf->add( ' this instanceof fNOP ? this : oThis,' ). lo_buf->add( ' aArgs.concat(Array.prototype.slice.call(arguments))' ). lo_buf->add( ' );' ). lo_buf->add( ' };' ). lo_buf->add( '' ). lo_buf->add( ' if (this.prototype) {' ). lo_buf->add( ' fNOP.prototype = this.prototype;' ). lo_buf->add( ' }' ). lo_buf->add( ' fBound.prototype = new fNOP();' ). lo_buf->add( '' ). lo_buf->add( ' return fBound;' ). lo_buf->add( ' };' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '// String includes polyfill, taken from https://developer.mozilla.org' ). lo_buf->add( 'if (!String.prototype.includes) {' ). lo_buf->add( ' String.prototype.includes = function(search, start) {' ). lo_buf->add( ' "use strict";' ). lo_buf->add( ' if (typeof start !== "number") {' ). lo_buf->add( ' start = 0;' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' if (start + search.length > this.length) {' ). lo_buf->add( ' return false;' ). lo_buf->add( ' } else {' ). lo_buf->add( ' return this.indexOf(search, start) !== -1;' ). lo_buf->add( ' }' ). lo_buf->add( ' };' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '// String startsWith polyfill, taken from https://developer.mozilla.org' ). lo_buf->add( 'if (!String.prototype.startsWith) {' ). lo_buf->add( ' Object.defineProperty(String.prototype, "startsWith", {' ). lo_buf->add( ' value: function(search, pos) {' ). lo_buf->add( ' pos = !pos || pos < 0 ? 0 : +pos;' ). lo_buf->add( '' ). lo_buf->add( ' return this.substring(pos, pos + search.length) === search;' ). lo_buf->add( ' }' ). lo_buf->add( ' });' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '// forEach polyfill, taken from https://developer.mozilla.org' ). lo_buf->add( '// used for querySelectorAll results' ). lo_buf->add( 'if (window.NodeList && !NodeList.prototype.forEach) {' ). lo_buf->add( ' NodeList.prototype.forEach = Array.prototype.forEach;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/**********************************************************' ). lo_buf->add( ' * Common functions' ). lo_buf->add( ' **********************************************************/' ). lo_buf->add( '' ). lo_buf->add( '// Output text to the debug div' ). lo_buf->add( 'function debugOutput(text, dstID) {' ). lo_buf->add( ' var stdout = document.getElementById(dstID || "debug-output");' ). lo_buf->add( ' var wrapped = "

" + text + "

";' ). lo_buf->add( '' ). lo_buf->add( ' stdout.innerHTML = stdout.innerHTML + wrapped;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '// Use a supplied form, a pre-created form or create a hidden form' ). lo_buf->add( '// and submit with sapevent' ). lo_buf->add( 'function submitSapeventForm(params, action, method, form) {' ). lo_buf->add( '' ). lo_buf->add( ' function getSapeventPrefix() {' ). lo_buf->add( ' // Depending on the used browser control and its version, different URL schemes' ). lo_buf->add( ' // are used which we distinguish here' ). lo_buf->add( ' if (document.querySelector(''a[href*="file:///SAPEVENT:"]'')) {' ). lo_buf->add( ' // Prefix for old (SAPGUI <= 8.00 PL3) chromium based browser control' ). lo_buf->add( ' return "file:///";' ). lo_buf->add( ' } else if (document.querySelector(''a[href^="sap-cust"]'')) {' ). lo_buf->add( ' // Prefix for new (SAPGUI >= 8.00 PL3 Hotfix 1) chromium based browser control' ). lo_buf->add( ' return "sap-cust://sap-place-holder/";' ). lo_buf->add( ' } else {' ). lo_buf->add( ' return ""; // No prefix for old IE control' ). lo_buf->add( ' }' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' var stub_form_id = "form_" + action;' ). lo_buf->add( '' ). lo_buf->add( ' form = form' ). lo_buf->add( ' || document.getElementById(stub_form_id)' ). lo_buf->add( ' || document.createElement("form");' ). lo_buf->add( '' ). lo_buf->add( ' form.setAttribute("method", method || "post");' ). lo_buf->add( ' if (/sapevent/i.test(action)) {' ). lo_buf->add( ' form.setAttribute("action", action);' ). lo_buf->add( ' } else {' ). lo_buf->add( ' form.setAttribute("action", getSapeventPrefix() + "SAPEVENT:" + action);' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' for (var key in params) {' ). lo_buf->add( ' var hiddenField = document.createElement("input");' ). lo_buf->add( ' hiddenField.setAttribute("type", "hidden");' ). lo_buf->add( ' hiddenField.setAttribute("name", key);' ). lo_buf->add( ' hiddenField.setAttribute("value", params[key]);' ). lo_buf->add( ' form.appendChild(hiddenField);' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' var formExistsInDOM = form.id && Boolean(document.querySelector("#" + form.id));' ). lo_buf->add( '' ). lo_buf->add( ' if (form.id !== stub_form_id && !formExistsInDOM) {' ). lo_buf->add( ' document.body.appendChild(form);' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' form.submit();' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '// Set focus to a control' ). lo_buf->add( 'function setInitialFocus(id) {' ). lo_buf->add( ' document.getElementById(id).focus();' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '// Set focus to an element with query selector' ). lo_buf->add( 'function setInitialFocusWithQuerySelector(sSelector, bFocusParent) {' ). lo_buf->add( ' var oSelected = document.querySelector(sSelector);' ). lo_buf->add( '' ). lo_buf->add( ' if (oSelected) {' ). lo_buf->add( ' if (bFocusParent) {' ). lo_buf->add( ' oSelected.parentElement.focus();' ). lo_buf->add( ' } else {' ). lo_buf->add( ' oSelected.focus();' ). lo_buf->add( ' }' ). lo_buf->add( ' }' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '// Submit an existing form' ). lo_buf->add( 'function submitFormById(id) {' ). lo_buf->add( ' document.getElementById(id).submit();' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '// JS error stub' ). lo_buf->add( 'function errorStub(event) {' ). lo_buf->add( ' var element = event.target || event.srcElement;' ). lo_buf->add( ' var targetName = element.id || element.name || "???";' ). lo_buf->add( ' alert("JS Error, please log an issue (@" + targetName + ")");' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '// Confirm JS initialization' ). lo_buf->add( 'function confirmInitialized() {' ). lo_buf->add( ' var errorBanner = document.getElementById("js-error-banner");' ). lo_buf->add( ' if (errorBanner) {' ). lo_buf->add( ' errorBanner.style.display = "none";' ). lo_buf->add( ' }' ). lo_buf->add( ' debugOutput("js: OK"); // Final final confirmation :)' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/**********************************************************' ). lo_buf->add( ' * Performance utils (for debugging)' ). lo_buf->add( ' **********************************************************/' ). lo_buf->add( '' ). lo_buf->add( 'var gPerf = [];' ). lo_buf->add( '' ). lo_buf->add( 'function perfOut(prefix) {' ). lo_buf->add( ' var totals = {};' ). lo_buf->add( ' for (var i = gPerf.length - 1; i >= 0; i--) {' ). lo_buf->add( ' if (!totals[gPerf[i].name]) totals[gPerf[i].name] = { count: 0, time: 0 };' ). lo_buf->add( '' ). lo_buf->add( ' totals[gPerf[i].name].time += gPerf[i].time;' ). lo_buf->add( ' totals[gPerf[i].name].count += 1;' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' var keys = Object.keys(totals);' ). lo_buf->add( ' for (var j = keys.length - 1; j >= 0; j--) {' ). lo_buf->add( ' console.log(prefix' ). lo_buf->add( ' + " " + keys[j] + ": "' ). lo_buf->add( ' + totals[keys[j]].time.toFixed(3) + "ms"' ). lo_buf->add( ' + " (" + totals[keys[j]].count.toFixed() + ")");' ). lo_buf->add( ' }' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'function perfLog(name, startTime) {' ). lo_buf->add( ' gPerf.push({ name: name, time: window.performance.now() - startTime });' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'function perfClear() {' ). lo_buf->add( ' gPerf = [];' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( '/**********************************************************' ). lo_buf->add( ' * Repo Overview Logic' ). lo_buf->add( ' **********************************************************/' ). lo_buf->add( '' ). lo_buf->add( 'function findStyleSheetByName(name) {' ). lo_buf->add( ' for (var s = 0; s < document.styleSheets.length; s++) {' ). lo_buf->add( ' var styleSheet = document.styleSheets[s];' ). lo_buf->add( ' var classes = styleSheet.cssRules || styleSheet.rules;' ). lo_buf->add( ' for (var i = 0; i < classes.length; i++) {' ). lo_buf->add( ' if (classes[i].selectorText === name) return classes[i];' ). lo_buf->add( ' }' ). lo_buf->add( ' }' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'function getIndocStyleSheet() {' ). lo_buf->add( ' for (var s = 0; s < document.styleSheets.length; s++) {' ). lo_buf->add( ' if (!document.styleSheets[s].href) return document.styleSheets[s]; // One with empty href' ). lo_buf->add( ' }' ). lo_buf->add( ' // None found ? create one' ). lo_buf->add( ' var style = document.createElement("style");' ). lo_buf->add( ' document.head.appendChild(style);' ). lo_buf->add( ' return style.sheet;' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'function RepoOverViewHelper(opts) {' ). lo_buf->add( ' if (opts && opts.focusFilterKey) {' ). lo_buf->add( ' this.focusFilterKey = opts.focusFilterKey;' ). lo_buf->add( ' }' ). lo_buf->add( ' this.setHooks();' ). lo_buf->add( ' this.pageId = "RepoOverViewHelperState"; // constant is OK for this case' ). lo_buf->add( ' this.isDetailsDisplayed = false;' ). lo_buf->add( ' this.isOnlyFavoritesDisplayed = false;' ). lo_buf->add( ' this.detailCssClass = findStyleSheetByName(".repo-overview .ro-detail");' ). lo_buf->add( '' ). lo_buf->add( ' var icon = document.getElementById("icon-filter-detail");' ). lo_buf->add( ' this.toggleFilterIcon(icon, this.isDetailsDisplayed);' ). lo_buf->add( ' this.registerRowSelection();' ). lo_buf->add( ' this.registerKeyboardShortcuts();' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.setHooks = function() {' ). lo_buf->add( ' window.onload = this.onPageLoad.bind(this);' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.onPageLoad = function() {' ). lo_buf->add( ' var data = window.localStorage && JSON.parse(window.localStorage.getItem(this.pageId));' ). lo_buf->add( ' if (data) {' ). lo_buf->add( ' if (data.isDetailsDisplayed) {' ). lo_buf->add( ' this.toggleItemsDetail(true);' ). lo_buf->add( ' }' ). lo_buf->add( ' if (data.selectedRepoKey) {' ). lo_buf->add( ' this.selectRowByRepoKey(data.selectedRepoKey);' ). lo_buf->add( ' } else {' ). lo_buf->add( ' this.selectRowByIndex(0);' ). lo_buf->add( ' }' ). lo_buf->add( ' }' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.registerKeyboardShortcuts = function() {' ). lo_buf->add( ' var self = this;' ). lo_buf->add( ' document.addEventListener("keypress", function(event) {' ). lo_buf->add( ' if (document.activeElement.id === "filter") {' ). lo_buf->add( ' return;' ). lo_buf->add( ' }' ). lo_buf->add( ' if (self.focusFilterKey && event.key === self.focusFilterKey && !CommandPalette.isVisible()) {' ). lo_buf->add( ' var filterInput = document.getElementById("filter");' ). lo_buf->add( ' if (filterInput) filterInput.focus();' ). lo_buf->add( ' event.preventDefault();' ). lo_buf->add( ' return;' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' var keycode = event.keyCode;' ). lo_buf->add( ' var rows = Array.prototype.slice.call(self.getVisibleRows());' ). lo_buf->add( ' var selected = document.querySelector(".repo-overview tr.selected");' ). lo_buf->add( ' var indexOfSelected = rows.indexOf(selected);' ). lo_buf->add( ' var lastRow = rows.length - 1;' ). lo_buf->add( '' ). lo_buf->add( ' if (keycode == 13 && document.activeElement.tagName.toLowerCase() != "input") {' ). lo_buf->add( ' // "enter" to open, unless command field has focus' ). lo_buf->add( ' self.openSelectedRepo();' ). lo_buf->add( ' } else if ((keycode == 52 || keycode == 56) && indexOfSelected > 0) {' ). lo_buf->add( ' // "4,8" for previous, digits are the numlock keys' ). lo_buf->add( ' // NB: numpad must be activated, keypress does not detect arrows' ). lo_buf->add( ' // if we need arrows it will be keydown. But then mind the keycodes, they may change !' ). lo_buf->add( ' // e.g. 100 is ''d'' with keypress (and conflicts with diff hotkey), and also it is arrow-left keydown' ). lo_buf->add( ' self.selectRowByIndex(indexOfSelected - 1);' ). lo_buf->add( ' } else if ((keycode == 54 || keycode == 50) && indexOfSelected < lastRow) {' ). lo_buf->add( ' // "6,2" for next' ). lo_buf->add( ' self.selectRowByIndex(indexOfSelected + 1);' ). lo_buf->add( ' }' ). lo_buf->add( ' });' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.openSelectedRepo = function() {' ). lo_buf->add( ' this.selectedRepoKey = document.querySelector(".repo-overview tr.selected").dataset.key;' ). lo_buf->add( ' this.saveLocalStorage();' ). lo_buf->add( ' document.querySelector(".repo-overview tr.selected td.ro-go a").click();' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.selectRowByIndex = function(index) {' ). lo_buf->add( ' var rows = this.getVisibleRows();' ). lo_buf->add( ' if (rows.length >= index) {' ). lo_buf->add( ' var selectedRow = rows[index];' ). lo_buf->add( ' if (selectedRow.classList.contains("selected")) {' ). lo_buf->add( ' return;' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' this.deselectAllRows();' ). lo_buf->add( ' rows[index].classList.add("selected");' ). lo_buf->add( ' this.selectedRepoKey = selectedRow.dataset.key;' ). lo_buf->add( ' this.updateActionLinks(selectedRow);' ). lo_buf->add( ' this.saveLocalStorage();' ). lo_buf->add( ' }' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.selectRowByRepoKey = function(key) {' ). lo_buf->add( ' var attributeQuery = "[data-key=''" + key + "'']";' ). lo_buf->add( ' var row = document.querySelector(".repo-overview tbody tr" + attributeQuery);' ). lo_buf->add( ' // navigation to already selected repo' ). lo_buf->add( ' if (row.dataset.key === key && row.classList.contains("selected")) {' ). lo_buf->add( ' return;' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' this.deselectAllRows();' ). lo_buf->add( ' row.classList.add("selected");' ). lo_buf->add( ' this.selectedRepoKey = key;' ). lo_buf->add( ' this.updateActionLinks(row);' ). lo_buf->add( ' this.saveLocalStorage();' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.updateActionLinks = function(selectedRow) {' ). lo_buf->add( ' // now we have a repo selected, determine which action buttons are relevant' ). lo_buf->add( ' var selectedRepoKey = selectedRow.dataset.key;' ). lo_buf->add( ' var selectedRepoIsOffline = selectedRow.dataset.offline === "X";' ). lo_buf->add( '' ). lo_buf->add( ' var actionLinks = document.querySelectorAll("a.action_link");' ). lo_buf->add( ' actionLinks.forEach(function(link) {' ). lo_buf->add( ' // adjust repo key in urls' ). lo_buf->add( ' link.href = link.href.replace(/\?key=(#|\d+)/, "?key=" + selectedRepoKey);' ). lo_buf->add( '' ). lo_buf->add( ' // toggle button visibility' ). lo_buf->add( ' if (link.classList.contains("action_offline_repo")) {' ). lo_buf->add( ' if (selectedRepoIsOffline) {' ). lo_buf->add( ' link.parentElement.classList.add("enabled");' ). lo_buf->add( ' } else {' ). lo_buf->add( ' link.parentElement.classList.remove("enabled");' ). lo_buf->add( ' }' ). lo_buf->add( ' }' ). lo_buf->add( ' else if (link.classList.contains("action_online_repo")) {' ). lo_buf->add( ' if (!selectedRepoIsOffline) {' ). lo_buf->add( ' link.parentElement.classList.add("enabled");' ). lo_buf->add( ' } else {' ). lo_buf->add( ' link.parentElement.classList.remove("enabled");' ). lo_buf->add( ' }' ). lo_buf->add( ' }' ). lo_buf->add( ' else {' ). lo_buf->add( ' // if the action is for both repository types, it will only have the .action_link class' ). lo_buf->add( ' // it still needs to be toggled as we want to hide everything if no repo is selected' ). lo_buf->add( ' link.parentElement.classList.add("enabled");' ). lo_buf->add( ' }' ). lo_buf->add( ' });' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.deselectAllRows = function() {' ). lo_buf->add( ' document.querySelectorAll(".repo-overview tbody tr").forEach(function(x) {' ). lo_buf->add( ' x.classList.remove("selected");' ). lo_buf->add( ' });' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.getVisibleRows = function() {' ). lo_buf->add( ' return document.querySelectorAll(".repo-overview tbody tr:not(.nodisplay)");' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.registerRowSelection = function() {' ). lo_buf->add( ' var self = this;' ). lo_buf->add( ' document.querySelectorAll(".repo-overview tr td:not(.ro-go)").forEach(function(repoListRowCell) {' ). lo_buf->add( ' repoListRowCell.addEventListener("click", function() {' ). lo_buf->add( ' self.selectRowByRepoKey(this.parentElement.dataset.key);' ). lo_buf->add( ' });' ). lo_buf->add( ' });' ). lo_buf->add( '' ). lo_buf->add( ' document.querySelectorAll(".repo-overview tr td.ro-go").forEach(function(openRepoIcon) {' ). lo_buf->add( ' openRepoIcon.addEventListener("click", function() {' ). lo_buf->add( ' var selectedRow = this.parentElement;' ). lo_buf->add( ' self.selectRowByRepoKey(selectedRow.dataset.key);' ). lo_buf->add( ' self.openSelectedRepo();' ). lo_buf->add( ' });' ). lo_buf->add( ' });' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.toggleRepoListDetail = function(forceDisplay) {' ). lo_buf->add( ' if (this.detailCssClass) {' ). lo_buf->add( ' this.toggleItemsDetail(forceDisplay);' ). lo_buf->add( ' this.saveLocalStorage();' ). lo_buf->add( ' }' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.toggleItemsDetail = function(forceDisplay) {' ). lo_buf->add( ' if (this.detailCssClass) {' ). lo_buf->add( ' this.isDetailsDisplayed = forceDisplay || !this.isDetailsDisplayed;' ). lo_buf->add( '' ). lo_buf->add( ' // change layout to wide if details are displayed' ). lo_buf->add( ' if (this.isDetailsDisplayed) {' ). lo_buf->add( ' document.body.classList.remove("centered");' ). lo_buf->add( ' document.body.classList.add("full_width");' ). lo_buf->add( ' } else {' ). lo_buf->add( ' document.body.classList.add("centered");' ). lo_buf->add( ' document.body.classList.remove("full_width");' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' this.detailCssClass.style.display = this.isDetailsDisplayed ? "" : "none";' ). lo_buf->add( '' ). lo_buf->add( ' var icon = document.getElementById("icon-filter-detail");' ). lo_buf->add( ' this.toggleFilterIcon(icon, this.isDetailsDisplayed);' ). lo_buf->add( ' }' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.toggleFilterIcon = function(icon, isEnabled) {' ). lo_buf->add( ' if (isEnabled) {' ). lo_buf->add( ' icon.classList.remove("grey");' ). lo_buf->add( ' icon.classList.add("blue");' ). lo_buf->add( ' } else {' ). lo_buf->add( ' icon.classList.remove("blue");' ). lo_buf->add( ' icon.classList.add("grey");' ). lo_buf->add( ' }' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'RepoOverViewHelper.prototype.saveLocalStorage = function() {' ). lo_buf->add( ' if (!window.localStorage) return;' ). lo_buf->add( ' var data = {' ). lo_buf->add( ' isDetailsDisplayed : this.isDetailsDisplayed,' ). lo_buf->add( ' isOnlyFavoritesDisplayed: this.isOnlyFavoritesDisplayed,' ). lo_buf->add( ' selectedRepoKey : this.selectedRepoKey,' ). lo_buf->add( ' };' ). lo_buf->add( ' window.localStorage.setItem(this.pageId, JSON.stringify(data));' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '/**********************************************************' ). lo_buf->add( ' * Staging Logic' ). lo_buf->add( ' **********************************************************/' ). lo_buf->add( '' ). lo_buf->add( '// Stage helper constructor' ). lo_buf->add( 'function StageHelper(params) {' ). lo_buf->add( ' this.pageSeed = params.seed;' ). lo_buf->add( ' this.formAction = params.formAction;' ). lo_buf->add( ' this.patchAction = params.patchAction;' ). lo_buf->add( ' this.user = params.user;' ). lo_buf->add( ' this.ids = params.ids;' ). lo_buf->add( ' this.selectedCount = 0;' ). lo_buf->add( ' this.filteredCount = 0;' ). lo_buf->add( ' this.lastFilterValue = "";' ). lo_buf->add( ' this.focusFilterKey = params.focusFilterKey;' ). lo_buf->add( '' ). lo_buf->add( ' // DOM nodes' ). lo_buf->add( ' this.dom = {' ). lo_buf->add( ' stageTab : document.getElementById(params.ids.stageTab),' ). lo_buf->add( ' commitAllBtn : document.getElementById(params.ids.commitAllBtn),' ). lo_buf->add( ' commitSelectedBtn: document.getElementById(params.ids.commitSelectedBtn),' ). lo_buf->add( ' commitFilteredBtn: document.getElementById(params.ids.commitFilteredBtn),' ). lo_buf->add( ' patchBtn : document.getElementById(params.ids.patchBtn),' ). lo_buf->add( ' objectSearch : document.getElementById(params.ids.objectSearch),' ). lo_buf->add( ' selectedCounter : null,' ). lo_buf->add( ' filteredCounter : null,' ). lo_buf->add( ' };' ). lo_buf->add( ' this.findCounters();' ). lo_buf->add( '' ). lo_buf->add( ' // Table columns (autodetection)' ). lo_buf->add( ' this.colIndex = this.detectColumns();' ). lo_buf->add( ' this.filterTargets = ["name", "user", "transport"];' ). lo_buf->add( '' ). lo_buf->add( ' // Constants' ). lo_buf->add( ' this.HIGHLIGHT_STYLE = "highlight";' ). lo_buf->add( ' this.STATUS = {' ). lo_buf->add( ' add : "A",' ). lo_buf->add( ' remove : "R",' ). lo_buf->add( ' ignore : "I",' ). lo_buf->add( ' reset : "?",' ). lo_buf->add( ' isValid: function(status) { return "ARI?".indexOf(status) == -1 }' ). lo_buf->add( ' };' ). lo_buf->add( '' ). lo_buf->add( ' this.TEMPLATES = {' ). lo_buf->add( ' cmdReset : "reset",' ). lo_buf->add( ' cmdLocal : "add",' ). lo_buf->add( ' cmdRemote: "ignoreremove"' ). lo_buf->add( ' };' ). lo_buf->add( '' ). lo_buf->add( ' this.setHooks();' ). lo_buf->add( ' if (this.user) this.injectFilterMe();' ). lo_buf->add( ' Hotkeys.addHotkeyToHelpSheet("^Enter", "Commit");' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'StageHelper.prototype.findCounters = function() {' ). lo_buf->add( ' this.dom.selectedCounter = this.dom.commitSelectedBtn.querySelector("span.counter");' ). lo_buf->add( ' this.dom.filteredCounter = this.dom.commitFilteredBtn.querySelector("span.counter");' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'StageHelper.prototype.injectFilterMe = function() {' ). lo_buf->add( ' var tabFirstHead = this.dom.stageTab.tHead.rows[0];' ). lo_buf->add( ' if (!tabFirstHead || tabFirstHead.className !== "local") {' ). lo_buf->add( ' return; // for the case only "remove part" is displayed' ). lo_buf->add( ' }' ). lo_buf->add( ' var changedByHead = tabFirstHead.cells[this.colIndex.user];' ). lo_buf->add( '' ). lo_buf->add( ' changedByHead.innerText = changedByHead.innerText + " (";' ). lo_buf->add( '' ). lo_buf->add( ' var a = document.createElement("A");' ). lo_buf->add( ' a.appendChild(document.createTextNode("me"));' ). lo_buf->add( ' a.onclick = this.onFilterMe.bind(this);' ). lo_buf->add( ' a.href = "#";' ). lo_buf->add( ' changedByHead.appendChild(a);' ). lo_buf->add( ' changedByHead.appendChild(document.createTextNode(")"));' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'StageHelper.prototype.onFilterMe = function() {' ). lo_buf->add( ' this.dom.objectSearch.value = this.user;' ). lo_buf->add( ' this.onFilter({ type: "keypress", which: 13, target: this.dom.objectSearch });' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Hook global click listener on table, load/unload actions' ). lo_buf->add( 'StageHelper.prototype.setHooks = function() {' ). lo_buf->add( ' window.onkeypress = this.onCtrlEnter.bind(this);' ). lo_buf->add( ' this.dom.stageTab.onclick = this.onTableClick.bind(this);' ). lo_buf->add( ' this.dom.commitSelectedBtn.onclick = this.submit.bind(this);' ). lo_buf->add( ' this.dom.commitFilteredBtn.onclick = this.submitVisible.bind(this);' ). lo_buf->add( ' this.dom.patchBtn.onclick = this.submitPatch.bind(this);' ). lo_buf->add( ' this.dom.objectSearch.oninput = this.onFilter.bind(this);' ). lo_buf->add( ' this.dom.objectSearch.onkeypress = this.onFilter.bind(this);' ). lo_buf->add( ' window.onbeforeunload = this.onPageUnload.bind(this);' ). lo_buf->add( ' window.onload = this.onPageLoad.bind(this);' ). lo_buf->add( '' ). lo_buf->add( ' var self = this;' ). lo_buf->add( ' document.addEventListener("keypress", function(event) {' ). lo_buf->add( ' if (document.activeElement.id !== self.ids.objectSearch' ). lo_buf->add( ' && self.focusFilterKey && event.key === self.focusFilterKey' ). lo_buf->add( ' && !CommandPalette.isVisible()) {' ). lo_buf->add( '' ). lo_buf->add( ' self.dom.objectSearch.focus();' ). lo_buf->add( ' event.preventDefault();' ). lo_buf->add( ' }' ). lo_buf->add( ' });' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Detect column index' ). lo_buf->add( 'StageHelper.prototype.detectColumns = function() {' ). lo_buf->add( ' var dataRow = this.dom.stageTab.tBodies[0].rows[0];' ). lo_buf->add( ' var colIndex = {};' ). lo_buf->add( '' ). lo_buf->add( ' for (var i = dataRow.cells.length - 1; i >= 0; i--) {' ). lo_buf->add( ' if (dataRow.cells[i].className) colIndex[dataRow.cells[i].className] = i;' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' return colIndex;' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Store table state on leaving the page' ). lo_buf->add( 'StageHelper.prototype.onPageUnload = function() {' ). lo_buf->add( ' if (!window.sessionStorage) return;' ). lo_buf->add( '' ). lo_buf->add( ' var data = this.collectData();' ). lo_buf->add( ' window.sessionStorage.setItem(this.pageSeed, JSON.stringify(data));' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Re-store table state on entering the page' ). lo_buf->add( 'StageHelper.prototype.onPageLoad = function() {' ). lo_buf->add( ' var data = window.sessionStorage && JSON.parse(window.sessionStorage.getItem(this.pageSeed));' ). lo_buf->add( '' ). lo_buf->add( ' this.iterateStageTab(true, function(row) {' ). lo_buf->add( ' var status = data && data[row.cells[this.colIndex["name"]].innerText];' ). lo_buf->add( ' this.updateRow(row, status || this.STATUS.reset);' ). lo_buf->add( ' });' ). lo_buf->add( '' ). lo_buf->add( ' this.updateMenu();' ). lo_buf->add( ' if (this.dom.objectSearch.value) {' ). lo_buf->add( ' this.applyFilterValue(this.dom.objectSearch.value);' ). lo_buf->add( ' }' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Table event handler, change status' ). lo_buf->add( 'StageHelper.prototype.onTableClick = function(event) {' ). lo_buf->add( ' var target = event.target || event.srcElement;' ). lo_buf->add( ' if (!target) return;' ). lo_buf->add( '' ). lo_buf->add( ' var td;' ). lo_buf->add( ' if (target.tagName === "A") {' ). lo_buf->add( ' td = target.parentNode;' ). lo_buf->add( ' } else if (target.tagName === "TD") {' ). lo_buf->add( ' td = target;' ). lo_buf->add( ' if (td.children.length === 1 && td.children[0].tagName === "A") {' ). lo_buf->add( ' target = td.children[0];' ). lo_buf->add( ' } else return;' ). lo_buf->add( ' } else return;' ). lo_buf->add( '' ). lo_buf->add( ' if (["TD", "TH"].indexOf(td.tagName) == -1 || td.className != "cmd") return;' ). lo_buf->add( '' ). lo_buf->add( ' var status = this.STATUS[target.innerText]; // Convert anchor text to status' ). lo_buf->add( ' var targetRow = td.parentNode;' ). lo_buf->add( '' ). lo_buf->add( ' if (td.tagName === "TD") {' ). lo_buf->add( ' this.updateRow(targetRow, status);' ). lo_buf->add( ' } else { // TH' ). lo_buf->add( ' this.iterateStageTab(true, function(row) {' ). lo_buf->add( ' if (row.style.display !== "none" // Not filtered out' ). lo_buf->add( ' && row.className === targetRow.className // Same context as header' ). lo_buf->add( ' ) {' ). lo_buf->add( ' this.updateRow(row, status);' ). lo_buf->add( ' }' ). lo_buf->add( ' });' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' this.updateMenu();' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'StageHelper.prototype.onCtrlEnter = function(e) {' ). lo_buf->add( ' if (e.ctrlKey && (e.which === 10 || e.key === "Enter")) {' ). lo_buf->add( ' var clickMap = {' ). lo_buf->add( ' "default" : this.dom.commitAllBtn,' ). lo_buf->add( ' "selected": this.dom.commitSelectedBtn,' ). lo_buf->add( ' "filtered": this.dom.commitFilteredBtn' ). lo_buf->add( ' };' ). lo_buf->add( ' clickMap[this.calculateActiveCommitCommand()].click();' ). lo_buf->add( ' }' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Search object' ). lo_buf->add( 'StageHelper.prototype.onFilter = function(e) {' ). lo_buf->add( ' if ( // Enter hit or clear, IE SUCKS !' ). lo_buf->add( ' e.type === "input" && !e.target.value && this.lastFilterValue' ). lo_buf->add( ' || e.type === "keypress" && (e.which === 13 || e.key === "Enter") && !e.ctrlKey) {' ). lo_buf->add( '' ). lo_buf->add( ' this.applyFilterValue(e.target.value);' ). lo_buf->add( ' submitSapeventForm({ filterValue: e.target.value }, "stage_filter", "post");' ). lo_buf->add( ' }' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'StageHelper.prototype.applyFilterValue = function(sFilterValue) {' ). lo_buf->add( ' this.lastFilterValue = sFilterValue;' ). lo_buf->add( ' this.filteredCount = this.iterateStageTab(true, this.applyFilterToRow, sFilterValue);' ). lo_buf->add( ' this.updateMenu();' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Apply filter to a single stage line - hide or show' ). lo_buf->add( 'StageHelper.prototype.applyFilterToRow = function(row, filter) {' ). lo_buf->add( ' // Collect data cells' ). lo_buf->add( ' var targets = this.filterTargets.map(function(attr) {' ). lo_buf->add( ' // Get the innermost tag with the text we want to filter' ). lo_buf->add( ' // text: elem = td-tag' ). lo_buf->add( ' // text: elem = a-tag' ). lo_buf->add( ' var elem = row.cells[this.colIndex[attr]];' ). lo_buf->add( ' var elemA = elem.getElementsByTagName("A")[0];' ). lo_buf->add( '' ). lo_buf->add( ' if (elemA) elem = elemA;' ). lo_buf->add( ' return {' ). lo_buf->add( ' elem : elem,' ). lo_buf->add( ' plainText: elem.innerText.replace(/ /g, "\u00a0"), // without tags, with encoded spaces' ). lo_buf->add( ' curHtml : elem.innerHTML' ). lo_buf->add( ' };' ). lo_buf->add( ' }, this);' ). lo_buf->add( '' ). lo_buf->add( ' var isVisible = false;' ). lo_buf->add( '' ). lo_buf->add( ' // Apply filter to cells, mark filtered text' ). lo_buf->add( ' for (var i = targets.length - 1; i >= 0; i--) {' ). lo_buf->add( ' var target = targets[i];' ). lo_buf->add( ' // Ignore case of filter' ). lo_buf->add( ' var regFilter = new RegExp("(" + filter + ")", "gi");' ). lo_buf->add( '' ). lo_buf->add( ' target.newHtml = (filter)' ). lo_buf->add( ' ? target.plainText.replace(regFilter, "$1")' ). lo_buf->add( ' : target.plainText;' ). lo_buf->add( ' target.isChanged = target.newHtml !== target.curHtml;' ). lo_buf->add( ' isVisible = isVisible || !filter || target.newHtml !== target.plainText;' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' // Update DOM' ). lo_buf->add( ' row.style.display = isVisible ? "" : "none";' ). lo_buf->add( ' for (var j = targets.length - 1; j >= 0; j--) {' ). lo_buf->add( ' if (targets[j].isChanged) targets[j].elem.innerHTML = targets[j].newHtml;' ). lo_buf->add( ' }' ). lo_buf->add( ' return isVisible ? 1 : 0;' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Get how status should affect object counter' ). lo_buf->add( 'StageHelper.prototype.getStatusImpact = function(status) {' ). lo_buf->add( ' if (typeof status !== "string"' ). lo_buf->add( ' || status.length !== 1' ). lo_buf->add( ' || this.STATUS.isValid(status)) {' ). lo_buf->add( ' alert("Unknown status");' ). lo_buf->add( ' } else {' ). lo_buf->add( ' return (status !== this.STATUS.reset) ? 1: 0;' ). lo_buf->add( ' }' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Update table line' ). lo_buf->add( 'StageHelper.prototype.updateRow = function(row, newStatus) {' ). lo_buf->add( ' var oldStatus = row.cells[this.colIndex["status"]].innerText;' ). lo_buf->add( '' ). lo_buf->add( ' if (oldStatus !== newStatus) {' ). lo_buf->add( ' this.updateRowStatus(row, newStatus);' ). lo_buf->add( ' this.updateRowCommand(row, newStatus);' ). lo_buf->add( ' } else if (!row.cells[this.colIndex["cmd"]].children.length) {' ). lo_buf->add( ' this.updateRowCommand(row, newStatus); // For initial run' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' this.selectedCount += this.getStatusImpact(newStatus) - this.getStatusImpact(oldStatus);' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Update Status cell (render set of commands)' ). lo_buf->add( 'StageHelper.prototype.updateRowStatus = function(row, status) {' ). lo_buf->add( ' row.cells[this.colIndex["status"]].innerText = status;' ). lo_buf->add( ' if (status === this.STATUS.reset) {' ). lo_buf->add( ' row.cells[this.colIndex["status"]].classList.remove(this.HIGHLIGHT_STYLE);' ). lo_buf->add( ' } else {' ). lo_buf->add( ' row.cells[this.colIndex["status"]].classList.add(this.HIGHLIGHT_STYLE);' ). lo_buf->add( ' }' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Update Command cell (render set of commands)' ). lo_buf->add( 'StageHelper.prototype.updateRowCommand = function(row, status) {' ). lo_buf->add( ' var cell = row.cells[this.colIndex["cmd"]];' ). lo_buf->add( ' if (status === this.STATUS.reset) {' ). lo_buf->add( ' cell.innerHTML = (row.className == "local")' ). lo_buf->add( ' ? this.TEMPLATES.cmdLocal' ). lo_buf->add( ' : this.TEMPLATES.cmdRemote;' ). lo_buf->add( ' } else {' ). lo_buf->add( ' cell.innerHTML = this.TEMPLATES.cmdReset;' ). lo_buf->add( ' }' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'StageHelper.prototype.calculateActiveCommitCommand = function() {' ). lo_buf->add( ' var active;' ). lo_buf->add( ' if (this.selectedCount > 0) {' ). lo_buf->add( ' active = "selected";' ). lo_buf->add( ' } else if (this.lastFilterValue) {' ). lo_buf->add( ' active = "filtered";' ). lo_buf->add( ' } else {' ). lo_buf->add( ' active = "default";' ). lo_buf->add( ' }' ). lo_buf->add( ' return active;' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Update menu items visibility' ). lo_buf->add( 'StageHelper.prototype.updateMenu = function() {' ). lo_buf->add( ' var display = this.calculateActiveCommitCommand();' ). lo_buf->add( '' ). lo_buf->add( ' if (display === "selected") this.dom.selectedCounter.innerText = this.selectedCount.toString();' ). lo_buf->add( ' if (display === "filtered") this.dom.filteredCounter.innerText = this.filteredCount.toString();' ). lo_buf->add( '' ). lo_buf->add( ' this.dom.commitAllBtn.style.display = display === "default" ? "" : "none";' ). lo_buf->add( ' this.dom.commitSelectedBtn.style.display = display === "selected" ? "" : "none";' ). lo_buf->add( ' this.dom.commitFilteredBtn.style.display = display === "filtered" ? "" : "none";' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Submit stage state to the server' ). lo_buf->add( 'StageHelper.prototype.submit = function() {' ). lo_buf->add( ' submitSapeventForm(this.collectData(), this.formAction);' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'StageHelper.prototype.submitVisible = function() {' ). lo_buf->add( ' this.markVisiblesAsAdded();' ). lo_buf->add( ' submitSapeventForm(this.collectData(), this.formAction);' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'StageHelper.prototype.submitPatch = function() {' ). lo_buf->add( ' submitSapeventForm(this.collectData(), this.patchAction);' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Extract data from the table' ). lo_buf->add( 'StageHelper.prototype.collectData = function() {' ). lo_buf->add( ' var data = {};' ). lo_buf->add( ' this.iterateStageTab(false, function(row) {' ). lo_buf->add( ' data[row.cells[this.colIndex["name"]].innerText] = row.cells[this.colIndex["status"]].innerText;' ). lo_buf->add( ' });' ). lo_buf->add( ' return data;' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( 'StageHelper.prototype.markVisiblesAsAdded = function() {' ). lo_buf->add( ' this.iterateStageTab(false, function(row) {' ). lo_buf->add( ' // TODO refactor, unify updateRow logic' ). lo_buf->add( ' if (row.style.display === "" && row.className === "local") { // visible' ). lo_buf->add( ' this.updateRow(row, this.STATUS.add);' ). lo_buf->add( ' } else {' ). lo_buf->add( ' this.updateRow(row, this.STATUS.reset);' ). lo_buf->add( ' }' ). lo_buf->add( ' });' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '// Table iteration helper' ). lo_buf->add( 'StageHelper.prototype.iterateStageTab = function(changeMode, cb /*, ...*/) {' ). lo_buf->add( ' var restArgs = Array.prototype.slice.call(arguments, 2);' ). lo_buf->add( ' var table = this.dom.stageTab;' ). lo_buf->add( ' var retTotal = 0;' ). lo_buf->add( '' ). lo_buf->add( ' if (changeMode) {' ). lo_buf->add( ' var scrollOffset = window.pageYOffset;' ). lo_buf->add( '' ). lo_buf->add( ' this.dom.stageTab.style.display = "none";' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' for (var b = 0, bN = table.tBodies.length; b < bN; b++) {' ). lo_buf->add( ' var tbody = table.tBodies[b];' ). lo_buf->add( ' for (var r = 0, rN = tbody.rows.length; r < rN; r++) {' ). lo_buf->add( ' var args = [tbody.rows[r]].concat(restArgs);' ). lo_buf->add( ' var retVal = cb.apply(this, args); // callback' ). lo_buf->add( '' ). lo_buf->add( ' if (typeof retVal === "number") retTotal += retVal;' ). lo_buf->add( ' }' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' if (changeMode) {' ). lo_buf->add( ' this.dom.stageTab.style.display = "";' ). lo_buf->add( ' window.scrollTo(0, scrollOffset);' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' return retTotal;' ). lo_buf->add( '};' ). lo_buf->add( '' ). lo_buf->add( '/**********************************************************' ). lo_buf->add( ' * Check List Wrapper' ). lo_buf->add( ' **********************************************************/' ). lo_buf->add( '' ). lo_buf->add( 'function CheckListWrapper(id, cbAction, cbActionOnlyMyChanges) {' ). lo_buf->add( ' this.id = document.getElementById(id);' ). lo_buf->add( ' this.cbAction = cbAction;' ). lo_buf->add( ' this.cbActionOnlyMyChanges = cbActionOnlyMyChanges;' ). lo_buf->add( ' this.id.onclick = this.onClick.bind(this);' ). lo_buf->add( '}' ). lo_buf->add( '' ). lo_buf->add( 'CheckListWrapper.prototype.onClick = function(e) { // eslint-disable-line no-unused-vars' ). lo_buf->add( ' // Get nodes' ). lo_buf->add( ' var target = event.target || event.srcElement;' ). lo_buf->add( ' if (!target) return;' ). lo_buf->add( ' if (target.tagName !== "A") { target = target.parentNode } // icon clicked' ). lo_buf->add( ' if (target.tagName !== "A") return;' ). lo_buf->add( ' if (target.parentNode.tagName !== "LI") return;' ). lo_buf->add( '' ). lo_buf->add( ' var nodeA = target;' ). lo_buf->add( ' var nodeLi = target.parentNode;' ). lo_buf->add( ' var nodeIcon = target.children[0];' ). lo_buf->add( ' if (!nodeIcon.classList.contains("icon")) return;' ). lo_buf->add( '' ). lo_buf->add( ' // Node updates' ). lo_buf->add( ' var option = nodeA.innerText;' ). lo_buf->add( ' var oldState = nodeLi.getAttribute("data-check");' ). lo_buf->add( ' if (oldState === null) return; // no data-check attribute - non-checkbox' ). lo_buf->add( ' var newState = oldState === "X" ? false : true;' ). lo_buf->add( '' ). lo_buf->add( ' if (newState) {' ). lo_buf->add( ' nodeIcon.classList.remove("grey");' ). lo_buf->add( ' nodeIcon.classList.add("blue");' ). lo_buf->add( ' nodeLi.setAttribute("data-check", "X");' ). lo_buf->add( ' } else {' ). lo_buf->add( ' nodeIcon.classList.remove("blue");' ). lo_buf->add( ' nodeIcon.classList.add("grey");' ). lo_buf->add( ' nodeLi.setAttribute("data-check", "");' ). lo_buf->add( ' }' ). lo_buf->add( '' ). lo_buf->add( ' // Action callback, special han