Zum Hauptinhalt springen
Version: Classic

SAP C4C (Cloud for Customer)

Mit dem SAP C4C Address provider können Sie auf Ihre Kontaktdaten in der SAP Cloud for Customer zugreifen. Hierfür wird ein "Service Account" in der entsprechenden SAP C4C Cloud benötigt.

Konfiguration​

<!-- AddressService -->
<AddressProvider id="E10A8313-A92D-4CB2-A12B-9AEB58F39207" order="1" active="true">
<!-- serverside SAP C4C address provider -->
<AddressProvider id="91d36523-bae9-424e-9618-fae6162d20f7" Title="SAP C4C">
<EndpointUrl>https://{SAPC4CUrl}/{ApiBasepath}/v{APIVersion}/{APIEndpoint}</EndpointUrl>
<UserName>{Username}</UserName>
<Password>{Password}</Password>
<SearchParameters>
<SearchParameter Name="firstName" Label="Vorname/Name" Type="String" Length="100" Sort="1" />
</SearchParameters>
<Query><![CDATA[$filter=FirstName eq '{firstName}']]></Query>
<!-- Zwingendes Mapping -->
<Mapping>
</Mapping>
<Icon></Icon>
</AddressProvider>
</AddressProvider>
hinweis

HINWEIS
Diese Konfiguration ist nur die Basiskonfiguration und kann alleine noch nicht verwendet werden. Da über diesen Address provider jeder beliebige Endpunkt des SAP C4C Servcices angebunden werden kann, existieren viele verschiedene Konfigurationen. Nach den Parametern sind drei Beispielkonfigrationen für die drei wichtigsten Endpunkte im Bezug auf Adressdaten aufgeführt.

Parameter​

  • id 91d36523-bae9-424e-9618-fae6162d20f7
  • Title Titel des Address Provider. Default: "SAP C4C"
  • EndpointUrl Url des SAP-C4C-Service-Endpunkts.
  • UserName Der Benutzer, mit welchem sich der Provider am SAP C4C Service anmeldet
  • Password Das Passwort, mit dem sich der Provider am SAP C4C Service anmeldet (kann verschlüsselt sein)
  • SearchParameter Liste mit allen Eingabemöglichkeiten
    • Name Eindeutige Id für den Parameter. Entspricht dem Platzhalter in der Odata Query
    • Label Angezeigter Text vor dem Eingabefeld
    • Type Eingabetyp: String (Text), Long (Zahl), Boolean (Ja/Nein) oder Date (Datum)
    • Length Maximale Länge für Strings
    • Sort Sortierungswert gegenüber den anderen Parametern
  • Query Die Query für die Abfrage am Service wird mit OData v2 geschrieben. Die Suchparameter können mittels {SearchParamId} innerhalb der Query referenziert werden. An dieser Stelle wird auf eine weitere Dokumentation der Query verzichtet, da im Anschluss drei Beispiele für eine Konfiguration gezeigt werden.
  • Mapping Das zu definierende Mapping ist ein Standard-Kontakt-Mapping, welches als SourceAttribute den Namen des Properties der entsprechenden Entität enthalten muss. Das Mapping muss zwingend Konfiguriert werden. Es gibt kein Standardmapping das greift, wenn nicht explizit eines definiert wurde.
  • Icon Base64-Icon, das dem Benutzer im Empfängerdialog angezeigt wird.

Mit der ODataQuery können auch abhängige Entitäten geladen werden. Dabei muss beachtet werden, dass abhängige Entitäten immer als Array vom Service zurückgegeben werden. Dies bedeutet, dass für das SourceAttr

hinweis

HINWEIS
Über die Url https://{SAPC4CUrl}/sap/c4c/odata/v1/c4codataapi/$metadata können sämtliche im Service enthaltene Entities mit ihren Properties und Navigationproperties eingesehen werden. Dies ist insbesondere für die Query und das Mapping hilfreich.

Beispiele​

Die Beispiele beziehen sich auf die Entities der Api V2.

CorporateAccount​

