improve POPUP_TO_SELECT (#825)

* improve POPUP_TO_SELECT

* add-search-app (#824)

* add-search-app

* Update src/02/02/z2ui5_cl_app_search_apps.clas.abap

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* update abaplint fixes

* update startup app

* update

* update

* update

* update

* update

---------

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* Popup json download (#828)

* popup json download

* lint fixes

* update

* update startup app

* lint fixes

* steampunk compatibility

* Steampunkify

* fixup

* fixup

* Update src/01/01/z2ui5_cl_util_func.clas.abap

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* fixup

---------

Co-authored-by: Christian Günter <christian.guenter@emineo.ch>
Co-authored-by: oblomov <102328295+oblomov-dev@users.noreply.github.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
This commit is contained in:
Christian Günter 2024-01-31 17:16:42 +01:00 committed by GitHub
parent 4443999ff1
commit 2f2816e238
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 110 additions and 1 deletions

View File

@ -30,6 +30,14 @@ CLASS z2ui5_cl_util_func DEFINITION
table TYPE string,
END OF ty_s_sql_result.
TYPES:
BEGIN OF ty_data_element_texts,
header TYPE string,
short TYPE string,
medium TYPE string,
long TYPE string,
END OF ty_data_element_texts.
CLASS-METHODS itab_get_itab_by_csv
IMPORTING
val TYPE string
@ -394,6 +402,12 @@ CLASS z2ui5_cl_util_func DEFINITION
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS rtti_get_data_element_texts
IMPORTING
i_data_element_name TYPE string
RETURNING
VALUE(result) TYPE ty_data_element_texts.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
@ -1680,4 +1694,89 @@ CLASS Z2UI5_CL_UTIL_FUNC IMPLEMENTATION.
RAISE EXCEPTION TYPE z2ui5_cx_util_error EXPORTING val = v.
ENDMETHOD.
METHOD rtti_get_data_element_texts.
DATA:
data_element_name TYPE c LENGTH 30,
ddic_ref TYPE REF TO data,
data_element TYPE REF TO object,
content TYPE REF TO object,
BEGIN OF ddic,
reptext TYPE string,
scrtext_s TYPE string,
scrtext_m TYPE string,
scrtext_l TYPE string,
END OF ddic,
exists TYPE abap_bool.
data_element_name = i_data_element_name.
TRY.
cl_abap_typedescr=>describe_by_name( 'T100' ).
DATA(struct_desrc) = CAST cl_abap_structdescr( cl_abap_structdescr=>describe_by_name( 'DFIES' ) ).
CREATE DATA ddic_ref TYPE HANDLE struct_desrc.
ASSIGN ddic_ref->* TO FIELD-SYMBOL(<ddic>).
ASSERT sy-subrc = 0.
DATA(data_descr) = CAST cl_abap_datadescr( cl_abap_elemdescr=>describe_by_name( data_element_name ) ).
CALL METHOD data_descr->('GET_DDIC_FIELD')
RECEIVING
p_flddescr = <ddic>
EXCEPTIONS
not_found = 1
no_ddic_type = 2
OTHERS = 3.
IF sy-subrc <> 0.
RETURN.
ENDIF.
ddic = CORRESPONDING #( <ddic> ).
result-header = ddic-reptext.
result-short = ddic-scrtext_s.
result-medium = ddic-scrtext_m.
result-long = ddic-scrtext_l.
CATCH cx_root.
CALL METHOD ('XCO_CP_ABAP_DICTIONARY')=>('DATA_ELEMENT')
EXPORTING
iv_name = data_element_name
RECEIVING
ro_data_element = data_element.
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~EXISTS')
RECEIVING
rv_exists = exists.
IF exists = abap_false.
RETURN.
ENDIF.
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~CONTENT')
RECEIVING
ro_content = content.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_HEADING_FIELD_LABEL')
RECEIVING
rs_heading_field_label = result-header.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_SHORT_FIELD_LABEL')
RECEIVING
rs_short_field_label = result-short.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_MEDIUM_FIELD_LABEL')
RECEIVING
rs_medium_field_label = result-medium.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_LONG_FIELD_LABEL')
RECEIVING
rs_long_field_label = result-long.
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -9,6 +9,7 @@ CLASS z2ui5_cl_popup_to_select DEFINITION
CLASS-METHODS factory
IMPORTING
i_tab TYPE STANDARD TABLE
i_title TYPE clike OPTIONAL
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_to_select.
@ -31,6 +32,7 @@ CLASS z2ui5_cl_popup_to_select DEFINITION
DATA check_initialized TYPE abap_bool.
DATA check_table_line TYPE abap_bool.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
METHODS on_event.
METHODS display.
METHODS set_output_table.
@ -47,6 +49,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->title = i_title.
CREATE DATA r_result->mr_tab LIKE i_tab.
CREATE DATA r_result->ms_result-row LIKE LINE OF i_tab.
FIELD-SYMBOLS <tab> TYPE any.
@ -67,6 +70,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
search = client->_event( val = 'SEARCH' t_arg = VALUE #( ( `${$parameters>/value}` ) ( `${$parameters>/clearButtonPressed}` ) ) )
confirm = client->_event( val = 'CONFIRM' t_arg = VALUE #( ( `${$parameters>/selectedContexts[0]/sPath}` ) ) )
growing = abap_true
title = title
).
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( <tab_out> ).
@ -81,7 +85,13 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
DATA(columns) = tab->columns( ).
LOOP AT lt_comp INTO ls_comp.
columns->column( width = '8rem' )->header( ns = `` )->text( text = ls_comp-name ).
DATA(text) = COND #(
LET data_element_name = substring_after( val = CAST cl_abap_elemdescr( ls_comp-type )->absolute_name sub = '\TYPE=' )
medium_label = z2ui5_cl_util_func=>rtti_get_data_element_texts( data_element_name )-medium IN
WHEN medium_label IS NOT INITIAL
THEN medium_label
ELSE ls_comp-name ).
columns->column( width = '8rem' )->header( ns = `` )->text( text = text ).
ENDLOOP.
client->popup_display( popup->stringify( ) ).