Chat now with support
Chat mit Support

Identity Manager 8.2 - Administrationshandbuch für die Anbindung einer SAP R/3-Umgebung

Verwalten einer SAP R/3-Umgebung Einrichten der Synchronisation mit einer SAP R/3-Umgebung Basisdaten für die Verwaltung einer SAP R/3-Umgebung Basisdaten zur Benutzerverwaltung SAP Systeme SAP Mandanten SAP Benutzerkonten SAP Gruppen, SAP Rollen und SAP Profile SAP Produkte Bereitstellen der Daten für die Systemvermessung Berichte über SAP Objekte Auflösen einer Zentralen Benutzerverwaltung Anhang: Konfigurationsparameter für die Verwaltung einer SAP R/3-Umgebung Anhang: Standardprojektvorlage für die Synchronisation einer SAP R/3-Umgebung Anhang: Referenzierte SAP R/3-Tabellen und BAPI-Aufrufe Anhang: Beispiel für eine Schemaerweiterungsdatei

Schemaerweiterungsdatei erstellen

In der Schemaerweiterungsdatei werden alle Schematypen definiert, mit denen das Konnektorschema erweitert werden soll. Die Schemaerweiterungsdatei ist eine XML-Datei, die einen identischen Aufbau wie das Konnektorschema hat. Sie beschreibt die Definitionen für Tabellenabfragen und BAPI-Aufrufe für die neuen Schematypen. Wenn ein neuer Schematyp denselben Name hat, wie ein bereits vorhandener Schematyp, wird die Erweiterung ignoriert.

Die Datei gliedert sich in drei Hauptbereiche:

  • Definitionsteil für Tabellen
  • Definitionsteil für Funktionen
  • Definitionsteil für Schematypen

Grundsätzlich müssen zuerst alle Tabellen und Funktionen, die zum Zugriff auf Daten für die zu definierenden Schematypen benötigt werden, deklariert werden. Anschließend können im Definitionsteil für Schematypen die neuen Schematypen definiert werden. Funktionen und Tabellen dürfen dabei in verschiedenen Schematypdefinitionen verwendet werden. Eine Schematypdefinition muss mindestens den Aufruf für eine Objektliste enthalten.

Struktur der Schemaerweiterungsdatei

<?xml version="1.0" encoding="utf-8" ?>

<SAP>

<Tables>

...

</Tables>

<Functions>

...

</Functions>

<SAPExtendedSchematypes>

...

</SAPExtendedSchematypes>

</SAP>

Vordefinierte Variablen

Im Definitionsteil für Tabellen und Funktionen können Variablen verwendet werden. Nutzbar sind alle Systemvariablen, die der SAP-Baustein RFC_READ_TABLE kennt.

Tabelle 15: Beispiele für Systemvariablen
Variable Beschreibung
sy-langu Aktuell gewählte Anmeldesprache.
sy–datum Aktuelles Datum.
sy-mandant Aktueller Mandant der Anmeldung.

Außerdem können Variablen genutzt werden, die der SAP R/3 Konnektor kennt, beispielsweise aus der Definition von Prozessparametern.

Tabelle 16: Vordefinierte Variablen des SAP R/3 Konnektors
Variable Beschreibung
$Value$ Eingabeparameter des One Identity Manager Service-Aufrufs.
$Mandt$ Nummer des aktuellen Mandanten.
$Date$ Aktuelles Datum.
Detaillierte Informationen zum Thema

Tabellen definieren

Im Definitionsteil für Tabellen (Tables) werden die Tabellen und Spalten selektiert, die zum Zugriff auf die Daten für die zu definierenden Schematypen benötigt werden. Der SAP R/3 Konnektor benötigt für jede Tabelle eine Definition zum Laden der schlanken Objektliste. Dafür definieren Sie genau die Spalten, die der SAP R/3 Konnektor bereits beim Laden der zu synchronisierenden Objekte benötigt. Beim Einzelobjektzugriff werden immer alle Spalten der Tabelle geladen.

