Skip to Content
Technical Articles

Solution Manager – enhanced MOPZ S-User selection for companies with several customer numbers (ABAP up to SP22)

My intention to post this Blog was, I hate the S-user selection for several customer numbers.
Per default you can only select with customer number and S-user; but it is not user friendly.
My development request to SAP was ignored, therefore I decided to do a customer modification
of these SAP standard objects.

You can find a new blog for WebDynpro MOPZ Task since SP Stack 23 in: Solution Manager – enhanced MOPZ S-User selection for companies with several customer numbers (since Solution Manager 7.0 SP23 WebDynpro) and also Solution Manager 7.1

ZV_AISUSER.JPG

What we have to do?

First we have to add an appand to the table AISUSER for a text field f.e in CHAR20
format to add the information about the cryptic S-user and customer number.
This appand called ZPARNAME is free of modification and will not get lost by an
upgrade or support package installation.

ZV_AISUSER.JPG
ZV_AISUSER.JPG

Secondly we have to create a view to allow to maintain the table AISUSER;
with the new append f.e. saved as ZSCHULZV_AISUSER via SE11.

ZV_AISUSER.JPG
ZV_AISUSER_2.JPG
ZV_AISUSER_3.JPG

Thirdly we have to modify the program behind the transaction AISUSER.
The program SMBI_AISUSER. This programm will link at future not to the
view AISUSER, but to the new customer view ZV_AISUSER.

Sadly you have to do this after the SP installation again (SPAU).

he following lines were changed:
16 *{ REPLACE W40K900169 1
16 l_view_name = ‘AISUSER’.

ollowing lines added:
17 * l_view_name = ‘AISUSER’.
18 l_view_name = ‘ZSCHULZV_AISUSER’.
19 *} REPLACE

ZV_AISUSER.JPG

Fourthly we have to modify the method SUSER_PROCESS in class
/TMWFLOW/CL_MO_HTML_REQUEST via SE80 to display a detailed information
in the MOPZ for the S-user and customer number. (btw: I’m not a developer, I’m simply
a frustrated admin and not firm in such thinks, but with a little trace and development
support from my colleagues I found this webdynpro method).

Here I have to add my new field lv_zparname to display and select it in MOPZ.
This source code comparison is based on SP SAPKITL428. It is to much to post the complete code; sry.

Sadly you have to do this after the SP installation again (SPAU).

Contents Unchanged:
1 1 METHOD SUSER_PROCESS.
2 2 DATA: lt_aisuser TYPE TABLE OF aisuser.
3 3 DATA: ls_aisuser TYPE aisuser,
4 4 ls_msg TYPE /tmwflow/mo_s_error.
5 5 DATA: lv_str TYPE string,
6 6 lv_suser_num TYPE i,
7 7 lv_konzs TYPE konzs,

Following lines added:
8 *{ DELETE W40K900174 2
9 * lv_suser TYPE syuname,
10 *} DELETE
11 *{ INSERT W40K900174 26

Contents Unchanged:
12 8 lv_suser TYPE syuname,

Following lines added:
13 lv_zparname TYPE zparname,
14 *} INSERT

Contents Unchanged:
15 9 lv_suser_tmp TYPE syuname,
16 10 lv_str_suser TYPE string,
17 11 lv_selected TYPE string,
… … …
70 64 IF lf_pref_value IS INITIAL.
71 65 ” no default, use the first one
72 66 READ TABLE lt_aisuser INDEX 1 INTO ls_aisuser.

Following lines added:
73 *{ DELETE W40K900174 11
74 * lv_suser = ls_aisuser-parnr.
75 * lv_konzs = ls_aisuser-konzs.
76 *} DELETE
77 *{ INSERT W40K900174 10

Contents Unchanged:
78 67 lv_suser = ls_aisuser-parnr.
79 68 lv_konzs = ls_aisuser-konzs.

Following lines added:
80 lv_zparname = ls_aisuser-zparname.
81 *} INSERT

Contents Unchanged:
82 69 ELSE.

The following lines were changed:
83 *{ DELETE W40K900174 7
70 SPLIT lf_pref_value AT ‘-‘ INTO lv_suser lv_konzs.

Following lines added:
84 * SPLIT lf_pref_value AT ‘-‘ INTO lv_suser lv_konzs.
85 *} DELETE
86 *{ INSERT W40K900174 6
87 SPLIT lf_pref_value AT ‘-‘ INTO lv_suser lv_konzs lv_zparname.
88 *} INSERT

Contents Unchanged:
89 71 ENDIF.
90 72 ELSE.

The following lines were changed:
91 *{ DELETE W40K900174 8
73 SPLIT m_suser AT ‘-‘ INTO lv_suser lv_konzs.

Following lines added:
92 * SPLIT m_suser AT ‘-‘ INTO lv_suser lv_konzs.
93 *} DELETE
94 *{ INSERT W40K900174 9
95 SPLIT m_suser AT ‘-‘ INTO lv_suser lv_konzs lv_zparname.
96 *} INSERT

