[58171] in SAPr3-news

home help back first fref pref prev next nref lref last post

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


home help back first fref pref prev next nref lref last post