HINWEIS: Diese zusätzlichen Tabellenzugriffe werden unter Nutzung des von SAP bereitgestellten Funktionsbausteines RFC_READ_TABLE ausgeführt. Sollten Fehler in der Funktion dieses Funktionsbausteins dazu führen, dass Tabellenzugriffe nicht korrekt ausgeführt werden können, empfehlen wir Ihnen, einen remote-fähigen RFC-Funktionsbaustein im konkreten SAP System für die konkrete Tabelle im Kundennamensraum selbst zu erstellen. Dieser Funktionsbaustein kann im Definitionsteil für Funktionen definiert und verwendet werden.

Tabelle 17: Tabellendefinition

Attribut

Beschreibung

Definition

Symbolischer Name zur Verwendung der Definition.

TableName

Tabellenname in der SAP Datenbank.

Key

Schlüsselbegriffe zur Bildung eines definierten Namens. Die Angabe von mehreren Werten als kommagetrennte Liste ist möglich.

X500

Kürzel für die Schlüsselbegriffe im Attribut Key. Die Angabe von mehreren Werten als kommagetrennte Liste ist möglich.

SQL

Einschränkende Where-Klausel.

HINWEIS: Es gibt einige Beschränkungen bei der Auswertung der SQL-Operatoren im SAP R/3-System. Für ein korrektes Ergebnis beachten Sie folgende Regeln:

Distinct

Aufzählung der Spalten, über die insgesamt ein Distinct–Filter wirkt (als kommagetrennte Liste).

Load

Spalten, die zur Ladezeit der Objektliste bereits zu laden sind. Diese Spalten können beispielsweise zur Bildung des Anzeigenamens (DisplayPattern) des Schematyps, als Revisionszähler oder als Eingabeparameter in einer Funktion verwendet werden.

Wenn die Objektliste aus einer Tabelle, aber die Einzelobjekte aus einer Funktion geladen werden sollen, müssen hier alle Spalten angegeben werden, die innerhalb des Synchronisationsprojekts im Mapping verwendet werden sollen.

WICHTIG: Jede Spalte, die beim Laden der Objektliste zusätzlich geladen werden muss, erzeugt zusätzliche Last im One Identity Manager. Bei großen Datenmengen kann die Synchronisation dadurch deutlich langsamer werden. Geben Sie hier nur Spalten an, die für die weitere Verarbeitung der Objekte zwingend benötigt werden.

Für den Einzelobjektzugriff werden keine Angaben benötigt.

Hinweise
  • Es können mehrere Tabellendefinitionen mit verschiedenen symbolischen Namen, die sich auf dieselbe Tabelle in der SAP Datenbank beziehen, definiert werden.

  • Schlüsselspalten werden immer geladen. Sie sollen daher nicht im Attribut Load angegeben werden.

  • Das Attribut Load wirkt nur beim Laden der Objektliste. Beim Einzelobjektzugriff über eine Tabelle werden immer alle Spalten der Tabelle geladen.

  • Als Operatoren in der Where-Klausel sind zulässig:

    Tabelle 18: Zulässige Operatoren im SQL-Attribut
    Operator Funktion/Beispiel
    EQ =
    NE <>
    GT >
    LT <
    GE >=
    LE <=
    BETWEEN ENDDA BETWEEN '20090101' AND '20090131'
  • Eine Tabellendefinition kann zusätzlich einen Mapping-Block enthalten. Dieser Block dient der Umsetzung von Parametern, die in Where-Klauseln verwendet werden sollen, aber in der Objektliste mit einem anderen Spaltennamen selektiert wurden.

    Im Beispiel würde beim Laden von Einzelobjekten aus der Tabelle RSECUSERAUTH jedes Auftreten der Variable $BNAME$ mit dem aktuellen Wert der Spalte USERNAME ersetzt werden, bevor die SQL-Selektion ausgeführt wird. Die Spalte USERNAME muss zuvor in einer Objektliste geladen worden sein.

    Tabellendefinitionen mit einem Mapping werden in erster Linie zum Laden von Einzelobjekten genutzt.

  • Neben den selbst definierten Parametern können in Where-Klauseln auch vordefinierte Variablen genutzt werden. Weitere Informationen finden Sie unter Schemaerweiterungsdatei erstellen.