Contents Unchanged:
97 74 lf_filter_key = ‘SUSERPREF’.
98 75 lf_pref_value = m_suser.
99 76 user_pref_set( pf_pref_name = lf_filter_key
… … …
102 79
103 80 READ TABLE lt_aisuser TRANSPORTING NO FIELDS
104 81 WITH KEY parnr = lv_suser

The following lines were changed:
105 *{ DELETE W40K900174 12
82 konzs = lv_konzs.

Following lines added:
106 * konzs = lv_konzs.
107 *} DELETE
108 *{ INSERT W40K900174 13
109 konzs = lv_konzs
110 zparname = lv_zparname.
111 *} INSERT

Contents Unchanged:
112 83 IF sy-subrc <> 0.
113 84 READ TABLE lt_aisuser INDEX 1 INTO ls_aisuser.
114 85 lv_suser = ls_aisuser-parnr.

Following lines added:
115 *{ DELETE W40K900174 14
116 * lv_konzs = ls_aisuser-konzs.
117 *} DELETE
118 *{ INSERT W40K900174 15

Contents Unchanged:
119 86 lv_konzs = ls_aisuser-konzs.

Following lines added:
120 lv_zparname = ls_aisuser-zparname.
121 *} INSERT

Contents Unchanged:
122 87 ENDIF.
123 88
124 89 LOOP AT lt_aisuser ASSIGNING .
… … …
129 94 lv_selected = space.
130 95 ENDIF.
131 96

The following lines were changed:
132 *{ DELETE W40K900174 16
97 CONCATENATE -parnr -konzs

Following lines added:
133 * CONCATENATE -parnr -konzs
134 *} DELETE
135 *{ INSERT W40K900174 17
136 CONCATENATE -parnr -konzs -zparname
137 *} INSERT

Contents Unchanged:
138 98 INTO lv_value SEPARATED BY ‘-‘.
139 99
140 100 lv_suser_tmp = -parnr.
141 101 SHIFT lv_suser_tmp RIGHT BY 1 PLACES.
142 102 lv_suser_tmp(1) = ‘S’.
143 103
144 104 IF -konzs IS NOT INITIAL.

The following lines were changed:
145 *{ DELETE W40K900174 18
105 CONCATENATE lv_suser_tmp -konzs

Following lines added:
146 * CONCATENATE lv_suser_tmp -konzs
147 *} DELETE
148 *{ INSERT W40K900174 19
149 CONCATENATE lv_suser_tmp -konzs -zparname
150 *} INSERT

Contents Unchanged:
151 106 INTO lv_str_suser SEPARATED BY ‘ – ‘.
152 107 ELSE.
153 108 lv_str_suser = lv_suser_tmp.
… … …
168 123
169 124 READ TABLE lt_aisuser INDEX 1 INTO ls_aisuser.
170 125 lv_suser = ls_aisuser-parnr.

Following lines added:
171 *{ DELETE W40K900174 20
172 * lv_konzs = ls_aisuser-konzs.
173 *} DELETE
174 *{ INSERT W40K900174 21

Contents Unchanged:
175 126 lv_konzs = ls_aisuser-konzs.

Following lines added:
176 lv_zparname = ls_aisuser-zparname.
177 *} INSERT

Contents Unchanged:
178 127 lv_suser_tmp = lv_suser.
179 128
180 129 SHIFT lv_suser_tmp RIGHT BY 1 PLACES.
181 130 lv_suser_tmp(1) = ‘S’.
182 131
183 132 IF lv_konzs IS NOT INITIAL.

The following lines were changed:
184 *{ DELETE W40K900174 22
133 CONCATENATE lv_suser_tmp lv_konzs INTO lv_str_suser SEPARATED BY ‘ – ‘.

Following lines added:
185 * CONCATENATE lv_suser_tmp lv_konzs INTO lv_str_suser SEPARATED BY ‘ – ‘.
186 *} DELETE
187 *{ INSERT W40K900174 23
188 CONCATENATE lv_suser_tmp lv_konzs lv_zparname INTO lv_str_suser SEPARATED BY ‘ – ‘.
189 *} INSERT

Contents Unchanged:
190 134 ELSE.
191 135 lv_str_suser = lv_suser.
192 136 ENDIF.
… … …
201 145
202 146 ev_html = lv_str.
203 147

The following lines were changed:
204 *{ DELETE W40K900174 24
148 CONCATENATE lv_suser lv_konzs

Following lines added:
205 * CONCATENATE lv_suser lv_konzs
206 *} DELETE
207 *{ INSERT W40K900174 25
208 CONCATENATE lv_suser lv_konzs lv_zparname
209 *} INSERT

Contents Unchanged:
210 149 INTO lv_value SEPARATED BY ‘-‘.
211 150 ev_pref_value = lv_value.
212 151
… … …
229 168
230 169
231 170 ENDMETHOD.

ZV_AISUSER.JPG

After the maintainance of the new Transaction AISUSER you can enjoy the result of this painful admin job.

ZV_AISUSER.JPG

SDN Search: mopz Maintenance Optimizer s-user suser selection note 1082010 Administration of several customer numbers Verwaltung mehrerer Kundennummern

7 Comments
You must be Logged on to comment or reply to a post.