From 12b93deb1e8c01c83224965bab9667e0dc022c3b Mon Sep 17 00:00:00 2001
From: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Date: Sun, 6 Apr 2025 10:06:16 +0200
Subject: [PATCH 1/2] Debug info: Fix exit list in standalone (#7188)
---
.../zcl_abapgit_gui_page_debuginfo.clas.abap | 38 ++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
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 b320ba6a1..e230458f3 100644
--- a/src/ui/pages/zcl_abapgit_gui_page_debuginfo.clas.abap
+++ b/src/ui/pages/zcl_abapgit_gui_page_debuginfo.clas.abap
@@ -62,6 +62,10 @@ CLASS zcl_abapgit_gui_page_debuginfo DEFINITION
!iv_obj_name TYPE csequence
RETURNING
VALUE(rv_html) TYPE string .
+ METHODS resolve_exit_include
+ CHANGING
+ !cv_clsname TYPE seoclsname
+ !ct_source TYPE string_table.
ENDCLASS.
@@ -187,10 +191,16 @@ CLASS zcl_abapgit_gui_page_debuginfo IMPLEMENTATION.
" Standalone version
lt_source = zcl_abapgit_factory=>get_sap_report( )->read_report( c_exit_standalone ).
IF sy-subrc = 0.
+ resolve_exit_include(
+ CHANGING
+ cv_clsname = ls_class_key-clsname
+ ct_source = lt_source ).
ri_html->add( |
User exits are active (include { get_jump_object(
iv_obj_type = 'PROG'
iv_obj_name = c_exit_standalone ) } found)
| ).
- ri_html->add( render_exit_info_methods( lt_source ) ).
+ ri_html->add( render_exit_info_methods(
+ it_source = lt_source
+ iv_clsname = to_upper( ls_class_key-clsname ) ) ).
ELSE.
ri_html->add( |No user exits implemented (include { c_exit_standalone } not found)
| ).
ENDIF.
@@ -410,6 +420,32 @@ CLASS zcl_abapgit_gui_page_debuginfo IMPLEMENTATION.
ENDMETHOD.
+ METHOD resolve_exit_include.
+
+ DATA lv_include TYPE progname.
+
+ cv_clsname = c_exit_class.
+
+ DO.
+ FIND REGEX 'CLASS\s+(.*)\s+DEFINITION' IN TABLE ct_source SUBMATCHES cv_clsname IGNORING CASE.
+ IF sy-subrc = 0.
+ RETURN.
+ ENDIF.
+ FIND REGEX 'INCLUDE\s+(.*)\s*\.' IN TABLE ct_source SUBMATCHES lv_include IGNORING CASE.
+ IF sy-subrc = 0.
+ TRY.
+ ct_source = zcl_abapgit_factory=>get_sap_report( )->read_report( lv_include ).
+ CATCH zcx_abapgit_exception.
+ RETURN. " rely on original include
+ ENDTRY.
+ ELSE.
+ RETURN.
+ ENDIF.
+ ENDDO.
+
+ ENDMETHOD.
+
+
METHOD zif_abapgit_gui_event_handler~on_event.
DATA:
From 51d115a1c13a0f9edd6abf2e79bdb947c23832f1 Mon Sep 17 00:00:00 2001
From: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Date: Sun, 6 Apr 2025 10:19:21 +0200
Subject: [PATCH 2/2] Add style option for HTML rendering (#7190)
---
src/ui/core/zcl_abapgit_html.clas.abap | 97 ++++++++++++++++----------
src/ui/core/zif_abapgit_html.intf.abap | 10 ++-
2 files changed, 68 insertions(+), 39 deletions(-)
diff --git a/src/ui/core/zcl_abapgit_html.clas.abap b/src/ui/core/zcl_abapgit_html.clas.abap
index f0936f9d6..4dddc74b5 100644
--- a/src/ui/core/zcl_abapgit_html.clas.abap
+++ b/src/ui/core/zcl_abapgit_html.clas.abap
@@ -1,14 +1,15 @@
CLASS zcl_abapgit_html DEFINITION
PUBLIC
- CREATE PUBLIC .
+ CREATE PUBLIC.
PUBLIC SECTION.
- INTERFACES zif_abapgit_html .
+ INTERFACES zif_abapgit_html.
CONSTANTS c_indent_size TYPE i VALUE 2 ##NO_TEXT.
- CLASS-METHODS class_constructor .
+ CLASS-METHODS class_constructor.
+
CLASS-METHODS create
IMPORTING
!iv_initial_chunk TYPE any OPTIONAL
@@ -22,21 +23,25 @@ CLASS zcl_abapgit_html DEFINITION
!iv_class TYPE string OPTIONAL
!iv_onclick TYPE string OPTIONAL
RETURNING
- VALUE(rv_str) TYPE string .
+ 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 .
+ 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 .
+ 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.
@@ -51,7 +56,8 @@ CLASS zcl_abapgit_html DEFINITION
within_pre TYPE abap_bool,
indent TYPE i,
indent_str TYPE string,
- END OF ty_indent_context .
+ END OF ty_indent_context.
+
TYPES:
BEGIN OF ty_study_result,
style_open TYPE abap_bool,
@@ -67,23 +73,25 @@ CLASS zcl_abapgit_html DEFINITION
openings TYPE i,
closings TYPE i,
singles TYPE i,
- END OF ty_study_result .
+ 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 .
+ CLASS-DATA go_single_tags_re TYPE REF TO cl_abap_regex.
+ CLASS-DATA gv_spaces TYPE string.
+ CLASS-DATA gv_debug_mode TYPE abap_bool.
+ DATA mt_buffer TYPE string_table.
METHODS indent_line
CHANGING
!cs_context TYPE ty_indent_context
- !cv_line TYPE string .
+ !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 .
+ VALUE(rs_result) TYPE ty_study_result.
+
ENDCLASS.
@@ -495,15 +503,19 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
METHOD zif_abapgit_html~div.
+
zif_abapgit_html~wrap(
- iv_tag = 'div'
- iv_content = iv_content
- ii_content = ii_content
+ iv_tag = 'div'
+ iv_content = iv_content
+ ii_content = ii_content
is_data_attr = is_data_attr
it_data_attrs = it_data_attrs
- iv_id = iv_id
- iv_class = iv_class ).
+ iv_id = iv_id
+ iv_style = iv_style
+ iv_class = iv_class ).
+
ri_self = me.
+
ENDMETHOD.
@@ -554,32 +566,40 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
METHOD zif_abapgit_html~td.
+
zif_abapgit_html~wrap(
iv_format_single_line = iv_format_single_line
- iv_tag = 'td'
- iv_content = iv_content
- ii_content = ii_content
- iv_id = iv_id
- iv_class = iv_class
- is_data_attr = is_data_attr
- it_data_attrs = it_data_attrs
- iv_hint = iv_hint ).
+ iv_tag = 'td'
+ iv_content = iv_content
+ ii_content = ii_content
+ iv_id = iv_id
+ iv_class = iv_class
+ iv_style = iv_style
+ is_data_attr = is_data_attr
+ it_data_attrs = it_data_attrs
+ iv_hint = iv_hint ).
+
ri_self = me.
+
ENDMETHOD.
METHOD zif_abapgit_html~th.
+
zif_abapgit_html~wrap(
iv_format_single_line = iv_format_single_line
- iv_tag = 'th'
- iv_content = iv_content
- ii_content = ii_content
- iv_id = iv_id
- iv_class = iv_class
- is_data_attr = is_data_attr
- it_data_attrs = it_data_attrs
- iv_hint = iv_hint ).
+ iv_tag = 'th'
+ iv_content = iv_content
+ ii_content = ii_content
+ iv_id = iv_id
+ iv_class = iv_class
+ iv_style = iv_style
+ is_data_attr = is_data_attr
+ it_data_attrs = it_data_attrs
+ iv_hint = iv_hint ).
+
ri_self = me.
+
ENDMETHOD.
@@ -590,6 +610,7 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
DATA ls_data_attr LIKE LINE OF it_data_attrs.
DATA: lv_class TYPE string,
+ lv_style TYPE string,
lv_id TYPE string,
lv_data_attr TYPE string,
lv_title TYPE string.
@@ -602,6 +623,10 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
lv_class = | class="{ iv_class }"|.
ENDIF.
+ IF iv_style IS NOT INITIAL.
+ lv_style = | style="{ iv_style }"|.
+ ENDIF.
+
IF iv_hint IS NOT INITIAL.
lv_title = | title="{ iv_hint }"|.
ENDIF.
@@ -614,7 +639,7 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
lv_data_attr = lv_data_attr && | data-{ ls_data_attr-name }="{ ls_data_attr-value }"|.
ENDLOOP.
- lv_open_tag = |<{ iv_tag }{ lv_id }{ lv_class }{ lv_data_attr }{ lv_title }>|.
+ lv_open_tag = |<{ iv_tag }{ lv_id }{ lv_class }{ lv_style }{ lv_data_attr }{ lv_title }>|.
lv_close_tag = |{ iv_tag }>|.
IF ii_content IS NOT BOUND AND iv_content IS INITIAL.
diff --git a/src/ui/core/zif_abapgit_html.intf.abap b/src/ui/core/zif_abapgit_html.intf.abap
index 4b15fe4da..9d1b14d2e 100644
--- a/src/ui/core/zif_abapgit_html.intf.abap
+++ b/src/ui/core/zif_abapgit_html.intf.abap
@@ -111,6 +111,7 @@ INTERFACE zif_abapgit_html PUBLIC.
!iv_id TYPE string OPTIONAL
!iv_class TYPE string OPTIONAL
!iv_hint TYPE string OPTIONAL
+ !iv_style 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
@@ -124,10 +125,11 @@ INTERFACE zif_abapgit_html PUBLIC.
!iv_id TYPE string OPTIONAL
!iv_class TYPE string OPTIONAL
!iv_hint TYPE string OPTIONAL
+ !iv_style 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
+ PREFERRED PARAMETER iv_content
RETURNING
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
@@ -138,10 +140,11 @@ INTERFACE zif_abapgit_html PUBLIC.
!iv_id TYPE string OPTIONAL
!iv_class TYPE string OPTIONAL
!iv_hint TYPE string OPTIONAL
+ !iv_style 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
+ PREFERRED PARAMETER iv_content
RETURNING
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
@@ -151,9 +154,10 @@ INTERFACE zif_abapgit_html PUBLIC.
!ii_content TYPE REF TO zif_abapgit_html OPTIONAL
!iv_id TYPE string OPTIONAL
!iv_class TYPE string OPTIONAL
+ !iv_style TYPE string OPTIONAL
!is_data_attr TYPE ty_data_attr OPTIONAL
!it_data_attrs TYPE ty_data_attrs OPTIONAL
- PREFERRED PARAMETER iv_content
+ PREFERRED PARAMETER iv_content
RETURNING
VALUE(ri_self) TYPE REF TO zif_abapgit_html.