Skip to content

Automatic Update #23

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 15 additions & 103 deletions src/01/00/03/z2ui6_cl_util.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -60,17 +60,18 @@ CLASS z2ui6_cl_util DEFINITION
END OF ty_s_sql.

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,
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,
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
IMPORTING
Expand All @@ -82,7 +83,7 @@ CLASS z2ui6_cl_util DEFINITION
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE ty_T_msg.
VALUE(result) TYPE ty_t_msg.

CLASS-METHODS rtti_get_t_attri_by_include
IMPORTING
Expand Down Expand Up @@ -1400,96 +1401,7 @@ CLASS z2ui6_cl_util IMPLEMENTATION.

METHOD msg_get.

DATA(lv_kind) = z2ui6_cl_util=>rtti_get_type_kind( val ).
CASE lv_kind.

WHEN cl_abap_datadescr=>typekind_table.
FIELD-SYMBOLS <tab> TYPE STANDARD 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) = z2ui6_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>).
CASE ls_attri->name.
WHEN 'ID' OR 'MSGID'.
ls_result-id = <comp>.
WHEN 'NO' OR 'NUMBER' OR 'MSGNO'.
ls_result-no = <comp>.
WHEN 'MESSAGE' OR 'TEXT'.
ls_result-text = <comp>.
WHEN 'TYPE' OR 'MSGTY'.
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.
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) = z2ui6_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>.
CASE ls_attri_o->name.
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.
INSERT ls_result INTO TABLE result.
CATCH cx_root.
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.

Expand All @@ -1512,8 +1424,8 @@ CLASS z2ui6_cl_util IMPLEMENTATION.
WHEN 'E' THEN `Error`
WHEN 'S' THEN `Success`
WHEN `W` THEN `Warning`
ELSE `Information`
).
ELSE `Information` ).

ENDMETHOD.

ENDCLASS.
163 changes: 163 additions & 0 deletions src/01/00/03/z2ui6_cl_util.clas.locals_imp.abap
Original file line number Diff line number Diff line change
Expand Up @@ -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 z2ui6_cl_util=>ty_s_msg
RETURNING
VALUE(result) TYPE z2ui6_cl_util=>ty_s_msg.

CLASS-METHODS msg_get
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE z2ui6_cl_util=>ty_t_msg.

ENDCLASS.

CLASS lcl_msp_mapper IMPLEMENTATION.

METHOD msg_get.

DATA(lv_kind) = z2ui6_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) = z2ui6_cl_util=>rtti_get_t_attri_by_any( val ).

DATA(ls_result) = VALUE z2ui6_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) = z2ui6_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 = z2ui6_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 z2ui6_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.
Loading