SAP S/4HANA

SAP Master Data Integration service Business Partner configuration without using Default Logical Port on SAP S/4HANA

In this blog, I will go through the steps necessary to connect a SAP Master Data Integration service instance with a SAP S/4HANA On-premise system. While these steps can be applied to connect any other cloud systems with S/4HANA, this blog will primarily focus on integration with MDI service on SAP Business Technology Platform.

I. Data Replication Framework Customising

In the S/4HANA, the Data Replication Framework is used to invoke theSOAP services.

It is important that “Business system” value, that is used in DRF customising should be the same as MDI Business System Generic Configuration.

You can retrieve the MDI Business System Configuration via a Postman GET call on the below URL.(Use oAuth credentials of your MDI tenant)

https://one-mds.cfapps.<region>.hana.ondemand.com/businesspartner/v0/odata/API_GENERIC_CONFIGURATIONS/GenericConfigurations

For SAP canary environment, use the value “sap” in region placeholder.

II. Retrieving the WSDL required for the setu

Execute transaction sproxy in SAP S/4HANA system and download the WSDL files for the below interfaces.

BusinessPartnerSUITEBulkReplicateRequest_Out BusinessPartnerSUITEBulkReplicateConfirmation_Out BusinessPartnerRelationshipSUITEBulkReplicateRequest_Out BusinessPartnerRelationshipSUITEBulkReplicateConfirmation_Out
KeyMappingBulkReplicateRequest_Out
KeyMappingBulkReplicateConfirmation_Out

III. Altering the WSDL files with MDI Endpoints

Add the following elements at the end of each of the WSDL Files before the </wsdl:definitions> tag. It is important to note that the below XML element contains a sample MDI Enpoint. You would have to replace this with your MDI details for all of them.

Eg. For BP, replace

https://one-mds.cfapps.sap.hana.ondemand.com:443/businesspartner/v0/soap/BusinessPartnerRelationshipBulkReplicateRequestConfirmIn?tenantId=mdibpconsumer1

with your MDI tenant endpoint. Additionally, make sure the endpoint contains the 443 port number suffixed after the Host Name.

a. BusinessPartnerSUITEBulkReplicateRequest_Out

<wsdl:binding name="CO_MDG_BP_RPLCTRQ" type="tns:BusinessPartnerSUITEBulkReplicateRequest_Out">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
    <wsdl:operation name="BusinessPartnerSUITEBulkReplicateRequest_Out">
      <soap:operation soapAction="" style="document"/>
      <wsdl:input name="BusinessPartnerSUITEBulkReplicateRequest">
        <soap:body use="literal"/>
      </wsdl:input>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="BusinessPartnerSUITEBulkReplicateRequestOut">
    <wsdl:port name="MDI_PORT" binding="tns:CO_MDG_BP_RPLCTRQ">
      <soap:address location="https://one-mds.cfapps.sap.hana.ondemand.com:443/businesspartner/v0/soap/BusinessPartnerBulkReplicateRequestIn?tenantId=mdibpconsumer1"/></wsdl:port>
  </wsdl:service>

b. BusinessPartnerSUITEBulkReplicateConfirmation_Out

<wsdl:binding name="CO_MDG_BP_RPLCTCO" type="tns:BusinessPartnerSUITEBulkReplicateConfirmation_Out">
   <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
   <wsdl:operation name="BusinessPartnerSUITEBulkReplicateConfirmation_Out">
     <soap:operation soapAction="" style="document"/>
     <wsdl:input name="BusinessPartnerSUITEBulkReplicateConfirmation">
       <soap:body use="literal"/>
     </wsdl:input>
   </wsdl:operation>
 </wsdl:binding>
 <wsdl:service name="BusinessPartnerSUITEBulkReplicateConfirmationOut">
   <wsdl:port name="MDI_PORT" binding="tns:CO_MDG_BP_RPLCTCO">
     <soap:address location="https://one-mds.cfapps.sap.hana.ondemand.com:443/businesspartner/v0/soap/BusinessPartnerBulkReplicateRequestConfIn?tenantId=mdibpconsumer1"/></wsdl:port>
 </wsdl:service>

