Personalnummern nach Berechtigung selektieren

Personalnummern nach Berechtigung selektieren

Postby Amina4654 » Mon Mar 13, 2017 8:31 pm

Hallo allerseits,

ich brauche einen Funktionsbaustein, der mir sämtliche Personalnummern zurückliefert, bei denen ich Leseberechtigungen auf einen bestimmten Infotypen habe. Gibt es für diese Art von Anforderung etwas Vorgefertigtes oder zumindest Werkzeuge aus der Trickkiste? Oder muss man so etwas komplett selbst bauen? Falls letzteres: wie geht man das am besten an?

Danke!
Amina4654
.
.
 
Posts: 7
Joined: Fri Aug 09, 2013 5:35 pm

Re: Personalnummern nach Berechtigung selektieren

Postby Tron » Tue Mar 14, 2017 7:51 pm

Moin.
Also ich habe einen Quickview genommen bestehend aus einem Tabellenjoin mit den Tabellen:
AGR_1251 (Objekte einer Rolle)
auf
AGR_DEFINE (Kopftabelle mit Gültigkeitszeitraum)
auf
AGR_USERS (Zuordnung Rolle Sapuser)
auf
PA0105 (Verbindung SAPuser zu PERNR).

Selektionsfelder der AGR_1251
AGR_1251-OBJECT = P_ORGIN / P_PERNR
AGR_1251-FIELD = INFTY
AGR_1251-LOW = <INFOTYPE(n)>

.... jetzt DU :wink:
gruß Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Re: Personalnummern nach Berechtigung selektieren

Postby Amina4654 » Wed Mar 29, 2017 2:15 pm

Servus!

Danke für die Antwort. Also im Klartext: alles selbst basteln.
Die Anforderungen waren in meinem Fall (wie so üblich) noch einen Tick komplexer.

Meine Lösung sieht inzwischen so aus:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.     CALL FUNCTION 'SUSR_USER_AUTH_FOR_OBJ_GET'
  2.       EXPORTING
  3.        user_name           = iv_user
  4.         sel_object          = lc_p_orgxxcon
  5.       TABLES
  6.         values              = lt_usvalues
  7.       EXCEPTIONS
  8.         user_name_not_exist = 1
  9.         not_authorized      = 2
  10.         internal_error      = 3
  11.         OTHERS              = 4.
  12.     IF sy-subrc <> 0.
  13.       RETURN. " Mit leerem Ergebnis aussteigen
  14.     ENDIF.
  15.  
  16.     SORT lt_usvalues BY auth ASCENDING.
  17.     LOOP AT lt_usvalues INTO wa_usvalues.
  18.       " Berechtigungswerte zerpflücken
  19.       " (...)
  20.     ENDLOOP.
  21.  
  22.     " Am Ende dieser Schleife habe ich eine Liste von Sachbearbeitergruppen (SBMOD)
  23.     " und Zeitsachbearbeiter-Nummern (SACHZ), mit denen ich die eigentlichen Personen selektiere
  24.  
  25.     LOOP AT it_sachz ASSIGNING <sachz>.
  26.  
  27.       SELECT  pernr FROM  pa0001 INTO lv_pernr
  28.              WHERE  endda  >= iv_stichtag
  29.              AND    begda  <= iv_stichtag
  30.              AND    sachz  = <sachz>-sachz
  31.              AND    sbmod  = <sachz>-sbmod.
  32.  
  33.       " Nicht vergessen, hier nochmal explizit die Berechtigungen zu prüfen!
  34.       " Es gibt ja noch ein paar weitere Berechtigungskriterien...
  35.       CALL FUNCTION 'HR_CHECK_AUTHORITY_INFTY'
  36.         EXPORTING
  37.           pernr            = lv_pernr
  38.           infty            = lv_infty
  39.           subty            = lv_subty
  40.           begda            = iv_stichtag
  41.           endda            = iv_stichtag
  42.           level            = 'R'
  43.           uname            = lv_user
  44.         EXCEPTIONS
  45.           no_authorization = 1
  46.           internal_error   = 2
  47.           OTHERS           = 3.
  48.       IF sy-subrc <> 0.
  49.         " Wenn keine Berechtigung, dann Pernr überspringen
  50.         CONTINUE.
  51.       ENDIF.
  52.  
  53.         APPEND INITIAL LINE TO et_pernr ASSIGNING <pernr>.
  54.         <pernr>-pernr = lv_pernr.
  55.       ENDSELECT.
  56.  
  57.     ENDLOOP.
  58.  
  59.     " Fertig - jetzt stehen in et_pernr die gewünschten Personalnummern.
  60.  
  61.  
  62.  
GeSHi ©
Amina4654
.
.
 
Posts: 7
Joined: Fri Aug 09, 2013 5:35 pm


Return to Human Resources

Who is online

Users browsing this forum: No registered users and 6 guests