Skip to content

Commit 5e0f9f1

Browse files
authored
Add files via upload
1 parent b58bb31 commit 5e0f9f1

11 files changed

+469
-0
lines changed

src/package.devc.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DEVC" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<DEVC>
6+
<CTEXT>Message library</CTEXT>
7+
</DEVC>
8+
</asx:values>
9+
</asx:abap>
10+
</abapGit>

src/zcl_free_message.clas.abap

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
"! <p class="shorttext synchronized" lang="EN">Free message</p>
2+
"! Inherits from {@link ZCL_MESSAGE}.
3+
class zcl_free_message definition
4+
public
5+
inheriting from zcl_message
6+
create public.
7+
8+
public section.
9+
10+
"! <p class="shorttext synchronized" lang="EN">Create a message ID '00' TYPE <em>i_type</em> NUMBER '001'</p>
11+
"!
12+
"! @parameter i_text | <p class="shorttext synchronized" lang="EN"></p>
13+
"! @parameter i_type | <p class="shorttext synchronized" lang="EN"></p>
14+
methods constructor
15+
importing
16+
i_text type string
17+
i_type like sy-msgty default zcl_message=>valid_type-information.
18+
19+
endclass.
20+
class zcl_free_message implementation.
21+
22+
method constructor.
23+
24+
types: begin of free_text_as_t100_message,
25+
part1 like zcl_message=>var1,
26+
part2 like zcl_message=>var2,
27+
part3 like zcl_message=>var3,
28+
part4 like zcl_message=>var4,
29+
end of free_text_as_t100_message.
30+
31+
data(free_text_as_t100_message) = conv free_text_as_t100_message( i_text ).
32+
33+
super->constructor( i_id = '00'
34+
i_number = '001'
35+
i_type = i_type
36+
i_var1 = free_text_as_t100_message-part1
37+
i_var2 = free_text_as_t100_message-part2
38+
i_var3 = free_text_as_t100_message-part3
39+
i_var4 = free_text_as_t100_message-part4 ).
40+
41+
endmethod.
42+
43+
endclass.
44+

src/zcl_free_message.clas.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<VSEOCLASS>
6+
<CLSNAME>ZCL_FREE_MESSAGE</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>.</DESCRIPT>
9+
<STATE>1</STATE>
10+
<CLSCCINCL>X</CLSCCINCL>
11+
<FIXPT>X</FIXPT>
12+
<UNICODE>X</UNICODE>
13+
</VSEOCLASS>
14+
</asx:values>
15+
</asx:abap>
16+
</abapGit>

