Improve class F4 dialog - add class description (#1000)

* improve class F4 dialog

* steampunkify

* fixup

* fixup

* fixup
This commit is contained in:
Christian Günter 2024-03-08 22:26:13 +01:00 committed by GitHub
parent 7ba1e38057
commit b7ffcb5dcc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 80 additions and 7 deletions

View File

@ -12,6 +12,14 @@ CLASS z2ui5_cl_util_stmpncfctn DEFINITION
long TYPE string,
END OF ty_data_element_texts .
TYPES:
BEGIN OF ts_class,
classname TYPE c LENGTH 30,
description TYPE string,
END OF ts_class,
tt_classes TYPE STANDARD TABLE OF ts_class
WITH NON-UNIQUE DEFAULT KEY.
CLASS-METHODS method_get_source
IMPORTING
!iv_classname TYPE clike
@ -61,15 +69,20 @@ CLASS z2ui5_cl_util_stmpncfctn DEFINITION
IMPORTING
!val TYPE clike
RETURNING
VALUE(result) TYPE string_table.
VALUE(result) TYPE tt_classes.
PROTECTED SECTION.
PRIVATE SECTION.
CLASS-METHODS get_class_description_xco
IMPORTING
i_classname TYPE ts_class-classname
RETURNING
VALUE(result) TYPE string.
ENDCLASS.
CLASS Z2UI5_CL_UTIL_STMPNCFCTN IMPLEMENTATION.
CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
METHOD conv_decode_x_base64.
@ -279,6 +292,10 @@ CLASS Z2UI5_CL_UTIL_STMPNCFCTN IMPLEMENTATION.
TYPES intkey TYPE c LENGTH 30.
TYPES END OF ty_s_key.
DATA ls_key TYPE ty_s_key.
DATA BEGIN OF ls_clskey.
DATA clsname TYPE c LENGTH 30.
DATA END OF ls_clskey.
DATA class TYPE REF TO data.
TRY.
@ -304,7 +321,10 @@ CLASS Z2UI5_CL_UTIL_STMPNCFCTN IMPLEMENTATION.
RECEIVING
rt_names = lt_implementation_names.
result = lt_implementation_names.
result = VALUE #(
FOR implementation_name IN lt_implementation_names
( classname = implementation_name
description = get_class_description_xco( CONV #( implementation_name ) ) ) ).
CATCH cx_sy_dyn_call_illegal_class.
@ -319,9 +339,37 @@ CLASS Z2UI5_CL_UTIL_STMPNCFCTN IMPLEMENTATION.
EXCEPTIONS
not_existing = 1
OTHERS = 2.
IF sy-subrc <> 0.
RETURN.
ENDIF.
DATA(type) = 'SEOC_CLASS_R'.
CREATE DATA class TYPE (type).
ASSIGN class->* TO FIELD-SYMBOL(<class>).
LOOP AT lt_impl REFERENCE INTO DATA(lr_impl).
INSERT CONV #( lr_impl->clsname ) INTO TABLE result.
CLEAR <class>.
ls_clskey-clsname = lr_impl->clsname.
lv_fm = `SEO_CLASS_READ`.
CALL FUNCTION lv_fm
EXPORTING
clskey = ls_clskey
IMPORTING
class = <class>.
ASSIGN
COMPONENT 'DESCRIPT'
OF STRUCTURE <class>
TO FIELD-SYMBOL(<description>).
ASSERT sy-subrc = 0.
INSERT
VALUE #( classname = lr_impl->clsname
description = <description> )
INTO TABLE result.
ENDLOOP.
ENDTRY.
@ -501,4 +549,29 @@ CLASS Z2UI5_CL_UTIL_STMPNCFCTN IMPLEMENTATION.
ENDTRY.
ENDMETHOD.
METHOD get_class_description_xco.
DATA:
obj TYPE REF TO object,
content TYPE REF TO object.
CALL METHOD ('XCO_CP_ABAP')=>('CLASS')
EXPORTING
iv_name = i_classname
RECEIVING
ro_class = obj.
CALL METHOD obj->('IF_XCO_AO_CLASS~CONTENT')
RECEIVING
ro_content = content.
CALL METHOD content->('IF_XCO_CLAS_CONTENT~GET_SHORT_DESCRIPTION')
RECEIVING
rv_short_description = result.
ENDMETHOD.
ENDCLASS.

View File

@ -344,7 +344,7 @@ CLASS z2ui5_cl_core_app_search IMPLEMENTATION.
ENDTRY.
mt_apps = VALUE #( FOR row IN z2ui5_cl_util=>rtti_get_classes_impl_intf( `Z2UI5_IF_APP` )
( name = row ) ).
( name = row-classname ) ).
search( ).
view_display( client ).
RETURN.

View File

@ -32,7 +32,7 @@ CLASS z2ui5_cl_core_app_startup DEFINITION
METHODS on_event_check.
PROTECTED SECTION.
DATA mt_classes TYPE string_table.
DATA mt_classes TYPE z2ui5_cl_util_stmpncfctn=>tt_classes.
PRIVATE SECTION.
ENDCLASS.
@ -247,7 +247,7 @@ CLASS z2ui5_cl_core_app_startup IMPLEMENTATION.
IF ls_result-check_confirmed = abap_true.
ASSIGN ls_result-row->* TO FIELD-SYMBOL(<class>).
ms_home-classname = <class>.
ms_home = CORRESPONDING #( BASE ( ms_home ) <class> ).
view_display_start( ).
RETURN.
ENDIF.