mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 20:16:24 +08:00
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:
parent
4443999ff1
commit
2f2816e238
|
@ -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.
|
||||
|
|
|
@ -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( ) ).
|
||||
|
|
Loading…
Reference in New Issue
Block a user