c. BusinessPartnerRelationshipSUITEBulkReplicateRequest_Out

<wsdl:binding name="CO_MDG_BP_RELATIONSHIP_OUT" type="tns:BusinessPartnerRelationshipSUITEBulkReplicateRequest_Out">
   <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
   <wsdl:operation name="BusinessPartnerRelationshipSUITEBulkReplicateRequest_Out">
     <soap:operation soapAction="" style="document"/>
     <wsdl:input name="BusinessPartnerRelationshipSUITEBulkReplicateRequest">
       <soap:body use="literal"/>
     </wsdl:input>
   </wsdl:operation>
 </wsdl:binding>
 <wsdl:service name="BusinessPartnerRelationshipSUITEBulkReplicateRequestOut">
   <wsdl:port name="MDI_PORT" binding="tns:CO_MDG_BP_RELATIONSHIP_OUT">
     <soap:address location="https://one-mds.cfapps.sap.hana.ondemand.com:443/businesspartner/v0/soap/BusinessPartnerRelationshipBulkReplicateRequestIn?tenantId=mdibpconsumer1"/></wsdl:port>
 </wsdl:service>

d. BusinessPartnerRelationshipSUITEBulkReplicateConfirmation_Out

<wsdl:binding name="CO_MDG_BP_RELATIONSHIP_CNF_OUT" type="tns:BusinessPartnerRelationshipSUITEBulkReplicateConfirmation_Out">
   <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
   <wsdl:operation name="BusinessPartnerRelationshipSUITEBulkReplicateConfirmation_Out">
     <soap:operation soapAction="" style="document"/>
     <wsdl:input name="BusinessPartnerRelationshipSUITEBulkReplicateConfirmation">
       <soap:body use="literal"/>
     </wsdl:input>
   </wsdl:operation>
 </wsdl:binding>
 <wsdl:service name="BusinessPartnerRelationshipSUITEBulkReplicateConfirmationOut">
   <wsdl:port name="MDI_PORT" binding="tns:CO_MDG_BP_RELATIONSHIP_CNF_OUT">
     <soap:address location="https://one-mds.cfapps.sap.hana.ondemand.com:443/businesspartner/v0/soap/BusinessPartnerRelationshipBulkReplicateRequestConfirmIn?tenantId=mdibpconsumer1"/></wsdl:port>
 </wsdl:service>

e. KeyMappingBulkReplicateRequest_Out

 <wsdl:binding name="CO_KEY_MAP_RPLCTRQ" type="tns:KeyMappingBulkReplicateRequest_Out">
   <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
   <wsdl:operation name="KeyMappingBulkReplicateRequest_Out">
     <soap:operation soapAction="" style="document"/>
     <wsdl:input name="KeyMappingBulkReplicateRequest">
       <soap:body use="literal"/>
     </wsdl:input>
   </wsdl:operation>
 </wsdl:binding>
 <wsdl:service name="KeyMappingBulkReplicateRequestOut">
   <wsdl:port name="MDI_PORT" binding="tns:CO_KEY_MAP_RPLCTRQ">
     <soap:address location="https://one-mds.cfapps.sap.hana.ondemand.com:443/businesspartner/v0/soap/KeyMappingBulkReplicateRequestIn?tenantId=mdibpconsumer1"/></wsdl:port>
 </wsdl:service>

f. KeyMappingBulkReplicateConfirmation_Out

<wsdl:binding name="CO_KEY_MAP_RPLCTCO type=" tns:KeyMappingBulkReplicateConfirmation_Out"="tns:KeyMappingBulkReplicateConfirmation_Out"">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
    <wsdl:operation name="KeyMappingBulkReplicateConfirmation_Out">
      <soap:operation soapAction="" style="document"/>
      <wsdl:input name="KeyMappingBulkReplicateConfirmation">
        <soap:body use="literal"/>
      </wsdl:input>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="KeyMappingBulkReplicateConfirmationOut">
    <wsdl:port name="MDI_PORT" binding="tns:CO_KEY_MAP_RPLCTCO">
      <soap:address location="https://one-mds.cfapps.sap.hana.ondemand.com:443/businesspartner/v0/soap/KeyMappingBulkReplicateConfirmIn?tenantId=mdibpconsumer1"/></wsdl:port>
  </wsdl:service>

