CLASS zcl_abapgit_gui_page_debuginfo DEFINITION PUBLIC INHERITING FROM zcl_abapgit_gui_page FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS constructor RAISING zcx_abapgit_exception. PROTECTED SECTION. METHODS: render_content REDEFINITION. PRIVATE SECTION. METHODS get_jump_class IMPORTING !iv_class TYPE seoclsname RETURNING VALUE(rv_html) TYPE string . METHODS render_debug_info 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 . ENDCLASS. CLASS ZCL_ABAPGIT_GUI_PAGE_DEBUGINFO IMPLEMENTATION. METHOD constructor. super->constructor( ). ms_control-page_title = 'Debug Info'. ENDMETHOD. METHOD get_jump_class. DATA lv_encode TYPE string. DATA li_html TYPE REF TO zif_abapgit_html. CREATE OBJECT li_html TYPE zcl_abapgit_html. lv_encode = zcl_abapgit_html_action_utils=>jump_encode( iv_obj_type = 'CLAS' iv_obj_name = |{ iv_class }| ). rv_html = li_html->a( iv_txt = |{ iv_class }| iv_act = |{ zif_abapgit_definitions=>c_action-jump }?{ lv_encode }| ). ENDMETHOD. METHOD render_content. CREATE OBJECT ri_html TYPE zcl_abapgit_html. ri_html->add( '
' ). ri_html->add( render_debug_info( ) ). ri_html->add( '
' ). ri_html->add( '
' ). ri_html->add( render_supported_object_types( ) ). ri_html->add( '
' ). register_deferred_script( render_scripts( ) ). ENDMETHOD. METHOD render_debug_info. DATA: lt_ver_tab TYPE filetable, lv_rc TYPE i, lv_gui_version TYPE string, ls_version LIKE LINE OF lt_ver_tab, lv_devclass TYPE devclass. cl_gui_frontend_services=>get_gui_version( CHANGING version_table = lt_ver_tab rc = lv_rc EXCEPTIONS OTHERS = 1 ). READ TABLE lt_ver_tab INTO ls_version INDEX 1. " gui release lv_gui_version = ls_version-filename. READ TABLE lt_ver_tab INTO ls_version INDEX 2. " gui sp lv_gui_version = |{ lv_gui_version }.{ ls_version-filename }|. READ TABLE lt_ver_tab INTO ls_version INDEX 3. " gui patch lv_gui_version = |{ lv_gui_version }.{ ls_version-filename }|. CREATE OBJECT ri_html TYPE zcl_abapgit_html. ri_html->add( || ). ri_html->add( || ). ri_html->add( || ). ri_html->add( || ). ri_html->add( || ). ri_html->add( || ). ri_html->add( || ). ri_html->add( |
abapGit version:{ zif_abapgit_version=>gc_abap_version }
XML version: { zif_abapgit_version=>gc_xml_version }
GUI version: { lv_gui_version }
APACK version: { zcl_abapgit_apack_migration=>c_apack_interface_version }
LCL_TIME: { zcl_abapgit_time=>get_unix( ) }
SY time: { sy-datum } { sy-uzeit } { sy-tzone }
| ). ri_html->add( |
| ). lv_devclass = zcl_abapgit_services_abapgit=>is_installed( ). IF NOT lv_devclass IS INITIAL. ri_html->add( 'abapGit installed in package ' ). ri_html->add( lv_devclass ). ELSE. ri_html->add( ' - To keep abapGit up-to-date (or also to contribute) you need to' ). ri_html->add( 'install it as a repository.' ). ENDIF. ri_html->add( |

| ). ENDMETHOD. METHOD render_scripts. CREATE OBJECT ri_html TYPE zcl_abapgit_html. ri_html->set_title( cl_abap_typedescr=>describe_by_object_ref( me )->get_relative_name( ) ). ri_html->add( 'debugOutput("
Browser:" + navigator.userAgent + ' && '"
Frontend time:" + new Date() + "
", "debug_info");' ). ENDMETHOD. METHOD render_supported_object_types. DATA: lv_list TYPE string, li_html TYPE REF TO zif_abapgit_html, lt_types TYPE zcl_abapgit_objects=>ty_types_tt, lv_type LIKE LINE OF lt_types, lt_obj TYPE STANDARD TABLE OF ko100 WITH DEFAULT KEY, lv_class TYPE seoclsname, li_object TYPE REF TO zif_abapgit_object, ls_item TYPE zif_abapgit_definitions=>ty_item, ls_metadata TYPE zif_abapgit_definitions=>ty_metadata, lv_step TYPE zif_abapgit_definitions=>ty_deserialization_step, lt_steps TYPE zif_abapgit_definitions=>ty_deserialization_step_tt. FIELD-SYMBOLS: TYPE ko100. CALL FUNCTION 'TR_OBJECT_TABLE' TABLES wt_object_text = lt_obj. lt_types = zcl_abapgit_objects=>supported_list( ). CREATE OBJECT li_html TYPE zcl_abapgit_html. rv_html = li_html->a( iv_txt = 'Complete list of object types supported by abapGit' iv_act = 'https://docs.abapgit.org/ref-supported.html' iv_typ = zif_abapgit_html=>c_action_type-url ). rv_html = rv_html && |

Supported object types in this system:

|. rv_html = rv_html && ||. rv_html = rv_html && ||. rv_html = rv_html && ||. rv_html = rv_html && ||. LOOP AT lt_types INTO lv_type. lv_class = 'ZCL_ABAPGIT_OBJECT_' && lv_type. rv_html = rv_html && ||. rv_html = rv_html && ||. READ TABLE lt_obj ASSIGNING WITH KEY pgmid = 'R3TR' object = lv_type. IF sy-subrc = 0. rv_html = rv_html && ||. ELSE. rv_html = rv_html && ||. ENDIF. TRY. ls_item-obj_type = lv_type. ls_item-obj_name = 'TEST'. CREATE OBJECT li_object TYPE (lv_class) EXPORTING is_item = ls_item iv_language = sy-langu. rv_html = rv_html && ||. CATCH cx_sy_create_object_error. TRY. " 2nd step, try looking for plugins CREATE OBJECT li_object TYPE zcl_abapgit_objects_bridge EXPORTING is_item = ls_item. CATCH cx_sy_create_object_error. rv_html = rv_html && ||. CONTINUE. ENDTRY. rv_html = rv_html && ||. ENDTRY. ls_metadata = li_object->get_metadata( ). rv_html = rv_html && ||. rv_html = rv_html && ||. rv_html = rv_html && ||. lt_steps = li_object->get_deserialize_steps( ). CLEAR lv_list. LOOP AT lt_steps INTO lv_step. IF lv_list IS INITIAL. lv_list = lv_step. ELSE. lv_list = lv_list && `, ` && lv_step. ENDIF. ENDLOOP. rv_html = rv_html && ||. rv_html = rv_html && ||. ENDLOOP. rv_html = rv_html && |
ObjectDescriptionClassVersionDDICDelete TADIRSteps
{ lv_type }{ -text }>No description{ get_jump_class( lv_class ) }{ lv_class } - error instantiating class{ get_jump_class( lv_class ) } (Plug-in){ ls_metadata-version }{ ls_metadata-ddic }{ ls_metadata-delete_tadir }{ lv_list }
|. rv_html = rv_html && |
|. ENDMETHOD. ENDCLASS.