Berzeichnung Organisationseinheit auslesen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

Berzeichnung Organisationseinheit auslesen

Beitrag von Littlered (ForumUser / 64 / 0 / 0 ) »
Folgenderweise lese ich die Organisationseinheit aus dem HR eines Ma's aus:

Code: Alles auswählen.

attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'DEPARTMENT'.
attributes_wa-value = p0001-orgeh.
append attributes_wa to attributes.
Statt der Nummer würde ich aber gerne die dahinter steckende Bezeichnung haben wollen. In Transaktion PPOME habe ich gefunden dass es im p1000-stext abgelegt wird. Veränder ich den Code diesbezüglich, bleibt das Feld leer.

Wie krieg ich das hin, dass er statt der Nummer die Bezeichnug ausliest? die zu der Nummer gehört?

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von SilkeZ (ForumUser / 29 / 0 / 0 ) »
Hallo,

über SE11 indest Du in der PB0001 (Transpar. Tab. zur Struktur P0001) beim Feld ORGEH die Prüftabelle
T527X. In der sind die Org-Schlüssel mit den sprachenabhängigen Erläuterungen hinterlegt.

Gruß
SilkeZ

Beitrag von Littlered (ForumUser / 64 / 0 / 0 ) »
Und wie lässt sich da die Verbindung herstellen? Muss ich dann statt p0001-orgeh einfach T527x-orgtx nehmen? Aber woher stellt er die Queverbindung von Nummer zu TExt her? Kannst du mir das im Code demonstrieren?

Beitrag von Helmut (ForumUser / 19 / 0 / 0 ) »
Z.B.

Code: Alles auswählen.

tables: t527x.
...
select single orgtx from t527x into attributes_wa-value
  where sprsl  = sy-langu
    and orgeh  = p0001-orgeh
    and begda <= sy-datum
    and endda >= sy-datum.
if sy-subrc <> 0.
  ...
    

Beitrag von Gast ( / / 0 / 3 ) »
Hey vielen Dank! Juhuu!

Beitrag von Littlered (ForumUser / 64 / 0 / 0 ) »
Das hat super geklappt. Momentan grübel ich an einer Variante, dass er mir nur die als aktiv gekennzeichneten Benutzer extrahiert und nicht zusäzlich auch noch die inaktiven. Er soll also nur die Mitarbeiter mit dem Status 3 nehmen.

Ich komm an dieser Stelle ebenfalls nicht recht weiter. Irgendwie verursache ich Dumps.

Ich lese an einer Stelle mit "get pernr." die Personalnummern und fülle dann mit "ATTRIBUTES_WA-PERNR = p0001-pernr."

Daher nimmt er alle Benutzer und nicht nur die mit dem Status 3. Hat jemand nen Vorschlag?

Das ist der Report:

Code: Alles auswählen.


*&---------------------------------------------------------------------*
*& Report  Z_HR_LDAP                                                   *
*&                                                                     *
*&---------------------------------------------------------------------*
*& Dieser REport dient zur Extraktion beliebiger Mitarbeiter in die    *
*& korrespondierenden Benutzer des Active Directories. Die Identi-     *
*& fikation der Benutzer erfolgt dabei anhand der im HR-System         *
*& gespeicherten Personalnummern und dienen als LDAP-Suchfilter.       *
*& Im Zuge dieses Reports werden ausgewählte Daten extrahiert und      *
*& an die LDAP-Schnittstelle übergeben. Dazu dient der Aufruf des      *
*& Funktionsbausteins "SPLDAP_RECEIVE_ATTRIBUTES".                     *
*&                                                                     *
*& JEDE ÄNDERUNG ZIEHT EINE ANPASSUNG DES ATTRIBUT-MAPPINGS NACH SICH  *
*&---------------------------------------------------------------------*

REPORT  Z_HR_LDAP                               .

