mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 02:58:20 +08:00
bal and message functions (#1565)
* bal and message functions * update * fix
This commit is contained in:
parent
20500bd40a
commit
4a115007f1
|
@ -61,15 +61,15 @@ CLASS z2ui5_cl_util DEFINITION
|
|||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_msg,
|
||||
text TYPE string,
|
||||
id TYPE string,
|
||||
no TYPE string,
|
||||
type TYPE string,
|
||||
v1 TYPE string,
|
||||
v2 TYPE string,
|
||||
v3 TYPE string,
|
||||
v4 TYPE string,
|
||||
timestampl type timestampl,
|
||||
text TYPE string,
|
||||
id TYPE string,
|
||||
no TYPE string,
|
||||
type TYPE string,
|
||||
v1 TYPE string,
|
||||
v2 TYPE string,
|
||||
v3 TYPE string,
|
||||
v4 TYPE string,
|
||||
timestampl TYPE timestampl,
|
||||
END OF ty_s_msg,
|
||||
ty_t_msg TYPE STANDARD TABLE OF ty_S_msg WITH EMPTY KEY.
|
||||
|
||||
|
@ -459,13 +459,6 @@ CLASS z2ui5_cl_util DEFINITION
|
|||
VALUE(result) TYPE abap_bool.
|
||||
|
||||
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.
|
||||
|
||||
|
@ -1408,114 +1401,7 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
|
|||
|
||||
METHOD msg_get.
|
||||
|
||||
DATA(lv_kind) = z2ui5_cl_util=>rtti_get_type_kind( val ).
|
||||
CASE lv_kind.
|
||||
|
||||
WHEN cl_abap_datadescr=>typekind_table.
|
||||
FIELD-SYMBOLS <tab> TYPE ANY TABLE.
|
||||
ASSIGN val TO <tab>.
|
||||
LOOP AT <tab> ASSIGNING FIELD-SYMBOL(<row>).
|
||||
DATA(lt_tab) = msg_get( <row> ).
|
||||
INSERT LINES OF lt_tab INTO TABLE result.
|
||||
ENDLOOP.
|
||||
|
||||
WHEN cl_abap_datadescr=>typekind_struct1 OR cl_abap_datadescr=>typekind_struct2.
|
||||
|
||||
IF val IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lt_attri) = z2ui5_cl_util=>rtti_get_t_attri_by_any( val ).
|
||||
|
||||
DATA(ls_result) = VALUE ty_s_msg( ).
|
||||
LOOP AT lt_attri REFERENCE INTO DATA(ls_attri).
|
||||
DATA(lv_name) = |VAL-{ ls_attri->name }|.
|
||||
ASSIGN (lv_name) TO FIELD-SYMBOL(<comp>).
|
||||
|
||||
IF ls_attri->name = 'ITEM'.
|
||||
lt_tab = msg_get( <comp> ).
|
||||
INSERT LINES OF lt_tab INTO TABLE result.
|
||||
RETURN.
|
||||
ELSE.
|
||||
ls_result = msg_map( name = ls_attri->name val = <comp> is_msg = ls_result ).
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
IF ls_result-text IS INITIAL AND ls_result-id IS NOT INITIAL.
|
||||
MESSAGE ID ls_result-id TYPE 'I' NUMBER ls_result-no
|
||||
WITH ls_result-v1 ls_result-v2 ls_result-v3 ls_result-v4
|
||||
INTO ls_result-text.
|
||||
ENDIF.
|
||||
INSERT ls_result INTO TABLE result.
|
||||
|
||||
WHEN cl_abap_datadescr=>typekind_oref.
|
||||
TRY.
|
||||
DATA(lx) = CAST cx_root( val ).
|
||||
ls_result = VALUE #( type = 'E' text = lx->get_text( ) ).
|
||||
DATA(lt_attri_o) = z2ui5_cl_util=>rtti_get_t_attri_by_oref( val ).
|
||||
LOOP AT lt_attri_o REFERENCE INTO DATA(ls_attri_o)
|
||||
WHERE visibility = 'U'.
|
||||
lv_name = |VAL->{ 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.
|
||||
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.
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
IF rtti_check_clike( val ).
|
||||
INSERT VALUE #( text = val
|
||||
)
|
||||
INTO TABLE result.
|
||||
ENDIF.
|
||||
ENDCASE.
|
||||
result = lcl_msp_mapper=>msg_get( val ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -1538,32 +1424,7 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
|
|||
WHEN 'E' THEN `Error`
|
||||
WHEN 'S' THEN `Success`
|
||||
WHEN `W` THEN `Warning`
|
||||
ELSE `Information`
|
||||
).
|
||||
|
||||
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.
|
||||
ELSE `Information` ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -116,3 +116,166 @@ CLASS lcl_range_to_sql IMPLEMENTATION.
|
|||
occ = 0 ) }'|.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_msp_mapper DEFINITION
|
||||
FINAL CREATE PUBLIC.
|
||||
|
||||
PUBLIC 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.
|
||||
|
||||
CLASS-METHODS msg_get
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_cl_util=>ty_t_msg.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_msp_mapper IMPLEMENTATION.
|
||||
|
||||
METHOD msg_get.
|
||||
|
||||
DATA(lv_kind) = z2ui5_cl_util=>rtti_get_type_kind( val ).
|
||||
CASE lv_kind.
|
||||
|
||||
WHEN cl_abap_datadescr=>typekind_table.
|
||||
FIELD-SYMBOLS <tab> TYPE ANY TABLE.
|
||||
ASSIGN val TO <tab>.
|
||||
LOOP AT <tab> ASSIGNING FIELD-SYMBOL(<row>).
|
||||
DATA(lt_tab) = msg_get( <row> ).
|
||||
INSERT LINES OF lt_tab INTO TABLE result.
|
||||
ENDLOOP.
|
||||
|
||||
WHEN cl_abap_datadescr=>typekind_struct1 OR cl_abap_datadescr=>typekind_struct2.
|
||||
|
||||
IF val IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lt_attri) = z2ui5_cl_util=>rtti_get_t_attri_by_any( val ).
|
||||
|
||||
DATA(ls_result) = VALUE z2ui5_cl_util=>ty_s_msg( ).
|
||||
LOOP AT lt_attri REFERENCE INTO DATA(ls_attri).
|
||||
DATA(lv_name) = |VAL-{ ls_attri->name }|.
|
||||
ASSIGN (lv_name) TO FIELD-SYMBOL(<comp>).
|
||||
|
||||
IF ls_attri->name = 'ITEM'.
|
||||
lt_tab = msg_get( <comp> ).
|
||||
INSERT LINES OF lt_tab INTO TABLE result.
|
||||
RETURN.
|
||||
ELSE.
|
||||
ls_result = msg_map( name = ls_attri->name val = <comp> is_msg = ls_result ).
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
IF ls_result-text IS INITIAL AND ls_result-id IS NOT INITIAL.
|
||||
MESSAGE ID ls_result-id TYPE 'I' NUMBER ls_result-no
|
||||
WITH ls_result-v1 ls_result-v2 ls_result-v3 ls_result-v4
|
||||
INTO ls_result-text.
|
||||
ENDIF.
|
||||
INSERT ls_result INTO TABLE result.
|
||||
|
||||
WHEN cl_abap_datadescr=>typekind_oref.
|
||||
TRY.
|
||||
DATA(lx) = CAST cx_root( val ).
|
||||
ls_result = VALUE #( type = 'E' text = lx->get_text( ) ).
|
||||
DATA(lt_attri_o) = z2ui5_cl_util=>rtti_get_t_attri_by_oref( val ).
|
||||
LOOP AT lt_attri_o REFERENCE INTO DATA(ls_attri_o)
|
||||
WHERE visibility = 'U'.
|
||||
lv_name = |VAL->{ 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.
|
||||
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.
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
IF z2ui5_cl_util=>rtti_check_clike( val ).
|
||||
INSERT VALUE #( text = val
|
||||
)
|
||||
INTO TABLE result.
|
||||
ENDIF.
|
||||
ENDCASE.
|
||||
|
||||
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.
|
||||
WHEN 'TIME_STMP'.
|
||||
result-timestampl = val.
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -756,8 +756,8 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
END OF ty_struc.
|
||||
|
||||
DATA BEGIN OF ms_struc2.
|
||||
INCLUDE TYPE ty_struc.
|
||||
INCLUDE TYPE ty_struc_incl.
|
||||
INCLUDE TYPE ty_struc.
|
||||
INCLUDE TYPE ty_struc_incl.
|
||||
DATA END OF ms_struc2.
|
||||
|
||||
DATA(lo_datadescr) = cl_abap_typedescr=>describe_by_data( ms_struc2 ).
|
||||
|
@ -769,3 +769,128 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_test_msg_mapper DEFINITION FINAL
|
||||
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
METHODS test_bal FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_cx FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_bapiret FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_bapirettab FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_sy FOR TESTING RAISING cx_static_check.
|
||||
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_test_msg_mapper IMPLEMENTATION.
|
||||
|
||||
METHOD test_sy.
|
||||
|
||||
IF sy-sysid = 'ABC'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
MESSAGE ID 'NET' TYPE 'I' NUMBER '001' INTO DATA(lv_dummy).
|
||||
DATA(lt_result) = lcl_msp_mapper=>msg_get( sy ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `NET`
|
||||
act = lt_result[ 1 ]-id ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `001`
|
||||
act = lt_result[ 1 ]-no ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `I`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_bapiret.
|
||||
|
||||
IF sy-sysid = 'ABC'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lt_msg) = VALUE bapirettab(
|
||||
( type = 'E' id = 'MSG1' number = '001' message = 'An empty Report field causes an empty XML Message to be sent' )
|
||||
).
|
||||
|
||||
DATA(lt_result) = lcl_msp_mapper=>msg_get( lt_msg[ 1 ] ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `MSG1`
|
||||
act = lt_result[ 1 ]-id ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `001`
|
||||
act = lt_result[ 1 ]-no ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `E`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_bapirettab.
|
||||
|
||||
IF sy-sysid = 'ABC'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lt_msg) = VALUE bapirettab(
|
||||
( type = 'E' id = 'MSG1' number = '001' message = 'An empty Report field causes an empty XML Message to be sent' )
|
||||
( type = 'I' id = 'MSG2' number = '002' message = 'Product already in use' ) ).
|
||||
|
||||
DATA(lt_result) = lcl_msp_mapper=>msg_get( lt_msg ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `MSG1`
|
||||
act = lt_result[ 1 ]-id ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `001`
|
||||
act = lt_result[ 1 ]-no ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `E`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_cx.
|
||||
|
||||
TRY.
|
||||
DATA(lv_val) = 1 / 0.
|
||||
CATCH cx_root INTO DATA(lx).
|
||||
DATA(lt_result) = lcl_msp_mapper=>msg_get( lx ).
|
||||
ENDTRY.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `E`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
method test_bal.
|
||||
|
||||
TYPES: BEGIN OF ty_log_entry,
|
||||
msgnumber TYPE n LENGTH 6, " Application Log: Internal Message Serial Number
|
||||
msgty TYPE c LENGTH 1, " Message Type
|
||||
msgid TYPE c LENGTH 20, " Message Class
|
||||
msgno TYPE n LENGTH 3, " Message Number
|
||||
msgv1 TYPE c LENGTH 50, " Message Variable
|
||||
msgv2 TYPE c LENGTH 50, " Message Variable
|
||||
msgv3 TYPE c LENGTH 50, " Message Variable
|
||||
msgv4 TYPE c LENGTH 50, " Message Variable
|
||||
msgv1_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
msgv2_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
msgv3_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
msgv4_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
detlevel TYPE c LENGTH 1, " Level of Detail
|
||||
probclass TYPE c LENGTH 1, " Problem Class
|
||||
alsort TYPE c LENGTH 3, " Sort Criterion/Grouping
|
||||
time_stmp TYPE p LENGTH 8 DECIMALS 7, " Message Time Stamp
|
||||
msg_count TYPE i, " Cumulated Message Count
|
||||
context TYPE c LENGTH 255, " Context (Generic Placeholder)
|
||||
params TYPE c LENGTH 255, " Parameters (Generic Placeholder)
|
||||
msg_txt TYPE string, " Message Text
|
||||
END OF ty_log_entry.
|
||||
|
||||
endmethod.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -77,21 +77,29 @@ CLASS z2ui5_cl_pop_bal IMPLEMENTATION.
|
|||
METHOD view_display.
|
||||
|
||||
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||
popup = popup->dialog( title = `Messages`
|
||||
popup = popup->dialog( title = `Business Application Log`
|
||||
contentheight = '50%'
|
||||
contentwidth = '50%'
|
||||
verticalScrolling = abap_false
|
||||
afterclose = client->_event( 'BUTTON_CONTINUE' )
|
||||
).
|
||||
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}`
|
||||
).
|
||||
DATA(table) = popup->table( client->_bind( mt_msg ) ).
|
||||
table->columns(
|
||||
)->column( )->text( 'Date' )->get_parent(
|
||||
)->column( )->text( 'Time' )->get_parent(
|
||||
)->column( )->text( 'Type' )->get_parent(
|
||||
)->column( )->text( 'ID' )->get_parent(
|
||||
)->column( )->text( 'No' )->get_parent(
|
||||
)->column( )->text( 'Message' ).
|
||||
|
||||
table->items( )->column_list_item( )->cells(
|
||||
)->text( '{DATE}'
|
||||
)->text( '{TIME}'
|
||||
)->text( '{TYPE}'
|
||||
)->text( '{ID}'
|
||||
)->text( '{NUMBER}'
|
||||
)->text( '{MESSAGE}'
|
||||
).
|
||||
|
||||
popup->buttons(
|
||||
)->button( text = 'continue'
|
||||
|
|
Loading…
Reference in New Issue
Block a user