extended message handling and popups (#1552)

This commit is contained in:
oblomov-dev 2024-11-21 11:52:48 +01:00 committed by GitHub
parent 9670856f1c
commit 54aa1fc5d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 232 additions and 42 deletions

View File

@ -60,7 +60,7 @@ CLASS z2ui5_cl_util DEFINITION
END OF ty_s_sql. END OF ty_s_sql.
TYPES: TYPES:
BEGIN OF ty_S_msg, BEGIN OF ty_s_msg,
text TYPE string, text TYPE string,
id TYPE string, id TYPE string,
no TYPE string, no TYPE string,
@ -69,8 +69,9 @@ CLASS z2ui5_cl_util DEFINITION
v2 TYPE string, v2 TYPE string,
v3 TYPE string, v3 TYPE string,
v4 TYPE string, v4 TYPE string,
timestampl type timestampl,
END OF ty_s_msg, END OF ty_s_msg,
ty_T_msg TYPE STANDARD TABLE OF ty_S_msg WITH EMPTY KEY. ty_t_msg TYPE STANDARD TABLE OF ty_S_msg WITH EMPTY KEY.
CLASS-METHODS ui5_get_msg_type CLASS-METHODS ui5_get_msg_type
IMPORTING IMPORTING
@ -82,7 +83,7 @@ CLASS z2ui5_cl_util DEFINITION
IMPORTING IMPORTING
val TYPE any val TYPE any
RETURNING RETURNING
VALUE(result) TYPE ty_T_msg. VALUE(result) TYPE ty_t_msg.
CLASS-METHODS rtti_get_t_attri_by_include CLASS-METHODS rtti_get_t_attri_by_include
IMPORTING IMPORTING
@ -458,6 +459,13 @@ CLASS z2ui5_cl_util DEFINITION
VALUE(result) TYPE abap_bool. VALUE(result) TYPE abap_bool.
PROTECTED SECTION. PROTECTED SECTION.
CLASS-METHODS msg_map
IMPORTING
name TYPE clike
val TYPE data
is_msg TYPE z2ui5_cl_util=>ty_s_msg
RETURNING
VALUE(result) TYPE z2ui5_cl_util=>ty_s_msg.
PRIVATE SECTION. PRIVATE SECTION.
@ -1404,7 +1412,7 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
CASE lv_kind. CASE lv_kind.
WHEN cl_abap_datadescr=>typekind_table. WHEN cl_abap_datadescr=>typekind_table.
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE. FIELD-SYMBOLS <tab> TYPE ANY TABLE.
ASSIGN val TO <tab>. ASSIGN val TO <tab>.
LOOP AT <tab> ASSIGNING FIELD-SYMBOL(<row>). LOOP AT <tab> ASSIGNING FIELD-SYMBOL(<row>).
DATA(lt_tab) = msg_get( <row> ). DATA(lt_tab) = msg_get( <row> ).
@ -1423,24 +1431,15 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
LOOP AT lt_attri REFERENCE INTO DATA(ls_attri). LOOP AT lt_attri REFERENCE INTO DATA(ls_attri).
DATA(lv_name) = |VAL-{ ls_attri->name }|. DATA(lv_name) = |VAL-{ ls_attri->name }|.
ASSIGN (lv_name) TO FIELD-SYMBOL(<comp>). ASSIGN (lv_name) TO FIELD-SYMBOL(<comp>).
CASE ls_attri->name.
WHEN 'ID' OR 'MSGID'. IF ls_attri->name = 'ITEM'.
ls_result-id = <comp>. lt_tab = msg_get( <comp> ).
WHEN 'NO' OR 'NUMBER' OR 'MSGNO'. INSERT LINES OF lt_tab INTO TABLE result.
ls_result-no = <comp>. RETURN.
WHEN 'MESSAGE' OR 'TEXT'. ELSE.
ls_result-text = <comp>. ls_result = msg_map( name = ls_attri->name val = <comp> is_msg = ls_result ).
WHEN 'TYPE' OR 'MSGTY'. ENDIF.
ls_result-type = <comp>.
WHEN 'MESSAGE_V1' OR 'MSGV1' OR 'V1'.
ls_result-v1 = <comp>.
WHEN 'MESSAGE_V2' OR 'MSGV2' OR 'V2'.
ls_result-v2 = <comp>.
WHEN 'MESSAGE_V3' OR 'MSGV3' OR 'V3'.
ls_result-v3 = <comp>.
WHEN 'MESSAGE_V4' OR 'MSGV4' OR 'V4'.
ls_result-v4 = <comp>.
ENDCASE.
ENDLOOP. ENDLOOP.
IF ls_result-text IS INITIAL AND ls_result-id IS NOT INITIAL. IF ls_result-text IS INITIAL AND ls_result-id IS NOT INITIAL.
MESSAGE ID ls_result-id TYPE 'I' NUMBER ls_result-no MESSAGE ID ls_result-id TYPE 'I' NUMBER ls_result-no
@ -1458,28 +1457,55 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
WHERE visibility = 'U'. WHERE visibility = 'U'.
lv_name = |VAL->{ ls_attri_o->name }|. lv_name = |VAL->{ ls_attri_o->name }|.
ASSIGN (lv_name) TO <comp>. ASSIGN (lv_name) TO <comp>.
CASE ls_attri_o->name. ls_result = msg_map( name = ls_attri_o->name val = <comp> is_msg = ls_result ).
WHEN 'ID' OR 'MSGID'.
ls_result-id = <comp>.
WHEN 'NO' OR 'NUMBER' OR 'MSGNO'.
ls_result-no = <comp>.
WHEN 'MESSAGE'.
ls_result-text = <comp>.
WHEN 'TYPE' OR 'MSGTY'.
ls_result-type = <comp>.
WHEN 'MESSAGE_V1' OR 'MSGV1'.
ls_result-v1 = <comp>.
WHEN 'MESSAGE_V2' OR 'MSGV2'.
ls_result-v2 = <comp>.
WHEN 'MESSAGE_V3' OR 'MSGV3'.
ls_result-v3 = <comp>.
WHEN 'MESSAGE_V4' OR 'MSGV4'.
ls_result-v4 = <comp>.
ENDCASE.
ENDLOOP. ENDLOOP.
INSERT ls_result INTO TABLE result. INSERT ls_result INTO TABLE result.
CATCH cx_root. CATCH cx_root.
DATA obj TYPE REF TO object.
obj = val.
TRY.
DATA lr_tab TYPE REF TO data.
CREATE DATA lr_tab TYPE ('if_bali_log=>ty_item_table').
ASSIGN lr_tab->* TO FIELD-SYMBOL(<tab2>).
CALL METHOD obj->(`IF_BALI_LOG~GET_ALL_ITEMS`)
RECEIVING
item_table = <tab2>.
DATA(lt_tab2) = msg_get( <tab2> ).
INSERT LINES OF lt_tab2 INTO TABLE result.
CATCH cx_root.
TRY.
CREATE DATA lr_tab TYPE ('BAPIRETTAB').
ASSIGN lr_tab->* TO <tab2>.
CALL METHOD obj->(`ZIF_LOGGER~EXPORT_TO_TABLE`)
RECEIVING
rt_bapiret = <tab2>.
lt_tab2 = msg_get( <tab2> ).
INSERT LINES OF lt_tab2 INTO TABLE result.
CATCH cx_root INTO DATA(lx2).
lt_attri_o = z2ui5_cl_util=>rtti_get_t_attri_by_oref( val ).
LOOP AT lt_attri_o REFERENCE INTO ls_attri_o
WHERE visibility = 'U'.
lv_name = |OBJ->{ ls_attri_o->name }|.
ASSIGN (lv_name) TO <comp>.
ls_result = msg_map( name = ls_attri_o->name val = <comp> is_msg = ls_result ).
ENDLOOP.
INSERT ls_result INTO TABLE result.
ENDTRY.
ENDTRY.
ENDTRY. ENDTRY.
WHEN OTHERS. WHEN OTHERS.
@ -1516,4 +1542,29 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
). ).
ENDMETHOD. ENDMETHOD.
METHOD msg_map.
result = is_msg.
CASE name.
WHEN 'ID' OR 'MSGID'.
result-id = val.
WHEN 'NO' OR 'NUMBER' OR 'MSGNO'.
result-no = val.
WHEN 'MESSAGE' OR 'TEXT'.
result-text = val.
WHEN 'TYPE' OR 'MSGTY'.
result-type = val.
WHEN 'MESSAGE_V1' OR 'MSGV1' OR 'V1'.
result-v1 = val.
WHEN 'MESSAGE_V2' OR 'MSGV2' OR 'V2'.
result-v2 = val.
WHEN 'MESSAGE_V3' OR 'MSGV3' OR 'V3'.
result-v3 = val.
WHEN 'MESSAGE_V4' OR 'MSGV4' OR 'V4'.
result-v4 = val.
ENDCASE.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -0,0 +1,123 @@
CLASS z2ui5_cl_pop_bal DEFINITION
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
TYPES:
BEGIN OF ty_s_msg,
type TYPE string,
id TYPE string,
title TYPE string,
subtitle TYPE string,
number TYPE string,
time TYPE string,
date TYPE string,
message TYPE string,
message_v1 TYPE string,
message_v2 TYPE string,
message_v3 TYPE string,
message_v4 TYPE string,
group TYPE string,
END OF ty_s_msg.
TYPES ty_t_msg TYPE STANDARD TABLE OF ty_s_msg.
DATA mt_msg TYPE ty_t_msg.
CLASS-METHODS factory
IMPORTING
i_messages TYPE any
i_title TYPE string DEFAULT `abap2UI5 - Business Application Log`
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_pop_bal.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA check_initialized TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_pop_bal IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
"read log infos
"handle
"..
"read messages..
DATA(lt_msg) = z2ui5_cl_util=>msg_get( i_messages ).
LOOP AT lt_msg REFERENCE INTO DATA(lr_row).
DATA(ls_row) = VALUE ty_s_msg( ).
ls_row-type = z2ui5_cl_util=>ui5_get_msg_type( lr_row->type ).
ls_row-title = lr_row->text.
* lr_row->title = `title`.
* lr_row->message = `message`.
ls_row-subtitle = |{ lr_row->id } { lr_row->no }|.
ls_row-date = z2ui5_cl_util=>time_get_date_by_stampl( lr_row->timestampl ).
ls_row-time = z2ui5_cl_util=>time_get_time_by_stampl( lr_row->timestampl ).
* lr_row->group = `001`.
INSERT ls_row INTO TABLE r_result->mt_msg.
ENDLOOP.
r_result->title = i_title.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
popup = popup->dialog( title = `Messages`
contentheight = '50%'
contentwidth = '50%'
verticalScrolling = abap_false
afterclose = client->_event( 'BUTTON_CONTINUE' )
).
popup->message_view( items = client->_bind( mt_msg )
* groupitems = abap_true
)->message_item( type = `{TYPE}`
title = `{TITLE}`
subtitle = `{SUBTITLE}`
* description = `{MESSAGE}`
* groupname = `{GROUP}`
).
popup->buttons(
)->button( text = 'continue'
press = client->_event( 'BUTTON_CONTINUE' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.
IF check_initialized = abap_false.
check_initialized = abap_true.
view_display( ).
RETURN.
ENDIF.
CASE client->get( )-event.
WHEN `BUTTON_CONTINUE`.
client->popup_destroy( ).
client->nav_app_leave( ).
WHEN OTHERS.
ENDCASE.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_POP_BAL</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>ui - business application log</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -26,7 +26,7 @@ CLASS z2ui5_cl_pop_messages DEFINITION
CLASS-METHODS factory CLASS-METHODS factory
IMPORTING IMPORTING
i_messages TYPE STANDARD TABLE i_messages TYPE any
i_title TYPE string DEFAULT `abap2UI5 - Message Popup` i_title TYPE string DEFAULT `abap2UI5 - Message Popup`
RETURNING RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_pop_messages. VALUE(r_result) TYPE REF TO z2ui5_cl_pop_messages.