<!-- AddressService -->
<AddressProvider id="E10A8313-A92D-4CB2-A12B-9AEB58F39207" order="0" active="true">
<!-- serverside SAP C4C address provider -->
<AddressProvider id="91d36523-bae9-424e-9618-fae6162d20f7" Title="SAP C4C – Kunden">
<EndpointUrl>https://{SAPC4CUrl}/sap/c4c/odata/v1/customer/CorporateAccountCollection</EndpointUrl>
<UserName>{Username}</UserName>
<Password>{Password}</Password>
<SearchParameters>
<SearchParameter Name="company" Label="Firma" Type="String" Length="100" Sort="1" />
<SearchParameter Name="street" Label="Strasse" Type="String" Length="100" Sort="3" />
<SearchParameter Name="plz" Label="PLZ/Ort" Type="String" Length="6" Sort="4" />
<SearchParameter Name="city" Label="" Type="String" Length="100" Width="130" Sort="4" />
<SearchParameter Name="country" Label="Land" Type="String" Length="100" Sort="5" />
</SearchParameters>
<Query><![CDATA[$filter=substringof('{company}', Name) and substringof('{street}', Street) and substringof('{city}', City) and substringof('{plz}', StreetPostalCode) and substringof('{country}', CountryCodeText)]]></Query>
<Mapping>
<Map Source="Name" Target="Company_Name"/>
<Map Source="CountryCode" Target="Company_CountryShortCode" />
<Map Source="City" Target="Company_City"></Map>
<Map Source="StreetPostalCode" Target="Company_ZipCode"></Map>
<Map SourceExpression="source('Street') + source('HouseNumber')" Target="Company_Street"></Map>
<Map Source="Phone" Target="Company_PhoneCentral"></Map>
<Map Source="Floor" Target="Company_Floor"></Map>
<Map Source="Email" Target="Company_EmailCentral"></Map>
<Map Source="WebSite" Target="Company_Homepage"></Map>
<Map Source="Fax" Target="Company_FaxCentral"></Map>
<Map Source="POBox" Target ="Company_PostOfficeBox" ></Map>
<Map Source="POBoxPostalCode" Target="Company_PostOfficeBoxCity_ZipCode"></Map>
<Map Source="POBoxDeviatingCity" Target="Company_PostOfficeBoxCity"></Map>
<Map Source="CareOfName" Target="Company_CareOf"></Map>
<Map SourceValue="CompanyData" Target="AddressType"></Map>
</Mapping>
</AddressProvider>
</AddressProvider>

IndividualCustomer​

<!-- AddressService -->
<AddressProvider id="E10A8313-A92D-4CB2-A12B-9AEB58F39207" order="0" active="true">
<!-- serverside SAP C4C address provider -->
<AddressProvider id="91d36523-bae9-424e-9618-fae6162d20f7" Title="SAP C4C – Privatkunden">
<EndpointUrl>https://{SAPC4CUrl}/sap/c4c/odata/v1/customer/IndividualCustomerCollection</EndpointUrl>
<UserName>{Username}</UserName>
<Password>{Password}</Password>
<SearchParameters>
<SearchParameter Name="firstName" Label="Vorname/Name" Type="String" Length="90" Sort="0" />
<SearchParameter Name="lastName" Type="String" Length="90" Width="90" Sort="0" />
<SearchParameter Name="street" Label="Strasse" Type="String" Length="100" Sort="3" />
<SearchParameter Name="plz" Label="PLZ/Ort" Type="String" Length="6" Sort="4" />
<SearchParameter Name="city" Label="" Type="String" Length="100" Width="130" Sort="4" />
<SearchParameter Name="country" Label="Land" Type="String" Length="100" Sort="5" />
</SearchParameters>
<Query><![CDATA[$filter=substringof('{firstName}', FirstName) and substringof('{lastName}', LastName) and substringof('{street}',Street) and substringof('{city}', City) and substringof('{plz}', StreetPostalCode) and substringof('{country}', CountryCodeText)]]></Query>
<Mapping>
<Map Source="FirstName" Target="Person_FirstName"/>
<Map Source="AcademicTitleCodeText" Target="Person_Title"></Map>
<Map Source="LastName" Target="Person_LastName"></Map>
<Map Source="CountryCode" Target="Person_CountryShortCode" />
<Map Source="City" Target="Person_City"></Map>
<Map Source="StreetPostalCode" Target="Person_ZipCode"></Map>
<Map SourceExpression="source('Street') + source('HouseNumber')" Target="Person_Street"></Map>
<Map Source="Phone" Target="Person_PhoneDirect"></Map>
<Map Source="Mobile" Target="Person_Mobile"></Map>
<Map Source="Fax" Target="Person_FaxDirect"></Map>
<Map Source="Email" Target="Person_EmailDirect"></Map>
<Map Source="POBox" Target="Person_PostOfficeBox" ></Map>
<Map Source="POBoxPostalCode" Target="Person_PostOfficeBoxCity_ZipCode"></Map>
<Map Source="POBoxDeviatingCity" Target="Person_PostOfficeBoxCity"></Map>
<Map Source="CareOfName" Target="Person_CareOf"></Map>
<Map SourceValue="PersonData" Target="AddressType"></Map>
</Mapping>
</AddressProvider>
</AddressProvider>

