Mittwoch, 26. August 2009

Vertretung im Workplace SBWP nachträglich pflegen

In der Tabelle HRUS_D2 werden die Vertretungen für User gespeichert - leider gibt es dazu keinen Pflegeview und somit kann ein Administrator hier nur beauskunften ob ein User der im Urlaub ist auch seine Vertretung aktiv hinterlegt hat!

Mit diesem einfachen Report kann man den Vertreter als Administrator hinterlegen - in manchen Fällen ist das sehr sehr hilfreich (besonders bei Krankeit eines Users usw.)

*&---------------------------------------------------------------------*
*& Report Z_ACTIVATE_SUBSTITUTE
*&
*&---------------------------------------------------------------------*
*&
*& Workflow Verterter aktiveren
*&---------------------------------------------------------------------*

REPORT Z_ACTIVATE_SUBSTITUTE.

PARAMETERS:

P_usern1 TYPE usr02-bname obligatory,
P_vertr Type usr02-bname obligatory,
P_begdt type BEGDA obligatory default sy-datum,
P_enddt TYPE ENDDA OBLIGATORY,
P_prof TYPE T77RP-REPPR DEFAULT 'ALL' OBLIGATORY,
p_active like hrus_d2-active.

PARAMETERS:

p_insert radiobutton group g1,
p_delete radiobutton group g1.

constants: c_true value 'X',
c_false value space.

data: gs_hrus_d2 like hrus_d2,
gflg_error.

START-OF-SELECTION.

perform check_data changing gflg_error.

if gflg_error = c_false.
clear gs_hrus_d2.
gs_hrus_d2-us_name = p_usern1.
gs_hrus_d2-rep_name = p_vertr.
gs_hrus_d2-begda = P_begdt.
gs_hrus_d2-endda = P_enddt.
gs_hrus_d2-active = p_active.
gs_hrus_d2-REPPR = p_prof.

case c_true.
when p_insert.
insert into hrus_d2 values gs_hrus_d2.
if sy-subrc = 0.
write: 'Vertreter erfolgreich angelegt.'(S01).
else.
write: 'Fehler bei insert!'(E01).
endif.
when p_delete.
delete from hrus_d2 where us_name = p_usern1
and rep_name = p_vertr.
if sy-subrc = 0.
write:/ 'Vertretung erfolgreich gelöscht.'(S02).
else.
write:/ 'Fehler beim löschen 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_enddt < p_begdt.
write:/ 'Enddatum muss größer Beginndatum sein'.
oflg_error = c_true.
endif.

select single bname from usr02 into ld_uname
where bname = p_usern1.
if sy-subrc ne 0.
write:/ 'Benutzer', p_usern1, 'nicht vorhanden'.
oflg_error = c_true.
endif.

select single bname from usr02 into ld_Uname
where bname = p_vertr.
if sy-subrc ne 0.
write:/ 'Benutzer', p_vertr, 'nicht vorhanden'.
oflg_error = c_true.
endif.

format color col_normal.
ENDFORM.
"WRITE: P_usern2, 'wurde als Vertretung für', P_usern1, 'von', P_begdt, 'bis', P_enddt, 'aktiviert'. ULINE.
"WRITE: 'Profil:', P_prof.
"ULINE.

3 Kommentare:

  1. Sehr nützlicher Report !

    AntwortenLöschen
  2. Hinweis: Vertreterpflege geht auch recht einfach mit dem FuBa RH_SUBSTITUTES_LIST. Für diesen die Testumgebung aufrufen und die Parameter US_TYPE='US' und US_ID= füllen (in älteren Releases auch den Parameter MAINTAINANCE_FLAG='X' setzen). Beim Ausführen bekommt man den ganz normalen Vertretungsdialog als Popup.

    AntwortenLöschen
  3. Das ganze gibt es auch schon als SAP Transaktion im Standard: RMPS_SET_SUBSTITUTE

    AntwortenLöschen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.