Beispiel:

<Tables>

<TABLE Definition = "HRP1001-Table" TableName="HRP1001" Key="OTJID,SUBTY,BEGDA,ENDDA" X500="CN,OU,OU,OU" SQL="MANDT = sy-mandt" Load="VARYF" Distinct="OTJID,SUBTY,VARYF" />

<TABLE Definition = "HRP1000-Table" TableName="HRP1000" Key="OTJID,LANGU,BEGDA,ENDDA" X500="CN,OU,OU,OU" SQL="MANDT = sy-mandt" Load="" Distinct="OTJID" />

<TABLE Definition = "RSECUSERAUTH-SingleUser" TableName="RSECUSERAUTH" Key="AUTH" X500="CN" SQL="UNAME = '$BNAME$'" Load="" >

<Mapping>

<Data ParameterName = "$BNAME$" PropertyName = "USERNAME" />

</Mapping>

</TABLE>

</Tables>

Verwandte Themen

Funktionen definieren

Im Definitionsteil für Funktionen (Functions) werden die Schnittstellen zu den BAPI-Funktionen beschrieben, die zum Zugriff auf die Daten für die zu definierenden Schematypen benötigt werden.

Tabelle 19: Funktionsdefinition
Attribut Beschreibung
Definition Symbolischer Name zur Verwendung der Definition.
FunctionName Funktionsname im SAP R/3-System.
OutStructure Name einer SAP–Struktur, die als Rückgabewert geliefert wird. (Optional)
Key Schlüsselbegriffe zur Bildung eines definierten Namens. Die Angabe von mehreren Werten als kommagetrennte Liste ist möglich.
X500 Kürzel für die Schlüsselbegriffe im Attribut Key. Die Angabe von mehreren Werten als kommagetrennte Liste ist möglich.

Im optionalen Mapping-Block wird definiert, wie die Werte an die Parameter des Funktionsaufrufs übergeben werden. Dazu muss vor dem Funktionsaufruf eine Objektliste erzeugt werden, aus deren Eigenschaften die Parameter für den Funktionsaufruf belegt werden können. Im Beispiel unten ist BNAME eine Eigenschaft, die über die Objektliste der Tabelle USR02 ermittelt wird.

An die Parameter können vordefinierte Variablen übergeben werden. Weitere Informationen finden Sie unter Schemaerweiterungsdatei erstellen. Außerdem ist es möglich, einem Funktionsparameter einen festen Wert zu übergeben. Dafür ist die folgende Notation vorgesehen.

<Data ParameterName = "<Name>" PropertyName = "VALUE=<fester Wert>" />

Beispiel:

<Tables>

<TABLE Definition = "USR02-Table" TableName="USR02" Key="BNAME" X500="CN" SQL="MANDT = '$MANDT$'" Load="" />

</Tables>

<Functions>

<Function Definition = "USER GET" FunctionName="BAPI_USER_GET_DETAIL" OutStructure = "" Key ="USERNAME" X500 ="CN">

<Mapping>

<Data ParameterName = "USERNAME" PropertyName = "BNAME" />

</Mapping>

</Function>

</Functions>

Verwandte Themen

Schematypen definieren

Im Definitionsteil für Schematypen (SAPExtendedSchematypes) werden die Schematypen definiert, die im SAP Schema vorhanden sind und mit denen das Konnektorschema erweitert werden soll. Als Name wird der im Attribut Name vergebene Bezeichner verwendet. Dieser Bezeichner muss im erweiterten Konnektorschema eindeutig sein.

