diff --git a/src/ui/zcl_abapgit_gui_page_debuginfo.clas.abap b/src/ui/zcl_abapgit_gui_page_debuginfo.clas.abap index caf5b1da4..53ba583ec 100644 --- a/src/ui/zcl_abapgit_gui_page_debuginfo.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_debuginfo.clas.abap @@ -14,6 +14,9 @@ CLASS zcl_abapgit_gui_page_debuginfo DEFINITION 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(ro_html) TYPE REF TO zcl_abapgit_html RAISING zcx_abapgit_exception. @@ -38,6 +41,19 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DEBUGINFO IMPLEMENTATION. ENDMETHOD. + METHOD get_jump_class. + + DATA: lv_encode TYPE string. + + lv_encode = zcl_abapgit_html_action_utils=>jump_encode( iv_obj_type = 'CLAS' + iv_obj_name = |{ iv_class }| ). + + rv_html = zcl_abapgit_html=>a( iv_txt = |{ iv_class }| + iv_act = |{ zif_abapgit_definitions=>c_action-jump }?{ lv_encode }| ). + + ENDMETHOD. + + METHOD render_content. CREATE OBJECT ro_html. @@ -71,12 +87,16 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DEBUGINFO IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( |

abapGit version: { zif_abapgit_version=>gc_abap_version }

| ). - ro_html->add( |

XML version: { zif_abapgit_version=>gc_xml_version }

| ). - ro_html->add( |

GUI version: { lv_gui_version }

| ). - ro_html->add( |

APACK version: { zcl_abapgit_apack_migration=>c_apack_interface_version }

| ). - ro_html->add( |

LCL_TIME: { zcl_abapgit_time=>get_unix( ) }

| ). - ro_html->add( |

SY time: { sy-datum } { sy-uzeit } { sy-tzone }

| ). + ro_html->add( || ). + ro_html->add( || ). + ro_html->add( || ). + ro_html->add( || ). + ro_html->add( || ). + ro_html->add( || ). + ro_html->add( || ). + ro_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 }
| ). + ro_html->add( |
| ). ENDMETHOD. @@ -94,22 +114,97 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DEBUGINFO IMPLEMENTATION. METHOD render_supported_object_types. - DATA: lv_list TYPE string, - lt_types TYPE zcl_abapgit_objects=>ty_types_tt, - lv_type LIKE LINE OF lt_types. + DATA: lv_list TYPE string, + 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, + lv_language TYPE spras, + 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( ). + rv_html = |

Supported objects: { lv_list }

|. + + rv_html = rv_html && ||. + rv_html = rv_html && ||. + rv_html = rv_html && ||. + rv_html = rv_html && ||. + LOOP AT lt_types INTO lv_type. - IF lv_list IS INITIAL. - lv_list = 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. - lv_list = lv_list && `, ` && lv_type. + 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 = |

Supported objects: { lv_list }

|. + 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.