IV. Uploading the WSDL files in Soamanager

1. Open transaction soamanager.
2. Navigate to tab “Tools” and open “WSDL Upload”

3. Click on “Create”. Make the following entries in the popup.

a. Name – anything you want to identify your WSDL file
b. Description – any description
c. WSDL Base: Via File
d. File: Your File Location

4. Repeat Step 3 for all the 6 WSDL files.

V. Register WSDL contents in Services Registry

1. Navigate to tab “Services Registry” and open “Publication of External WSDL”

2. Choose an uploaded WSDL from dropdown list.

3. Click “Next” and enter an Internal Name (e.g. same as WSDL name)

4. Click “Next”. For Classifications, nothing has to be done, so click “Next” again.

5. Set State as “Configured” – the uploaded WSDL files already contain the bindings; those have been added in the previous section

6. Click “Next” and check the Bindings. They should correspond to the one in the uploaded WSDL.

7. Click “Next”. For the first WSDL file, choose “New” Physical System with

a. System Name – enter MDI SLP system ID name from DRF IMG
b. Host Name – any name
c. System Type – “Third Party”

8. Click “Next” and “Finish”.

9. Repeat these steps for all WSDL files you uploaded, with the exception of step 7 (create a new physical system for each WSDL) – instead, reuse the existing one.

10. As a result of these steps, new service definitions are generated. Those can be found on the tab “Services Registry” under “Published Service Definitions”

VI. Configuring MDI system access

1. Navigate to tab “Technical Administration” and open “Profiles”.

2. Click on “Create Profile”.
3. Enter a Name and a Profile Description for accessing SAP MDI and select “Old Profile Mode”.

4. Click “Next” and fill out the Security Settings as follows –

a. Authentication Method: User ID/Password
b. Identifiable Business Context: No IBC Determination
c. Transport Security: Select “Secured Communication”

5. Click “Next”. In case Proxy Settings are used, fill them in. Otherwise leave them empty & click “Finish”

6. Confirm the popup with “Yes” if you want the profile to be activated immediately.
7. Navigate to tab “Technical Administration” and open “Provider Systems”

8. Choose “Create”.
9. Choose

a. Name: the MDI SLP system ID used in DRF IMG (this is important! Otherwise the integration won’t work!)
b. Description – any meaningful description
c. Profile Name – choose the Profile created earlier from the dropdown menu

10. Click “Next”. Set the Services Registry as follows

a. Select “Use Services Registry”
b. Services Registry: Choose SR_LOCAL from dropdown
c. SLD Identifier: open F4-Help and choose SLD Identifier (Physical System) created earlier from the list

11. Furthermore, the following settings are required:

a. Deselect “Use WSIL”
b. WSDL Document Access: provide a user who can access the WSDL files and is assigned to role SAP_BC_WEBSERVICE_CONFIGURATOR; in SAP test systems, typically the WSAPPLUSER has sufficient authorizations. You can also use your ERP system login user for this step.
c. Search Granularity: select “Tolerant Search”

12. Click “Next” and click “Retrieve Business Applications”

13. When those have been retrieved, click on “Finish”.
14. Confirm the popup with “Yes” if you want the Provider System to be activated immediately. You can now this newly created Provider system.

VII. Logon Data Management

1. Navigate to tab “Service Administration” and open “Logon Data Management”.

2. Click on “Create”. Provide a meaningful Logon Data Name & Description.

3. Provide Logon Data for MDI by entering User Name & Password. From the service keys of MDI instance, clientId is the username and clientSecret is the passwrod.Ensure that the instance should be generated using correct BusinessSystemId parameter.

4. Click “Finish” and confirm the popup with “Yes” to activate the Logon Data immediately.

VIII. Configure Local Integration Scenario

