From 45edfa7b0a7aa3c1b255a17d81c30ea9a7099091 Mon Sep 17 00:00:00 2001
From: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Date: Wed, 20 Dec 2023 13:56:02 -0500
Subject: [PATCH] Debug info: Show exits coded in exit super class (#6708)
---
.../zcl_abapgit_gui_page_debuginfo.clas.abap | 32 ++++++++++++++++---
1 file changed, 27 insertions(+), 5 deletions(-)
diff --git a/src/ui/pages/zcl_abapgit_gui_page_debuginfo.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_debuginfo.clas.abap
index 1a55adbc5..9fc930243 100644
--- a/src/ui/pages/zcl_abapgit_gui_page_debuginfo.clas.abap
+++ b/src/ui/pages/zcl_abapgit_gui_page_debuginfo.clas.abap
@@ -43,6 +43,7 @@ CLASS zcl_abapgit_gui_page_debuginfo DEFINITION
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
@@ -176,6 +177,7 @@ CLASS zcl_abapgit_gui_page_debuginfo IMPLEMENTATION.
DATA lt_source TYPE string_table.
DATA ls_class_key TYPE seoclskey.
DATA lo_oo_serializer TYPE REF TO zcl_abapgit_oo_serializer.
+ DATA lo_class TYPE REF TO cl_oo_class.
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
@@ -196,11 +198,25 @@ CLASS zcl_abapgit_gui_page_debuginfo IMPLEMENTATION.
" Developer version
TRY.
ls_class_key-clsname = c_exit_class.
- CREATE OBJECT lo_oo_serializer.
- lt_source = lo_oo_serializer->serialize_abap_clif_source( ls_class_key ).
+ DO.
+ CREATE OBJECT lo_oo_serializer.
+ lt_source = lo_oo_serializer->serialize_abap_clif_source( ls_class_key ).
- ri_html->add( |
User exits are active (class { get_jump_object( c_exit_class ) } found)
| ).
- ri_html->add( render_exit_info_methods( lt_source ) ).
+ ri_html->add( '' ).
+ ri_html->add( |User exits are active (class { get_jump_object( ls_class_key-clsname ) } found)| ).
+ ri_html->add( '
' ).
+ ri_html->add( render_exit_info_methods(
+ it_source = lt_source
+ iv_clsname = ls_class_key-clsname ) ).
+
+ " Is there a super class of exit?
+ CREATE OBJECT lo_class EXPORTING clsname = ls_class_key-clsname.
+ ls_class_key-clsname = lo_class->get_superclass( ).
+ IF ls_class_key-clsname IS INITIAL.
+ EXIT.
+ ENDIF.
+ ri_html->add( '
' ).
+ ENDDO.
CATCH cx_root.
ri_html->add( |No user exits implemented (class { c_exit_class } not found)
| ).
ENDTRY.
@@ -217,6 +233,7 @@ CLASS zcl_abapgit_gui_page_debuginfo IMPLEMENTATION.
lt_methods TYPE cl_oo_source_scanner_class=>type_method_implementations,
lv_method LIKE LINE OF lt_methods,
lt_source TYPE seop_source_string,
+ lv_count TYPE i,
lv_source TYPE string,
lv_rest TYPE string.
@@ -228,7 +245,7 @@ CLASS zcl_abapgit_gui_page_debuginfo IMPLEMENTATION.
TRY.
lo_scanner = cl_oo_source_scanner_class=>create_class_scanner(
- clif_name = c_exit_class
+ clif_name = iv_clsname
source = it_source ).
lo_scanner->scan( ).
@@ -250,8 +267,13 @@ CLASS zcl_abapgit_gui_page_debuginfo IMPLEMENTATION.
ri_html->add( 'Yes' ).
ENDIF.
ri_html->add( || ).
+ lv_count = lv_count + 1.
ENDLOOP.
+ IF lv_count = 0.
+ ri_html->add( |No exit methods implemented |
| ).
+ ENDIF.
+
CATCH cx_root INTO lx_exc.
ri_html->add( |{ lx_exc->get_text( ) } |
| ).
ENDTRY.