[58171] in SAPr3-news
Re: Workitem weiterleiten durch Admin
daemon@ATHENA.MIT.EDU (=?iso-8859-1?q?Mathias_Glo=DF?=)
Thu Sep 21 18:41:32 2006
To: sapr3-news@mit.edu
Date: 20 Sep 2006 23:21:53 -0700
From: "=?iso-8859-1?q?Mathias_Glo=DF?=" <mgloss@gmail.com>
Message-ID: <1158819713.272264.96260@b28g2000cwb.googlegroups.com>
Olli wrote:
> Moin Moin, unsere Prozesse sind an einigen stellen echt bescheiden
> modelliert. Folgendes Problem: Ein User erh=E4lt ein Workitm z.b.
> internes Anerkennungsverfahren. Nun leitet er das Workitem an einen
> Kollegen weiter. Dieser Kollege ist aber l=E4nger krank und hat keine
> Vertreterregeln im SBWP defininiert.
>
> Wie bekommt man nun diese WI weitergeleitet ohne sich mit dem User
> anmelden zu m=FCssen? Kann man Vertreterregeln auch f=FCr andere User als
> Admin einbauen?
Du kannst das Workitem =FCber die Admin-Tools suchen und dann als
Administrator
weiterleiten. In der Praxis ist das aber SEHR umst=E4ndlich, das
Workitem zu finden.
Besser ist ein Report zum Vertreter anlegen - wichtig ist, das Flag
f=FCr aktiv
zu setzen, damit es eine aktive Vertretung wird. Dann sieht der
Vertreter automatisch
alle Workitems des Vertretenen (ansonsten m=FCsste er die Vertretung
explizit =FCber-
nehmen):
Die entsprechenden Messages musst du noch anlegen... (message id zzz)
REPORT ZWF_SUBSTITUTE_MAINTAIN message id zzz.
*----------------------------
*Zentrale Pflege der Workflow Vertretung
*----------------------------
constants: c_true value 'X',
c_false value space.
parameters: p_usnam like hrus_d2-us_name obligatory
MATCHCODE OBJECT USER_ADDR,
p_vertr like hrus_d2-rep_name obligatory "vertreter
MATCHCODE OBJECT USER_ADDR,
p_begda like hrus_d2-begda obligatory default sy-datum,
p_endda like hrus_d2-endda obligatory,
p_active like hrus_d2-active.
parameters: p_insert radiobutton group g1,
p_delete radiobutton group g1.
data: gs_hrus_d2 like hrus_d2,
gflg_error.
START-OF-SELECTION.
*Berechtigungspr=FCfung auf SWIA -> da dies eine
*der sensibelsten Adminfunktionen ist
AUTHORITY-CHECK OBJECT 'S_TCODE'
ID 'TCD' FIELD 'SWIA'.
if sy-subrc ne 0.
message e058.
endif.
perform check_data changing gflg_error.
if gflg_error =3D c_false.
clear gs_hrus_d2.
gs_hrus_d2-us_name =3D p_usnam.
gs_hrus_d2-rep_name =3D p_vertr.
gs_hrus_d2-begda =3D p_begda.
gs_hrus_d2-endda =3D p_endda.
gs_hrus_d2-active =3D p_active.
case c_true.
when p_insert.
insert into hrus_d2 values gs_hrus_d2.
if sy-subrc =3D 0.
write: 'Vertreter erfolgreich angelegt.'(S01).
else.
write: 'Fehler bei insert!'(E01).
endif.
when p_delete.
delete from hrus_d2 where us_name =3D p_usnam
and rep_name =3D p_vertr.
if sy-subrc =3D 0.
write:/ 'Vertretung erfolgreich gel=F6scht.'(S02).
else.
write:/ 'Fehler beim l=F6schen der Vertretung!'(E02).
endif.
endcase.
endif.
FORM check_data changing oflg_error.
data: ld_uname like sy-uname,
ld_datdiff type i.
clear oflg_error.
format color col_negative.
if p_endda < p_begda.
write:/ 'Enddatum muss gr=F6=DFer Beginndatum sein'.
oflg_error =3D c_true.
endif.
select single bname from usr02 into ld_uname
where bname =3D p_usnam.
if sy-subrc ne 0.
write:/ 'Benutzer', p_usnam, 'nicht vorhanden'.
oflg_error =3D c_true.
endif.
select single bname from usr02 into ld_Uname
where bname =3D p_vertr.
if sy-subrc ne 0.
write:/ 'Benutzer', p_vertr, 'nicht vorhanden'.
oflg_error =3D c_true.
endif.
*ld_datdiff =3D p_endda - p_begda.
*if ld_datdiff > 50.
* write:/ 'Bitte k=FCrzeren G=FCltigkeitszeitraum w=E4hlen'.
* oflg_error =3D c_True.
*endif.
format color col_normal.
ENDFORM. " check_data
Und falls du schauen willst, wer denn alles als Vertreter angelegt ist:
REPORT ZWF_SUBSTITUTE_MAINTAIN message-id zzz.
*----------------------------
*Anzeige der Workflow Vertretung
*----------------------------
constants: c_true value 'X',
c_false value space.
parameters: p_usnam like hrus_d2-us_name obligatory
MATCHCODE OBJECT USER_ADDR.
data: gs_hrus_d2 like hrus_d2,
gs_usr02 like usr02,
gs_usr03 like usr03,
g_name(1000) type c,
gflg_error.
START-OF-SELECTION.
*Berechtigungspr=FCfung auf SWIA
AUTHORITY-CHECK OBJECT 'S_TCODE'
ID 'TCD' FIELD 'SWIA'.
if sy-subrc ne 0.
message e058.
endif.
perform check_data changing gflg_error.
if gflg_error =3D c_false.
clear gs_hrus_d2.
* gs_hrus_d2-us_name =3D p_usnam.
* gs_hrus_d2-rep_name =3D p_vertr.
* gs_hrus_d2-begda =3D p_begda.
* gs_hrus_d2-endda =3D p_endda.
* gs_hrus_d2-active =3D p_active.
select * from hrus_d2 into gs_hrus_d2 where us_name =3D p_usnam.
* Vertreter =FCberhaupt (noch) vorhanden?
select single * from usr02 into gs_usr02
where bname =3D gs_hrus_d2-rep_name.
if sy-subrc ne 0.
format color col_negative.
write:/ 'Benutzer', gs_hrus_d2-rep_name, 'nicht vorhanden!!!'.
format color col_normal.
else.
CALL FUNCTION 'SUSR_SHOW_USER_DETAILS'
EXPORTING
BNAME =3D p_usnam
NO_DISPLAY =3D 'X'
CHANGING
USER_USR03 =3D gs_usr03.
concatenate gs_usr03-name1 gs_usr03-name2 gs_usr03-name3
gs_usr03-name4 into g_name separated by ' '.
* condense g_name.
write:/ 'Benutzer',g_name(25), '(', p_usnam, ') wird',
'vertreten durch'.
CALL FUNCTION 'SUSR_SHOW_USER_DETAILS'
EXPORTING
BNAME =3D gs_hrus_d2-rep_name
NO_DISPLAY =3D 'X'
CHANGING
USER_USR03 =3D gs_usr03.
concatenate gs_usr03-name1 gs_usr03-name2 gs_usr03-name3
gs_usr03-name4 into g_name separated by ' '.
* condense g_name.
write:/ 'Benutzer',g_name(25), '(', gs_hrus_d2-rep_name, ') vom
',
gs_hrus_d2-begda, 'bis', gs_hrus_d2-endda, 'Aktiv:'.
if gs_hrus_d2-active =3D 'X'.
write 'ja'.
else.
write 'nein'.
endif.
write /.
endif.
endselect.
endif.
*&---------------------------------------------------------------------*
*& Form check_data
*&---------------------------------------------------------------------*
FORM check_data changing oflg_error.
data: ld_uname like sy-uname.
clear oflg_error.
format color col_negative.
select single bname from usr02 into ld_uname
where bname =3D p_usnam.
if sy-subrc ne 0.
write:/ 'Benutzer', p_usnam, 'nicht vorhanden'.
oflg_error =3D c_true.
endif.
format color col_normal.
ENDFORM. " check_data
Gr=FC=DFe, Mathias