The local integration scenario will only contain the outbound messages from SAP S/4 HANA to SAP MDI. In principal it would also be possible to configure the corresponding inbound services as well. However, the current SAP S/4 HANA – MDI – integration requires an alternative access URL in its configuration like /sap/bc/srt/xip/arba/businesspartnersuitereplicateconfirmation/405. In an automatically created service configuration through a Local Integration Scenario, this alternative access URL cannot be set. Therefore, the configuration for the inbound services must be done (manually) outside the Local Integration Scenario Configuration.

1. Navigate to tab “Service Administration” and open “Local Integration Scenario Configuration”

2. Create new integration scenario by clicking “Create”.
3. Provide a meaningful Name & Description.

4. Click “Next”. Since no inbound services shall be configured here (explanation see above), click “Next”.

5. Add the following Service Groups

– MDG_BS_SUPPLIERREPLICATECONF
– MDG_BS_SUPPLIERREPLICATEREQ
– KEY_MAP_REPLICATE_REQ
– KEY_MAP_REPLICATE_CONF

6. Select all the Service Groups and click on “Assign IBC Reference”. Execute search, chose MDI System from the search result, and click “Assign to Service Group”.

7. The result should look like this.

8. Select the Logon Data for each Service Group from the dropdown. Choose the Logon Data created earlier for all the service groups.

9. Click “Finish”. Confirm the popup with “Yes” if you want the integration scenario to be activated immediately.
10. Activate the pending tasks. Navigate to them by clicking the link.

11. Click “Process List” to activate the logical ports

12. If everything has been done properly, the logical ports should be activated successfully. Confirm the popup with “OK”.

13. If everything has been configured as desired, navigate to tab “Service Administration” and open “Web Service Configuration.

14. As search criteria, enter the Service Groups

– MDG_BS_SUPPLIERREPLICATECONF
– MDG_BS_SUPPLIERREPLICATEREQ
– KEY_MAP_REPLICATE_REQ
– KEY_MAP_REPLICATE_CONF
and click “Search”

15. Click on MDG_BS_SUPPLIERREPLICATEREQ to verify the two created Web Service (in this case the BP and BP Relationship messages) configurations for the MDI system.

16. Similarly, you can verify Logical Port creation for other Service Groups.
17. At this point you Business Partners created in this system will be replicated to your MDI tenant. (Assuming necessary configuration is done at MDI. More details available here.)

IX. Creating SOAP Endpoint to receive Business Partner and Key Mapping data from SAP MDI

1. Navigate to tab “Service Administration” and open “Web Service Configuration.
2. Open Service Definition: BUSINESSPARTNERSUITEBULKREPLIC

3. Click on “Create Service”
4. Provide value for
– Service Name: any meaningful name
– New Binding Name: any meaningful name
Click Next.

5. Select SSL as Transport Level Security. Enable UserId/password as Transport Channel authentication.

6. Click Next and then click Finish.
7. To view the created binding, click on Display button.

8. Navigate to “Transport Settings” tab.Copy the contents of “Calculated Access URL” field.

9. The SOAP Endpoint is concatenation of Host Name of the ERP system and the “Calculated Access URL” field.

http://<Host_name>:<Https_Port>/Calculated_Access_URL

To retrieve HostName execute transaction smicm and then Click Shift +F1.

So, the final BP Endpoint URL will look like this.

http://ldciemt.wdf.sap.corp:44322/sap/bc/srt/xip/sap/businesspartnersuitebulkreplic/405/mdibpconsumer11/binding​

You should use this URL to configure the BPOUTBOUND destination in your subaccount.

10. Repeat Steps 2 – 6 for Service Definitions

a. BP Confirmation: BUSINESSPARTNERSUITEBULKREPLI1
b. BP Relationship: BUSINESSPARTNERRELATIONSHIPSUI
c. BP Relationship Confirmation: BUSINESSPARTNERRELATIONSHIPSU1
d. Key Mapping: KEYMAPPINGBULKREPLICATEREQUEST
e. Key Mapping Confirmation: KEYMAPPINGBULKREPLICATECONFIRM

Leave a Reply

Your email address will not be published. Required fields are marked *