DATA: PLVAR            LIKE OBJEC-PLVAR,
      OBJID            LIKE HROBJECT-OBJID,
      KEYDA            LIKE PLOG-BEGDA,
      P_OBJECTS        LIKE HROBJECT OCCURS 0,
      P_OBJECTS_WA     LIKE HROBJECT,
      S_OBJECTS        LIKE HROBJECT OCCURS 0,
      S_OBJECTS_WA     LIKE HROBJECT,
      I1001_ITAB       LIKE P1001 OCCURS 0 WITH HEADER LINE,
      I1001_ITAB2      LIKE P1001 OCCURS 0 WITH HEADER LINE,
      LDAPDESTINATION LIKE LDA_TYPES-LDAPDESTINATION,
      LDAPSERVER LIKE LDA_TYPES-LDAPSERVER,
      ldapinitialrun like lda_types-flag,
      LOGSYS LIKE TBDLS-LOGSYS,
      ERRORS LIKE BAPIRET2 OCCURS 0,
      ERRORS_WA LIKE BAPIRET2,
      total_attrs_l TYPE lda_att_lt,
      total_attrs_x TYPE lda_att_xt.

* Struktur für kurze LDAP-Attribute
* Die Feldnamen müssen zur Basis-Struktur LDA-ATTR_S passen
*(für RFC-Aufruf)
TYPES:  BEGIN OF TS_LDAP_ATTR_S,
         PERNR LIKE LDA_TYPES-PERNR,
         ATTR_TAB LIKE LDA_TYPES-ATTR_TABNAME,
         ATTR_FIELD LIKE LDA_TYPES-ATTR_FIELDNAME,
         VALUE LIKE LDA_TYPES-VALUE_S,
        END OF TS_LDAP_ATTR_S.

data: attributes type ts_ldap_attr_s occurs 0,
      attributes_wa type ts_ldap_attr_s.

* Verwendete Tabellen
tables: pernr, rfcdes, t527x.
* Infotypen aus denen Informationen extrahiert werden
infotypes: 0001, 0002, 0006, 0017, 0105, 1000.
* 0001: Organisatorische Zuordnung
* 0002: Daten zur Person
* 0006: Anschriften
* 0017: Reiseprivilegien
* 0105: Kommunikation (Zugehöriger SAP-Benutzer)

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: Testlauf default 'X' AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK B1.

* Eingebaefelder für die Angabe des Servers an den die extrahierten
* Daten gesendet werden sollen sowie verwendete RFC-Verbindung
Parameters: LDAPSRV Default 'bitte eingeben' LIKE LDA_TYPES-LDAPSERVER,
            LDAPCON Default 'bitte eingeben' LIKE rfcdes-rfcdest.
* ---------------------------------------------------------------------
at selection-screen.

clear: p_objects[], s_objects[], attributes[].

* aktuelle PLanvariante holen
CALL FUNCTION 'RH_GET_PLVAR'
 IMPORTING
  PLVAR = PLVAR
 EXCEPTIONS
  no_plvar = 1
  OTHERS = 2.
if sy-subrc <> 0.
 MESSAGE E015(HRLDAP).
endif.
KEYDA = sy-datum.

* --------------------------------------------------------------------
* Füllen der internen Tabellen (infotypes: ...) zum Zeitpunkt get pernr
get pernr.

* Das Makro rp_provide-from-last liest den letzten in dem
* Auswahlzeitraum gültigen Satz, keyda = festgesetztes Startdatum und
* Enddatum

rp-provide-from-last p0001 '' keyda keyda.
rp-provide-from-last p0002 '' keyda keyda.
rp-provide-from-last p0006 '' keyda keyda.
rp-provide-from-last p0017 '' keyda keyda.
rp-provide-from-last p0105 '' keyda keyda.
rp-provide-from-last p1000 '' keyda keyda.

ATTRIBUTES_WA-PERNR = p0001-pernr.

*---------------------------------------------------------------------------------*
*                                                                                 *
*           Abschnitt Datenextraktion für Identifikaton der Benutzer              *
*                                                                                 *
*---------------------------------------------------------------------------------*

* Extraktion der Personalnummer für den Suchfilter
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'PERNR'.
SHIFT p0001-pernr LEFT DELETING LEADING '0'.
attributes_wa-value = p0001-pernr.
append attributes_wa to attributes.

*sapUsername
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'SAPUSERNAME'.
if p0105-uname NE ' '.
  attributes_wa-value = p0105-usrid.
  append attributes_wa to attributes.
else.
  attributes_wa-value = 0.
  append attributes_wa to attributes.
endif.


