In the section for schema types (SAPExtendedSchematypes), you can define schema types that exist in the SAP schema and can be used to extend the connector schema. The identifier given in the Name attribute is used as the name. This identifier must be unique in the extended connector schema.
Attribute |
Description |
---|---|
Bem |
Internal description |
Name |
Name of the schema type in the extended connector schema. |
DisplayPattern |
Definition of a display pattern for displaying objects in the Synchronization Editor (for example, in the target system browser or defining schema classes). (Optional) Only columns that are loaded in the table definition (Key or Load attribute) can be used.
IMPORTANT: Each column, which must be additionally loaded when the object list is loaded, creates extra load for One Identity Manager. This can make synchronization much slower if there is a lot of data. Only enter columns that you really need for further object processing. |
AddRevisionTimeOffset |
Specifies whether the revision counter adds the time as 23:59:00. (Optional) You can use this attribute if the revision counter only contains a change date but no timestamp. This allows objects that were changed after the previous synchronization run but on the same day, to be included in the next synchronization run. |
RevisionProperty |
Name of a property contain the revision counter. (Optional) |
ListObjectsDefinition |
Function or table definition for calling an object list. |
ReadObjectDefinition |
Function or table definition for calling a single object. |
WriteObjectDefinition |
Function definition for writing an object. (Optional) |
DeleteObjectDefinition |
Function definition for deleting an object. (Optional) |
ParentType |
Context of the schema type. (Optional)
By default, the schema types are client-related (ParentType="SAPMANDANT"). If the new schema type is valid in all SAP R/3 system clients, enter ParentType with the value "SAPSYSTEM". If this attribute is not defined, the schema type is client-related. |
A schema type definition must contain at least one object list call (attribute ListObjectsDefinition). In this case, you can enter a table or a function definition. To call a single object (attribute ReadObjectDefinition), the object list must have been loaded previously. The list call and single object call can refer to different tables, however the key columns for identifying single objects must either have the same name or have been mapped in the table definition for the single object call. In the example below, the single objects from table RSECUSERAUTH are determined for an object from the table USR02. The key columns for identifying the objects are USR02.BNAME and RSECUSERAUTH.UNAME. The columns have different names and are therefore mapped using the parameter $BNAME$.
If is possible to define a Properties block for declaring any number of other object properties and the types of access to them.P One single property is defined by the Property tag, which can have the following attributes.
Attribute |
Description |
---|---|
Name |
Name of the property. It must be unique within the schema type. |
Description |
Property description. |
ListFunction |
Function or table for calling all values. |
AddFunction |
Function for adding a value. (Optional) |
DelFunction |
Function for deleting a value. (Optional) |
ReplaceFunction |
Replaces the entire contents of the property. (Optional) |
IsMultivalued |
Specifies whether the property has multiple values. (Optional)
If this attribute is not defined, the property does not have multiple values. |
Example:
<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>
</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 = "all users" Name = "UserFunctionTable" DisplayPattern="%BNAME% (%MANDT%)" RevisionProperty="TRDAT" ListObjectsDefinition = "USR02-Table" ReadObjectDefinition ="USER GET" WriteObjectDefinition = "USER SET" DeleteObjectDefinition = "USER DEL">
<Properties>
<Property Name = "SAPBWP" Description="all the user's BW profiles" ListFunction="RSECUSERAUTH-SingleUser" AddFunction="BWProfileAddFkt" DelFunction="BWProfileDelFkt" ReplaceFunction="" IsMultivalued = "true" />
<Property Name = "USERPROFILE" Description="all the user's profiles" ListFunction="USR04-Table" AddFunction="" DelFunction="" ReplaceFunction="USER PROFILE SET" IsMultivalued = "true" />
</Properties>
</SAPExtendedSchematype>
<SAPExtendedSchematype Bem = "Asset, asset value" Name = "Asset_ANLA" DisplayPattern="%ANLN1% %BUKRS%" AddRevisionTimeOffset="true" RevisionProperty="AEDAT" ListObjectsDefinition = "ANLA table" ReadObjectDefinition = "ANLA table" InsertObjectDefinition = "" WriteObjectDefinition = "" DeleteObjectDefinition = "" />
</SAPExtendedSchematypes>
Explanation:
The list of UserFunctionTable schema type objects is created by using the USR02 table. Reading, writing, and deleting is done with USER-BAPI functions, which each have been declared as a Function.
The schema type has a properties block. Two properties are defined here that are neither returned through the list call's table definition nor through the single object call's function definition. A multi-value property SAPBWP is defined, whose value is taken from the RSECUSERAUTH table. The single objects are identified by the columns USR02.BNAME and RSECUSERAUTH.UNAME. BAPI calls, which are defined as functions, are used for inserting and deleting values.
The property Userprofile is an example of a multi-value property, which has values read from a table (USER04) and a Replace function. Therefore, all values that need to remain in the property must always be given when changes are made. The write function is the original USER-BAPI function for setting profiles in the user (function definition for BAPI_USER_PROFILES_ASSIGN). Single objects are identified using the USR02.BNAME and USR04.BNAME columns. There is no mapping required for the table definition because the key columns have the same name.
The Asset_ANLA schema type uses the AESAT revision counter, which only contains a change date. The connector adds a time of 23.59:00 to this revision counter (AddRevisionTimeOffset="true").