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.