SAP R/3 Structural Profile Add-On - Schema Extension (8.1.2)

Hi Team,

Firstly, unfortunately the OOTB Active Employee list is providing me far too many records (I presume the customer doesn't terminate like OOTB expects)

Because of this I’m attempting to extract a list of active users from SAP PA0000 and then read various other tables such as PA0002 to enrich the mapped Person record, almost like an inner join if it were a SQL call based on PERNR.

This is in an attempt to mitigate broadly pulling data from tables and have the mapping take care of what’s in/out of scope for imports.

Reading up on the documentation, this appears to be possible.

https://support.oneidentity.com/technical-documents/identity-manager/8.1.2/administration-guide-for-connecting-to-sap-r3/6

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.

To do this I’ve setup the below extension

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

<SAP>

    <Tables>

        <TABLE Definition = "CCC_PA0000_Employee_Active" TableName="PA0000" Key="PERNR" X500="CN" SQL="MANDT = sy-mandt AND Stat2 = '3' AND BEGDA le sy-datum AND ENDDA ge sy-datum" Load=""/>

        <TABLE Definition = "CCC_PA0002_Employee_Active" TableName="PA0002" Key="PERNR" X500="CN" SQL="MANDT = sy-mandt AND BEGDA le sy-datum AND ENDDA ge sy-datum" Load=""/>

    <Tables>

              

    <SAPExtendedSchematypes>

        <SAPExtendedSchematype Bem = "HR, PA0002" Name = "CCC_PA0002_Employee_Active" DisplayPattern="%PERNR%" ListObjectsDefinition = "CCC_PA0000_Employee_Active"  ReadObjectDefinition  = "CCC_PA0002_Employee_Active" InsertObjectDefinition = "" WriteObjectDefinition = "" DeleteObjectDefinition = "" />

    </SAPExtendedSchematypes>

</SAP>

 When I look at the records in the target system browser of CCC_PA0002_Employee_Active, it’s showing me fields from PA000 and not PA0002.

Thoughts?

Parents
  • Some further info

    I've also tried to add the "sub" table as a Property

    According to the limited documentation, this should also work using the same approach described for

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

    <Property Name = "USERPROFILE" Description="all the user's profiles" ListFunction="USR04-Table" AddFunction="" DelFunction="" ReplaceFunction="USER PROFILE SET" IsMultivalued = "true" />

    Instead of PA0002 info, I'm getting back a field called Names with every single record from that table in a DN format.

    Below is the whole schema extension file.

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

    <SAP>

    <Tables>

    <TABLE Definition = "CCC_PA0000_Employee_Active" TableName="PA0000" Key="PERNR" X500="CN" SQL="MANDT = sy-mandt AND Stat2 = '3' AND BEGDA le sy-datum AND ENDDA ge sy-datum" Load=""/>
    <TABLE Definition = "CCC_PA0002_Employee_Active" TableName="PA0002" Key="PERNR" X500="CN" SQL="MANDT = sy-mandt AND BEGDA le sy-datum AND ENDDA ge sy-datum" Load=""/>

    <Tables>

    <SAPExtendedSchematypes>

    <SAPExtendedSchematype Bem = "HR, PA0000" Name = "CCC_PA0000_Employee_Active" DisplayPattern="%PERNR%" ListObjectsDefinition = "CCC_PA0000_Employee_Active" ReadObjectDefinition = "CCC_PA0000_Employee_Active" InsertObjectDefinition = "" WriteObjectDefinition = "" DeleteObjectDefinition = "" >
    <Properties>
    <Property Name="Names" Description="Names ListFunction = "CCC_PA0002_Employee_Active" AddFunction = "" DelFunction = "" ReplaceFunction = "" IsMultivalued="true"
    </Properties>
    </SAPExtendedSchematype>
    </SAPExtendedSchematypes>

    </SAP>

Reply
  • Some further info

    I've also tried to add the "sub" table as a Property

    According to the limited documentation, this should also work using the same approach described for

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

    <Property Name = "USERPROFILE" Description="all the user's profiles" ListFunction="USR04-Table" AddFunction="" DelFunction="" ReplaceFunction="USER PROFILE SET" IsMultivalued = "true" />

    Instead of PA0002 info, I'm getting back a field called Names with every single record from that table in a DN format.

    Below is the whole schema extension file.

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

    <SAP>

    <Tables>

    <TABLE Definition = "CCC_PA0000_Employee_Active" TableName="PA0000" Key="PERNR" X500="CN" SQL="MANDT = sy-mandt AND Stat2 = '3' AND BEGDA le sy-datum AND ENDDA ge sy-datum" Load=""/>
    <TABLE Definition = "CCC_PA0002_Employee_Active" TableName="PA0002" Key="PERNR" X500="CN" SQL="MANDT = sy-mandt AND BEGDA le sy-datum AND ENDDA ge sy-datum" Load=""/>

    <Tables>

    <SAPExtendedSchematypes>

    <SAPExtendedSchematype Bem = "HR, PA0000" Name = "CCC_PA0000_Employee_Active" DisplayPattern="%PERNR%" ListObjectsDefinition = "CCC_PA0000_Employee_Active" ReadObjectDefinition = "CCC_PA0000_Employee_Active" InsertObjectDefinition = "" WriteObjectDefinition = "" DeleteObjectDefinition = "" >
    <Properties>
    <Property Name="Names" Description="Names ListFunction = "CCC_PA0002_Employee_Active" AddFunction = "" DelFunction = "" ReplaceFunction = "" IsMultivalued="true"
    </Properties>
    </SAPExtendedSchematype>
    </SAPExtendedSchematypes>

    </SAP>

Children
No Data