Tabelle 20: Schematypdefinition

Attribut

Beschreibung

Bem

Interne Beschreibung.

Name

Name des Schematyps im erweiterten Konnektorschema.

DisplayPattern

Definition eines Anzeigemusters für die Anzeige der Objekte im Synchronization Editor (beispielsweise im Zielsystembrowser oder bei der Definition der Schemaklassen). (Optional)

Es können nur die Spalten verwendet werden, die in der Tabellendefinition geladen wurden (Attribute Key oder Load).

Wenn kein DisplayPattern definiert ist, wird der definierte Name des Objekts als Anzeigewert verwendet.

HINWEIS: Mehrwertige Spalten (MVP) dürfen nicht im DisplayPattern verwendet werden.

WICHTIG: Jede Spalte, die beim Laden der Objektliste zusätzlich geladen werden muss, erzeugt zusätzliche Last im One Identity Manager. Bei großen Datenmengen kann die Synchronisation dadurch deutlich langsamer werden. Geben Sie hier nur Spalten an, die für die weitere Verarbeitung der Objekte zwingend benötigt werden.

AddRevisionTimeOffset

Gibt an, ob an den Revisionszähler die Uhrzeit 23:59:00 angefügt werden soll. (Optional)

Sie können das Attribut nutzen, wenn der Revisionszähler nur ein Änderungsdatum und keine Uhrzeit enthält. Damit werden bei der Synchronisation auch solche Objekte berücksichtigt, die nach dem vorherigen Synchronisationslauf, aber noch am selben Tag geändert wurden.

RevisionProperty

Name einer Eigenschaft, welche den Revisionszähler enthält. (Optional)

ListObjectsDefinition

Funktions- oder Tabellendefinition zum Aufruf einer Objektliste.

ReadObjectDefinition

Funktions- oder Tabellendefinition zum Aufruf eines Einzelobjekts.

InsertObjectDefinition

Funktionsaufruf zum Erzeugen des neuen Objekts. (Optional)

InsertCommitDefinition

Funktionsaufruf, der nach der Funktion zum Erzeugen des neuen Objekts ausgeführt werden soll. (Optional)

WriteObjectDefinition

Funktionsaufruf zum Schreiben des Objekts. (Optional)

WriteCommitDefinition

Funktionsaufruf, der nach der Funktion zum Schreiben des neuen Objekts ausgeführt werden soll. (Optional)

DeleteObjectDefinition

Funktionsaufruf zum Löschen des Objekts. (Optional)

DeleteCommitDefinition

Funktionsaufruf, der nach der Funktion zum Löschen des neuen Objekts ausgeführt werden soll. (Optional)

ParentType

Kontext, in dem der Schematyp gilt. (Optional)

Standardmäßig sind die Schematypen mandantenbezogen (ParentType="SAPMANDANT"). Wenn der neue Schematyp in allen Mandanten eines SAP R/3-Systems gilt, geben Sie den ParentType mit dem Wert SAPSYSTEM an.

Wenn das Attribut nicht definiert ist, ist der Schematyp mandantenbezogen.

Eine Schematypdefinition muss mindestens den Aufruf einer Objektliste (Attribut ListObjectsDefinition) enthalten. Dabei kann eine Tabellen- oder eine Funktionsdefinition angegeben werden. Um ein Einzelobjekt aufzurufen (Attribut ReadObjectDefinition), muss zuvor die Objektliste geladen worden sein. Listenaufruf und Einzelobjektaufruf können sich auf unterschiedliche Tabellen beziehen, jedoch müssen die Schlüsselspalten für die Identifikation der Einzelobjekte entweder gleichnamig sein oder per Mapping in der Tabellendefinition für den Einzelobjektaufruf bekannt gegeben worden sein. Im Beispiel unten werden zu einem Objekt aus der Tabelle USR02 die Einzelobjekte aus der Tabelle RSECUSERAUTH ermittelt. Die Schlüsselspalten zur Identifikation der Objekte sind USR02.BNAME und RSECUSERAUTH.UNAME. Die Spalten haben unterschiedliche Namen und werden daher über den Parameter $BNAME$ gemappt.

