Posts mit dem Label User werden angezeigt. Alle Posts anzeigen
Posts mit dem Label User werden angezeigt. Alle Posts anzeigen

Dienstag, 9. Juli 2013

Massenlöschen von Aktivitätsgruppen / Rollen - Transaktion PFCG

Symptom

Sehr viele nicht mehr benötigte Rollen sollen aus Übersichtsgründen gelöscht werden. Im Standard ist dafür keine geeignete Funktion vorgesehen.

Weitere Begriffe
PFCG Massenlöschen Performance

Ursache und Voraussetzungen
Nutzung des Profilgenerators,
hohe Anzahl zu löschender Aktivitätsgruppen im System

Lösung
Der beigefügte, in der Anlage beigefügte, Report ist ein Vorschlag zur Implementierung, einer im Standard nicht vorhandenen Funktionalität.

Das Coding und die Nutzungsmöglichkeiten sind grundsätzlich in der eigenen Umgebung nochmals zu prüfen, um ungewollte Löschungen zu vermeiden.

Vor der Anwendung des Reports sollte über die PFCG ein Transportauftrag mit allen Aktivitätsgruppen erstellt und freigegeben werden, um im Schadensfall (ungewolltes Löschen) den letzten Stand herstellen zu können.

Quelle SAP

Hinweis 313587 - Massenlöschen von Aktivitätsgruppen


REPORT Z_DEL_AGR .
*--------------------------------------------------------------*
* Version valid from 4.5b - 7.xx                               *
*--------------------------------------------------------------*
TABLES :  AGR_DEFINE.
DATA: BEGIN OF ACTTAB OCCURS 0,
        AGR_NAME LIKE AGR_DEFINE-AGR_NAME,
      END OF ACTTAB.

SELECT-OPTIONS ACTGRP FOR AGR_DEFINE-AGR_NAME.
PARAMETERS: TEST(1) DEFAULT 'X'.

* F4 Hilfe für die Aktivitäsgruppe
AT SELECTION-SCREEN ON VALUE-REQUEST FOR ACTGRP-LOW.
  DATA: SELECTED_VALUE LIKE AGR_DEFINE-AGR_NAME.
  CALL FUNCTION 'PRGN_ACTIVITY_GROUPS_F4_HELP'
       IMPORTING
            SELECTED_VALUE             = SELECTED_VALUE
       EXCEPTIONS
            NO_ACTIVITY_GROUP_SELECTED = 1
            OTHERS                     = 2.
  IF SY-SUBRC = 0.
    ACTGRP-LOW = SELECTED_VALUE.
  ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR ACTGRP-HIGH.
  DATA: SELECTED_VALUE LIKE AGR_DEFINE-AGR_NAME.
  CALL FUNCTION 'PRGN_ACTIVITY_GROUPS_F4_HELP'
       IMPORTING
            SELECTED_VALUE             = SELECTED_VALUE
       EXCEPTIONS
            NO_ACTIVITY_GROUP_SELECTED = 1
            OTHERS                     = 2.
  IF SY-SUBRC = 0.
    ACTGRP-HIGH = SELECTED_VALUE.
  ENDIF.

START-OF-SELECTION.

  SELECT AGR_NAME FROM AGR_DEFINE
         INTO  CORRESPONDING FIELDS OF TABLE ACTTAB
         WHERE AGR_NAME IN ACTGRP.

  LOOP AT ACTTAB.
    CALL FUNCTION 'PRGN_AUTH_ACTIVITY_GROUP'
         EXPORTING
              ACTIVITY_GROUP   = ACTTAB-AGR_NAME
              ACTION_DELETE    = 'X'
*             MESSAGE_OUTPUT   = 'X'
         EXCEPTIONS
              NOT_AUTHORIZED   = 1
              OTHERS           = 2.

    IF SY-SUBRC EQ 0.
      IF TEST EQ SPACE.
        WRITE : / 'Delete : ', ACTTAB.
        CALL FUNCTION 'PRGN_ACTIVITY_GROUP_DELETE'
             EXPORTING
                  ACTIVITY_GROUP                = ACTTAB-AGR_NAME
                  show_dialog                   = ' '
                  ENQUEUE_AND_TRANSPORT         = 'X'
             EXCEPTIONS
                  NOT_AUTHORIZED                = 1
                  TRANSPORT_CHECK_PROBLEM       = 2
                  TRANSPORT_CANCELED_OR_PROBLEM = 3
                  ONE_OR_MORE_USERS_ENQUEUED    = 4
                  FOREIGN_LOCK                  = 5
                  USER_CANCELS_ACTION           = 6
                  OTHERS                        = 7.
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ELSE.
        WRITE : / 'Test Delete : ', ACTTAB.
      ENDIF.
    ELSE.
      WRITE : / 'Missing authorization for :', ACTTAB-AGR_NAME.
    ENDIF.
  ENDLOOP.                                                                          

Freitag, 28. Juni 2013

Security Policy (Passwort Richtlinie) im ABAP Stack ab 7.31

Im ABAP Stack werden die Passwort Richtlinien in den Profil Parameter (RZ10) definiert - das gilt dann für alle User im System die z.B. den Typ DIALOG zur Anmeldung verwenden.



Ab 7.31 gibt es in der SU01 ein neues Feld:











Über diese Richtlinie kann man dann für User oder Usergruppen eigene Richtlinien definieren:














Diese Richtlinien in der Transaktion SU01 übersteuern den Profil Parameter.


Mittwoch, 9. Januar 2013

Security Optimization Self Service im Solution Manager 7.1

Es gibt vom Security Optimization Service eine neue Version in Form eines Guided Self Service - das gibt es schon länger aber erst jetzt konnte ich mir das genauer ansehen und muss sagen das ist wirklich PERFEKT geworden!

Im Workcenter:



das Service Sicherheitsoptimierung - Sitzung (GSS_SEC) auswählen


Achtung das Service SAP System Security Optimization (SEC_SELF) ist veraltet!

Danach erhält man sofort das Guided Self Service in der neuen Form:


Der Fragebogen und die Datensammlung in der ST14 werden aus den einzelnen Steps direkt ausgeführt  - man erstellt somit den Kompletten Report im Solman ohne sich am Analyse System anzumelden.

Das Ergebnis ist wie beim Vorgänger absolut brauchbar!

Beispiel User sperren oder entsperren:


und dazu die Erklärung inkl. Objekte:






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.

Freitag, 24. Juli 2009

Worflow Inbox von einem User auslesen

Es kann schon einmal passieren das ein User in den Urlaub geht und vergisst eine Weiterleitung
im Workflow zu definieren - oder jemand wird plötzlich Krank und derem Workitems müssen
an seinen Vertreter weitergeleitet werden.

Mit dem Funktionsbaustein RH_LOCAL_INBOX_GET kann man die Workflowinbox von einem
User auslesen und die Workitems dann mit der Transaktion SWIA weiterleiten.

RH_LOCAL_INBOX_GET mit der SE37 starten - User und Sprache eingeben und ausführen!