*Organisationseinheit
select single orgtx from t527x into attributes_wa-value
  where sprsl  = sy-langu
    and orgeh  = p0001-orgeh
    and begda <= sy-datum
    and endda >= sy-datum.
  append attributes_wa to attributes.
if sy-subrc <> 0.
endif.

end-of-selection.

*##################################################################################

* Bestimmen des derzeitigen logischen Systems
CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
 IMPORTING
  OWN_LOGICAL_SYSTEM = LOGSYS
 EXCEPTIONS
  OWN_LOGICAL_SYSTEM_NOT_DEFINED = 1
  OTHERS = 2.

IF SY-SUBRC NE 0.
* TODO: Komprimierung sy-mandt: 3 -> 2 Stellen !!!
  CONCATENATE SY-SYSID SY-MANDT INTO LOGSYS.
ENDIF.

loop at attributes into attributes_wa.
 write: / ATTRIBUTES_WA-PERNR , attributes_wa-attr_tab.
 write: attributes_wa-attr_field ,attributes_wa-value.
endloop.

IF Testlauf = 'X'.
 EXIT.
ENDIF.

*#################################################################################
* Extrahierte Attribute an den LDAP-fähigen Verzeichnisserver übergeben
* dazu: Übergabe der extrahierten Attribute als Wertemenge an den
* Funktionsbaustein SPLDAP_RECEIVE_ATTRIBUTES

CALL FUNCTION 'SPLDAP_RECEIVE_ATTRIBUTES'
* DESTINATION LDAPDEST
EXPORTING
     LOGSYS = LOGSYS
     SERVERID = LDAPSRV
     ATTRIBUTES_S = attributes[]
     INITIAL_RUN = LDAPINITIALRUN
      ATTRIBUTES_L = TOTAL_ATTRS_L[]
      ATTRIBUTES_X = TOTAL_ATTRS_X[]
IMPORTING
 RETURN = ERRORS[].

IF NOT ERRORS[] IS INITIAL.
  READ TABLE ERRORS INDEX 1 INTO ERRORS_WA.
  MESSAGE ID ERRORS_WA-ID TYPE ERRORS_WA-TYPE
   NUMBER ERRORS_WA-NUMBER
   WITH ERRORS_WA-MESSAGE_V1 ERRORS_WA-MESSAGE_V2
        ERRORS_WA-MESSAGE_V3 ERRORS_WA-MESSAGE_V4.
ENDIF.                            .


Beschäftigungsstatus 3

Beitrag von Helmut (ForumUser / 19 / 0 / 0 ) »
Da du mit der logischen Datenbank pnp arbeitest, kannst du am einfachsten auf dem Selektionsbildschirm mit 'weitere Selektionen' den 'Status Beschäftigung' als Selektionskriterium hinzufügen (falls nicht bereits vorhanden) und damit den Status 3 selektieren.

Alternativ kannst du im Programm zusätzlich den Infotypen 0000 einbauen und dann p0000-stat2 = '3' abfragen.

Beitrag von Littlered (ForumUser / 64 / 0 / 0 ) »
mhm das mit den Selektionsvariablen hab ich versucht. Komischerweise übergibt er aber trotzdem alle Mitarbeiter auch die ausgetretenen an das ADS.

Beitrag von Helmut (ForumUser / 19 / 0 / 0 ) »
Hast du bei der Selektion den Zeitraum eingeschränkt ? Wenn nicht, werden natürlich auch solche Personen selektiert, die irgendwann einmal den Status 3 hatten.

Seite 1 von 1

Vergleichbare Themen

6
Antw.
2832
Views
Flexible Mitarbeiterliste und Organisationseinheit
von ginotico » 26.07.2007 09:26 • Verfasst in Human Resources
1
Antw.
5020
Views
Zusammenhang Organisationseinheit - Kostenstellen
von ginotico » 18.07.2007 11:19 • Verfasst in Human Resources
1
Antw.
1320
Views
UWL Auslesen
von SaskuAc » 21.03.2018 15:39 • Verfasst in ABAP® Core
2
Antw.
2469
Views
Prozess-ID auslesen
von Marwin » 31.03.2006 10:53 • Verfasst in ABAP® Core
8
Antw.
3713
Views
TableView auslesen?
von Andy » 12.09.2005 09:41 • Verfasst in Web-Dynpro, BSP + BHTML

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1640
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8242