Skip to Content

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

To report this post you need to login first.

7 Comments

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

    1. Former Member Post author
      I created a new code change for the new webdynpro selection screen and will post up tomorrow a new Blog Entry here in the SDN.
      (0) 
    1. Former Member Post author
      Hello Mr. Pasalapudi, yes I can follow. But we use only one system administration user and use single sign on via trusted system configuration, too. So we can do this fine all with one superuser. Btw. I can not understand why SAP don’t apply this to the standard code. It is not administrator-friendly ๐Ÿ˜‰
      (0) 
      1. Former Member
        Yes, with one administrative user login, we have to create one user for each customer and assigne the role SAP_MAINT_OPT_ADMIN.

        This strategy is discussed in Note# 1082010.

        (0) 

Leave a Reply