src/zcl_message.clas.abap

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
"! <p class="shorttext synchronized" lang="EN">Message</p>
2+
class zcl_message definition
3+
public
4+
create public.
5+
6+
public section.
7+
8+
interfaces: if_t100_message.
9+
10+
aliases: get_longtext for if_message~get_longtext,
11+
get_text for if_message~get_text.
12+
13+
constants: begin of valid_type,
14+
abortion type sy-msgty value 'A',
15+
error type sy-msgty value 'E',
16+
information type sy-msgty value 'I',
17+
warning type sy-msgty value 'W',
18+
exit type sy-msgty value 'X',
19+
end of valid_type.
20+
21+
data var1 type sy-msgv1 read-only.
22+
23+
data var2 type sy-msgv2 read-only.
24+
25+
data var3 type sy-msgv4 read-only.
26+
27+
data var4 type sy-msgv4 read-only.
28+
29+
data type type sy-msgty read-only.
30+
31+
"! <p class="shorttext synchronized" lang="EN">Create a T100 message</p>
32+
"!
33+
"! @parameter i_id | <p class="shorttext synchronized" lang="EN"></p>
34+
"! @parameter i_number | <p class="shorttext synchronized" lang="EN"></p>
35+
"! @parameter i_type | <p class="shorttext synchronized" lang="EN"></p>
36+
"! @parameter i_var1 | <p class="shorttext synchronized" lang="EN"></p>
37+
"! @parameter i_var2 | <p class="shorttext synchronized" lang="EN"></p>
38+
"! @parameter i_var3 | <p class="shorttext synchronized" lang="EN"></p>
39+
"! @parameter i_var4 | <p class="shorttext synchronized" lang="EN"></p>
40+
methods constructor
41+
importing
42+
i_id like if_t100_message=>t100key-msgid
43+
i_number like if_t100_message=>t100key-msgno
44+
i_type like sy-msgty
45+
i_var1 like sy-msgv1 optional
46+
i_var2 like sy-msgv2 optional
47+
i_var3 like sy-msgv3 optional
48+
i_var4 like sy-msgv4 optional.
49+
50+
"! <p class="shorttext synchronized" lang="EN">Copies message information to sy structure</p>
51+
"!
52+
"! @parameter r_self | <p class="shorttext synchronized" lang="EN"></p>
53+
methods load_into_system_fields
54+
returning
55+
value(r_self) type ref to if_t100_message.
56+
57+
"! <p class="shorttext synchronized" lang="EN">Sends message</p>
58+
"!
59+
"! @parameter i_display_like | <p class="shorttext synchronized" lang="EN"></p>
60+
"! @parameter r_self | <p class="shorttext synchronized" lang="EN"></p>
61+
methods send
62+
importing
63+
i_display_like type sy-msgty optional
64+
returning
65+
value(r_self) type ref to if_t100_message.
66+
67+
endclass.
68+
class zcl_message implementation.
69+
70+
method constructor.
71+
72+
me->var1 = i_var1.
73+
74+
me->var2 = i_var2.
75+
76+
me->var3 = i_var3.
77+
78+
me->var4 = i_var4.
79+
80+
me->type = i_type.
81+
82+
me->if_t100_message~t100key = value #( msgid = i_id
83+
msgno = i_number
84+
attr1 = 'VAR1'
85+
attr2 = 'VAR2'
86+
attr3 = 'VAR3'
87+
attr4 = 'VAR4' ).
88+
89+
endmethod.
90+
method if_message~get_longtext.
91+
92+
result = cl_message_helper=>get_longtext_for_message( text = me
93+
preserve_newlines = preserve_newlines ).
94+
95+
endmethod.
96+
method if_message~get_text.
97+
98+
result = cl_message_helper=>get_text_for_message( me ).
99+
100+
endmethod.
101+
method load_into_system_fields.
102+
103+
me->get_text( ).
104+
105+
r_self = me.
106+
107+
endmethod.
108+
method send.
109+
110+
if i_display_like is supplied.
111+
112+
message me type me->type display like i_display_like.
113+
114+
else.
115+
116+
message me type me->type.
117+
118+
endif.
119+
120+
endmethod.
121+
122+
endclass.

src/zcl_message.clas.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<VSEOCLASS>
6+
<CLSNAME>ZCL_MESSAGE</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>.</DESCRIPT>
9+
<STATE>1</STATE>
10+
<CLSCCINCL>X</CLSCCINCL>
11+
<FIXPT>X</FIXPT>
12+
<UNICODE>X</UNICODE>
13+
</VSEOCLASS>
14+
</asx:values>
15+
</asx:abap>
16+
</abapGit>

