Vertretung pflegen
Ab und zu schlug bei mir das Problem auf, das ein Mitarbeiter die Workflows eines anderen Mitarbeiters bearbeiten musste, aber nicht als Vertreter eingetragen war. Natürlich war der zu Vertretende schon im Urlaub.
Mit dem Programm unten kann man in so einem Fall einen Vertreter anlegen. Das Programm ist natürlich abzusichern und sollte nur im Notfall verwendet werden, weil es persönliche und ggf. sensible Daten von SAP Benutzern für andere freigibt.
report zzwfrep.
data ls_hrus_d2 type hrus_d2.
data ls_usr02 type usr02.
selection-screen begin of block bl1 with frame title text-010.
parameters p_us like usr02-bname obligatory.
parameters p_rep like usr02-bname obligatory.
parameters p_act as checkbox.
selection-screen end of block bl1.
start-of-selection.
" Prüfen, ob die Vertretung schon existiert
select single * from hrus_d2 into ls_hrus_d2
where us_name = p_us and rep_name = p_rep.
if sy-subrc = 0.
" Hinweis: Diese Vertretung existiert bereits
write text-100.
if ls_hrus_d2-active is initial.
" Hinweis: Die persönliche Vertretung existiert bereits.
write text-110.
" Die Vertretung muss im SAP Office aktiviert werden.
write text-320.
else.
" Hinweis: Die Vertretung existiert bereits.
write text-120.
endif.
else.
" Eine neue Vertretung anlegen
if p_us eq p_rep.
" Was soll der Blödsinn?
write text-200.
else.
" neuen Datensatz definieren
clear ls_hrus_d2.
ls_hrus_d2-us_name = p_us.
ls_hrus_d2-rep_name = p_rep.
ls_hrus_d2-begda = sy-datum.
ls_hrus_d2-endda = '99991231'.
ls_hrus_d2-active = p_act.
" Benutzer prüfen
perform check_user using p_us.
if sy-subrc = 0.
perform check_user using p_rep.
if sy-subrc = 0.
"Benutzer ok
insert into hrus_d2 values ls_hrus_d2.
if sy-subrc = 0.
" Die persönliche Vertretung wurde angelegt.
write text-300.
if not p_act is initial.
" Die Vertretung wurde sofort aktiviert
write text-310.
else.
" Die Vertretung muss im SAP Office aktiviert werden.
write text-320.
endif.
else.
" Fehler: Vertretung konnte nicht angelegt werden.
write text-250.
endif.
else.
" Fehler: Vertreter ist nicht gültig.
write text-240.
endif.
else.
" Fehler: Benutzer ist nicht gültig.
write text-230.
endif.
endif.
endif.
form check_user using p_user.
select single * from usr02 into ls_usr02
where bname = p_user.
if sy-subrc = 0.
"gültig von
if not ls_usr02-gltgv is initial and ls_usr02-gltgv <= sy-datum.
sy-subrc = 1.
endif.
"gültig bis
if not ls_usr02-gltgb is initial and ls_usr02-gltgb > sy-datum.
sy-subrc = 2.
endif.
endif.
endform.