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.
Ich möchte in diesem Blog einfach meine Erfahrungen zum Thema SAP Basis und Solution Manager niederschreiben! Ich arbeite mit Linux und Oracle
Posts mit dem Label User werden angezeigt. Alle Posts anzeigen
Posts mit dem Label User werden angezeigt. Alle Posts anzeigen
Dienstag, 9. Juli 2013
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.
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
Beispiel User sperren oder entsperren:
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:
siehe auch den Hinweis https://service.sap.com/sap/support/notes/1663259
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.
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!
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!
Abonnieren
Posts (Atom)