Contact​

<!-- AddressService -->
<AddressProvider id="E10A8313-A92D-4CB2-A12B-9AEB58F39207" order="0" active="true">
<!-- serverside SAP C4C address provider -->
<AddressProvider id="91d36523-bae9-424e-9618-fae6162d20f7" Title="SAP C4C – Ansprechpartner">
<EndpointUrl>https://{SAPC4CUrl}/sap/c4c/odata/v1/contact/ContactCollection</EndpointUrl>
<UserName>{Username}</UserName>
<Password>{Password}</Password>
<SearchParameters>
<SearchParameter Name="firstName" Label="Vorname/Name" Type="String" Length="90" Sort="0" />
<SearchParameter Name="lastName" Type="String" Length="90" Width="90" Sort="0" />
<SearchParameter Name="street" Label="Strasse" Type="String" Length="100" Sort="3" />
<SearchParameter Name="plz" Label="PLZ/Ort" Type="String" Length="6" Sort="4" />
<SearchParameter Name="city" Label="" Type="String" Length="100" Width="130" Sort="4" />
<SearchParameter Name="country" Label="Land" Type="String" Length="100" Sort="5" />
</SearchParameters>
<Query><![CDATA[$filter=substringof('{firstName}', FirstName) and substringof('{lastName}', LastName) and substringof('{street}', BusinessAddressStreet) and substringof('{city}', BusinessAddressCity) and substringof('{plz}', BusinessAddressStreetPostalCode) and substringof('{country}', BusinessAddressCountryCodeText)]]></Query>
<Mapping>
<Map Source="FirstName" Target="Person_FirstName"/>
<Map Source="LastName" Target="Person_LastName"></Map>
<Map Source="AcademicTitleCodeText" Target="Person_Title"></Map>
<Map Source="FunctionCodeText" Target="Person_Position"></Map>
<Map Source="JobTitle" Target="Person_Profession"></Map>
<Map Source="BusinessAddressCountryCode" Target="Company_CountryShortCode" />
<Map Source="BusinessAddressCity" Target="Company_City"></Map>
<Map Source="AccountFormattedName" Target="Company_Name"></Map>
<Map Source="DepartmentCodeText" Target="Company_Department" ></Map>
<Map Source="BusinessAddressStreetPostalCode" Target="Company_ZipCode"></Map>
<Map SourceExpression="source('BusinessAddressStreet') + source('BusinessAddressHouseNumber')" Target="Company_Street"></Map>
<Map Source="Phone" Target="Company_PhoneDirect"></Map>
<Map Source="Mobile" Target="Company_Mobile"></Map>
<Map Source="Fax" Target="Company_FaxDirect"></Map>
<Map Source="Email" Target="Company_EmailDirect"></Map>
<Map SourceValue="CompanyAndPersonData" Target="AddressType"></Map>
</Mapping>
</AddressProvider>
</AddressProvider>