src/zcl_message_factory.clas.abap

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
"! <p class="shorttext synchronized" lang="EN">Message factory</p>
2+
class zcl_message_factory definition
3+
public
4+
create public.
5+
6+
public section.
7+
8+
"! <p class="shorttext synchronized" lang="EN">Returns a new message from the system structure</p>
9+
"!
10+
"! @parameter r_system_message | <p class="shorttext synchronized" lang="EN"></p>
11+
methods from_system_message
12+
returning
13+
value(r_system_message) type ref to if_t100_message.
14+
15+
"! <p class="shorttext synchronized" lang="EN">Returns a new message from a free text</p>
16+
"!
17+
"! @parameter i_free_text | <p class="shorttext synchronized" lang="EN"></p>
18+
"! @parameter i_type | <p class="shorttext synchronized" lang="EN"></p>
19+
"! @parameter r_free_message | <p class="shorttext synchronized" lang="EN"></p>
20+
methods from_string
21+
importing
22+
i_free_text type string
23+
i_type type sy-msgty default zcl_message=>valid_type-information
24+
returning
25+
value(r_free_message) type ref to if_t100_message.
26+
27+
"! <p class="shorttext synchronized" lang="EN">Returns a new message from a text symbol</p>
28+
"! Replaces placeholders &1, &2, &3, and &4 if provided
29+
"!
30+
"! @parameter i_text_symbol | <p class="shorttext synchronized" lang="EN"></p>
31+
"! @parameter i_type | <p class="shorttext synchronized" lang="EN"></p>
32+
"! @parameter i_placeholder1 | <p class="shorttext synchronized" lang="EN">Value for &1</p>
33+
"! @parameter i_placeholder2 | <p class="shorttext synchronized" lang="EN">Value for &2</p>
34+
"! @parameter i_placeholder3 | <p class="shorttext synchronized" lang="EN">Value for &3</p>
35+
"! @parameter i_placeholder4 | <p class="shorttext synchronized" lang="EN">Value for &4</p>
36+
"! @parameter r_text_symbol_message | <p class="shorttext synchronized" lang="EN"></p>
37+
methods from_text_symbol
38+
importing
39+
i_text_symbol type rs38m-itex132
40+
i_type type sy-msgty default zcl_message=>valid_type-information
41+
i_placeholder1 type sy-msgv1 optional
42+
i_placeholder2 type sy-msgv2 optional
43+
i_placeholder3 type sy-msgv3 optional
44+
i_placeholder4 type sy-msgv4 optional
45+
returning
46+
value(r_text_symbol_message) type ref to if_t100_message.
47+
48+
"! <p class="shorttext synchronized" lang="EN">Returns a new message from an exception message</p>
49+
"!
50+
"! @parameter i_exception | <p class="shorttext synchronized" lang="EN"></p>
51+
"! @parameter i_type | <p class="shorttext synchronized" lang="EN"></p>
52+
"! @parameter r_error_message | <p class="shorttext synchronized" lang="EN"></p>
53+
methods from_exception
54+
importing
55+
i_exception type ref to cx_root
56+
i_type type sy-msgty default zcl_message=>valid_type-error
57+
returning
58+
value(r_error_message) type ref to if_t100_message.
59+
60+
"! <p class="shorttext synchronized" lang="EN">Returns a new message from an existing message</p>
61+
"!
62+
"! @parameter i_message | <p class="shorttext synchronized" lang="EN"></p>
63+
"! @parameter i_new_type | <p class="shorttext synchronized" lang="EN">Override type of original message</p>
64+
"! @parameter r_copied_message | <p class="shorttext synchronized" lang="EN"></p>
65+
methods clone
66+
importing
67+
i_message type ref to if_t100_message
68+
i_new_type type sy-msgty optional
69+
returning
70+
value(r_copied_message) type ref to if_t100_message.
71+
72+
endclass.
73+
class zcl_message_factory implementation.
74+
75+
method from_system_message.
76+
77+
r_system_message = cast #( new zcl_message( i_id = sy-msgid
78+
i_number = sy-msgno
79+
i_type = sy-msgty
80+
i_var1 = sy-msgv1
81+
i_var2 = sy-msgv2
82+
i_var3 = sy-msgv3
83+
i_var4 = sy-msgv4 ) ).
84+
85+
endmethod.
86+
method from_string.
87+
88+
types: begin of free_text_as_t100_message,
89+
part1 like zcl_message=>var1,
90+
part2 like zcl_message=>var2,
91+
part3 like zcl_message=>var3,
92+
part4 like zcl_message=>var4,
93+
end of free_text_as_t100_message.
94+
95+
data(free_text_as_t100_message) = conv free_text_as_t100_message( i_free_text ).
96+
97+
r_free_message = cast #( new zcl_message( i_id = '00'
98+
i_number = 001
99+
i_type = i_type
100+
i_var1 = free_text_as_t100_message-part1
101+
i_var2 = free_text_as_t100_message-part2
102+
i_var3 = free_text_as_t100_message-part3
103+
i_var4 = free_text_as_t100_message-part4 ) ).
104+
105+
endmethod.
106+
method from_text_symbol.
107+
108+
r_text_symbol_message = me->from_string( replace( val = replace( val = replace( val = replace( val = i_text_symbol
109+
sub = '&1'
110+
with = i_placeholder1 )
111+
sub = '&2'
112+
with = i_placeholder2 )
113+
sub = '&3'
114+
with = i_placeholder3 )
115+
sub = '&4'
116+
with = i_placeholder4 ) ).
117+
118+
endmethod.
119+
method from_exception.
120+
121+
i_exception->if_message~get_text( ). "copy data into sy structure
122+
123+
sy-msgty = i_type.
124+
125+
r_error_message = me->from_system_message( ).
126+
127+
endmethod.
128+
method clone.
129+
130+
i_message->if_message~get_text( ). "copy data into sy structure
131+
132+
sy-msgty = cond #( when i_new_type is supplied
133+
then i_new_type
134+
else sy-msgty ).
135+
136+
r_copied_message = me->from_system_message( ).
137+
138+
endmethod.
139+
140+
endclass.

src/zcl_message_factory.clas.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<VSEOCLASS>
6+
<CLSNAME>ZCL_MESSAGE_FACTORY</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>.</DESCRIPT>
9+
<STATE>1</STATE>
10+
<CLSCCINCL>X</CLSCCINCL>
11+
<FIXPT>X</FIXPT>
12+
<UNICODE>X</UNICODE>
13+
</VSEOCLASS>
14+
</asx:values>
15+
</asx:abap>
16+
</abapGit>

0 commit comments

Comments
 (0)