Es ist möglich, einen Properties–Block zu definieren, in welchem beliebig viele weitere Eigenschaften eines Objekts und die Art des Zugriffs auf diese Eigenschaften deklariert werden können. Eine einzelne Eigenschaft wird mittels Property-Tag definiert, welches die folgenden Attribute haben kann.

Tabelle 21: Eigenschaftsdefinition
Attribut Beschreibung
Name Name der Eigenschaft. Er muss innerhalb des Schematyps eindeutig sein.
Description Beschreibung der Eigenschaft.
ListFunction Funktion oder Tabelle zum Aufruf aller Werte.
AddFunction Funktion zum Hinzufügen eines Wertes. (Optional)
DelFunction Funktion zum Entfernen eines Wertes. (Optional)
ReplaceFunction Ersetzen des gesamten Inhalts der Eigenschaft. (Optional)
IsMultivalued Angabe, ob die Eigenschaft mehrwertig ist. (Optional)

Wenn das Attribut nicht definiert ist, ist die Eigenschaft nicht mehrwertig.

Beispiel:

<Tables>

<TABLE Definition = "USR04-Table" TableName="USR04" Key="BNAME,MANDT" X500="CN,OU" SQL="MANDT = sy-mandt" Load="" />

<TABLE Definition = "USR02-Table" TableName="USR02" Key="BNAME" X500="CN" SQL="MANDT = sy-mandt" Load="MANDT,TRDAT" />

<TABLE Definition = "RSECUSERAUTH-SingleUser" TableName="RSECUSERAUTH" Key="AUTH" X500="CN" SQL="UNAME = '$BNAME$'" Load="">

<Mapping>

<Data ParameterName = "$BNAME$" PropertyName = "BNAME" />

</Mapping>

</TABLE>

<TABLE Definition = "ANLA-Table" TableName="ANLA" Key="BUKRS,ANLN1" X500="CN,OU" SQL="MANDT = sy-mandt" Load="AEDAT" />

</Tables>

<Functions>

<Function Definition = "USER GET" FunctionName="BAPI_USER_GET_DETAIL" OutStructure = "" Key ="USERNAME" X500 ="CN">

<Mapping>

<Data ParameterName = "USERNAME" PropertyName = "BNAME" />

</Mapping>

</Function>

<Function Definition = "USER SET" FunctionName="BAPI_USER_CHANGE" OutStructure ="" Key ="USERNAME" X500 ="CN">

<Mapping>

<Data ParameterName = "USERNAME" PropertyName = "BNAME" />

</Mapping>

</Function>

<Function Definition = "USER DEL" FunctionName="BAPI_USER_DELETE" OutStructure ="" Key ="USERNAME" X500 ="CN" >

<Mapping>

<Data ParameterName = "USERNAME" PropertyName = "BNAME" />

</Mapping>

</Function>

<Function Definition = "USER PROFILE SET" FunctionName="BAPI_USER_PROFILES_ASSIGN" OutStructure ="" Key ="USERNAME" X500 ="CN">

<Mapping>

<Data ParameterName = "USERNAME" PropertyName = "BNAME" />

<Data ParameterName = "BAPIPROF~BAPIPROF" PropertyName = "$Value$" />

</Mapping>

</Function>

<Function Definition = "BWProfileDelFkt" FunctionName="/VIAENET/SAPHR_RSECUSERAUT_DEL" OutStructure ="" Key ="ZUSRNAME,ZHIER" X500 ="CN,OU">

<Mapping>

<Data ParameterName = "ZUSRNAME" PropertyName = "BNAME" />

<Data ParameterName = "ZHIER" PropertyName = "$VALUE$" />

</Mapping>

</Function>

