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(ro_html) TYPE REF TO zcl_abapgit_html
RAISING zcx_abapgit_exception.
METHODS render_supported_object_types
RETURNING VALUE(rv_html) TYPE string.
METHODS render_scripts
RETURNING
VALUE(ro_html) TYPE REF TO zcl_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.
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 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 ro_html.
ro_html->add( || ).
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( |
| ).
lv_devclass = zcl_abapgit_services_abapgit=>is_installed( ).
IF NOT lv_devclass IS INITIAL.
ro_html->add( 'abapGit installed in package ' ).
ro_html->add( lv_devclass ).
ELSE.
ro_html->add_a( iv_txt = 'install abapGit repo'
iv_act = zif_abapgit_definitions=>c_action-abapgit_install ).
ro_html->add( ' - To keep abapGit up-to-date (or also to contribute) you need to' ).
ro_html->add( 'install it as a repository.' ).
ENDIF.
ro_html->add( |
| ).
ENDMETHOD.
METHOD render_scripts.
CREATE OBJECT ro_html.
ro_html->zif_abapgit_html~set_title( cl_abap_typedescr=>describe_by_object_ref( me )->get_relative_name( ) ).
ro_html->add( 'debugOutput("Browser: | " + navigator.userAgent + ' &&
'" |
Frontend time: | " + new Date() + " |
", "debug_info");' ).
ENDMETHOD.
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,
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 && |Object | Description | Class | Version | DDIC | |.
rv_html = rv_html && |Delete TADIR | Steps | |.
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 && |{ lv_type } | |.
READ TABLE lt_obj ASSIGNING WITH KEY pgmid = 'R3TR' object = lv_type.
IF sy-subrc = 0.
rv_html = rv_html && |{ -text } | |.
ELSE.
rv_html = rv_html && |>No description | |.
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 && |{ get_jump_class( lv_class ) } | |.
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 && |{ lv_class } - error instantiating class | |.
CONTINUE.
ENDTRY.
rv_html = rv_html && |{ get_jump_class( lv_class ) } (Plug-in) | |.
ENDTRY.
ls_metadata = li_object->get_metadata( ).
rv_html = rv_html && |{ ls_metadata-version } | |.
rv_html = rv_html && |{ ls_metadata-ddic } | |.
rv_html = rv_html && |{ ls_metadata-delete_tadir } | |.
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 && |{ lv_list } | |.
rv_html = rv_html && |
|.
ENDLOOP.
rv_html = rv_html && |
|.
rv_html = rv_html && |
|.
ENDMETHOD.
ENDCLASS.