<Function Definition = "BWProfileAddFkt" FunctionName="/VIAENET/SAPHR_RSECUSERAUT_ADD" OutStructure ="" Key ="ZUSRNAME,ZHIER" X500 ="CN,OU">

<Mapping>

<Data ParameterName = "ZUSRNAME" PropertyName = "BNAME" />

<Data ParameterName = "ZHIER" PropertyName = "$VALUE$" />

</Mapping>

</Function>

</Functions>

<SAPExtendedSchematypes>

<SAPExtendedSchematype Bem = "alle Benutzer" Name = "UserFunctionTable" DisplayPattern="%BNAME% (%MANDT%)" RevisionProperty="TRDAT" ListObjectsDefinition = "USR02-Table" ReadObjectDefinition ="USER GET" WriteObjectDefinition = "USER SET" DeleteObjectDefinition = "USER DEL">

<Properties>

<Property Name = "SAPBWP" Description="alle BW Profile des Benutzers" ListFunction="RSECUSERAUTH-SingleUser" AddFunction="BWProfileAddFkt" DelFunction="BWProfileDelFkt" ReplaceFunction="" IsMultivalued = "true" />

<Property Name = "USERPROFILE" Description="alle Profile des Benutzers" ListFunction="USR04-Table" AddFunction="" DelFunction="" ReplaceFunction="USER PROFILE SET" IsMultivalued = "true" />

</Properties>

</SAPExtendedSchematype>

<SAPExtendedSchematype Bem = "Asset, Anlagenwerte" Name = "Asset_ANLA" DisplayPattern="%ANLN1% %BUKRS%" AddRevisionTimeOffset="true" RevisionProperty="AEDAT" ListObjectsDefinition = "ANLA-Table" ReadObjectDefinition = "ANLA-Table" InsertObjectDefinition = "" WriteObjectDefinition = "" DeleteObjectDefinition = "" />

</SAPExtendedSchematypes>

Erläuterungen:

Die Liste von Objekten des Schematyps UserFunctionTable wird unter Nutzung der Tabelle USR02 erstellt. Lesen, Schreiben und Löschen erfolgt mit den Funktionen des USER–BAPI, die jeweils als Function deklariert wurden.

Der Schematyp hat einen Properties-Block. Hier werden zwei weitere Eigenschaften definiert, die weder über die Tabellendefinition des Listenaufrufs noch über die Funktionsdefinition des Einzelobjektaufrufs zurückgegeben werden. Definiert wird eine mehrwertige Eigenschaft SAPBWP, deren Werte aus der Tabelle RSECUSERAUTH ermittelt werden. Die Einzelobjekte werden über die Spalten USR02.BNAME und RSECUSERAUTH.UNAME identifiziert. Zum Einfügen und Löschen von Werten werden BAPI-Aufrufe genutzt, die als Funktionen definiert wurden.

Die Eigenschaft Userprofile ist ein Beispiel für eine mehrwertige Eigenschaft, deren Werte beim Lesen aus einer Tabelle stammen (USR04) und die eine Replace–Funktion hat. Daher müssen immer alle Werte bei Änderungen angegeben werden, die in der Eigenschaft verbleiben sollen. Die Schreibfunktion ist die originale Funktion des USER-BAPI zum Setzen von Profilen am Benutzer (Funktionsdefinition für BAPI_USER_PROFILES_ASSIGN). Die Einzelobjekte werden über die Spalten USR02.BNAME und USR04.BNAME identifiziert. Da die Schlüsselspalten den gleichen Namen haben, wird an der Tabellendefinition kein Mapping benötigt.

Der Schematyp Asset_ANLA verwendet den Revisionszähler AEDAT, welcher nur ein Änderungsdatum enthält. An diesen Revisionszähler fügt der Konnektor die Uhrzeit 23:59:00 an (AddRevisionTimeOffset="true").

Verwandte Themen
Verwandte Dokumente

The document was helpful.

Bewertung auswählen

I easily found the information I needed.

Bewertung auswählen