Recently I was tasked with developing a prototype interface between MDM and ECC using XI as the integration engine. Ideally, one would like to edit a list of materials in an Excel document, having MDM import the document using its “Import Server” and dump out an XML document using the “Syndication Server” for XI to pick up and process through to ECC. The scenario looks something like this (below image):
This blog is going to focus on the process after the materials have been imported into MDM, because after beating my head over the MDM Import Server for a day or two I finally realized that Excel documents are not supported by the current version of the Import Server when running on UNIX and therefore the only way to import that document is to manually open the Import Manager GUI program and import the document from there. Hopefully in the near future that issue will be resolved; however I’m not holding my breath.
I’m going to break this blog into a three part series. The first focusing on the MDM configuration, the second focusing on the XI configuration, and the third focusing on testing. Before I start it’s worth mentioning that I am not a very good technical writer, in fact I’m not a very good writer in general. In addition, I used to be a huge noob in the ways of integration (and I still am compared to most of you SDNers!), so I am going to explain this process in the manner than I would have liked when I was trying to figure it out. So it could get a bit lengthy. If you are looking for something a bit less detailed, this probably is the wrong blog to read. Also, I ran into a lot of issue while I was developing this scenario, so I may occasionally stop to explain a potential pitfall.
Alright, enough introduction eh? Lets jump into it…..
1. MDM Configuration
As you most likely know, a remote GUI program is used to connect to the server and manage it. Unlike most SAP applications, the MDM GUI looks more like Microsoft SQL Server than SAP. And from the looks of it, the database (I’m using Oracle) is left alone for the most part. Most of the time SAP apps like to obfuscate the database into their own weird structure, but MDM looks like it uses the default configuration of the database from the installation.
1.1 MDM Console
The first thing that we need to do is to mount the MDM server in your MDM Console GUI. When you open the console you will see the “SAP MDM Servers” in the left column.
Right click “SAP MDM Servers” -> Mount MDM Server…
Enter a server address or select one from the drop down menu and press OK.
By default, MDM installs with three basic repositories: Vendor, Material, and Customer. You can choose to create your own repository, but in this example we’re going to use the Material repository that has already been created for us. If you want to create your own repository you will have to define a bunch of stuff to make up the schema and I don’t feel like doing all that work. You can of course duplicate an existing repository and save yourself the time of defining the material data structure. It is important to note that you cannot make any changes to a repository in the MDM Console while that repository is currently loaded. If you want to make changes to it, you must first unload the repository.
1.1.2 Create User
Expand the Admin tree, near the bottom of the repository items.
In the “Users” section of the screen in the right hand column, right click -> add user.
1.1.3 Create Remote System
From the Admin tree, select “Remote Systems”.
In the right hand section of the screen, in the Remote Systems section, right click -> Add Client System
Enter the name (in this case I used “ECC”), Code (I believe it’s standard to enter the name of the system as referred to in the XI system landscape directory, for this example I’ll use “ECC”), type (Inbound / Outbound), and key generation.
When you create a port in the MDM console, the server automatically creates a set of directories on the physical server for files to be imported and exported, and logs regarding this port to be generated. Essentially, a port is just a way to define what map to use and the basics on where to generate the files it exports or imports. Don’t confuse the term “port” with the traditional SAP meaning for port, being a piece of the ALE configuration attached to an RFC destination.
From the Admin tree, select "Ports".
In the Ports window, right click -> Add Port.
Enter the port information in the “Port Detail” section of the screen. Select type “Outbound”, and the remote system that we created in the last step. Leave the map entry blank, as we’ll be creating our map soon, so we will come back to this later. Pay close attention to the “Processing” field. If you select manual, then MDM is expecting you to manually export materials using the MDM Syndicator program. If you select Auto, then the syndication server will automatically create XML files based on your mapping and place them in the port directory that is created on your server when you save this port. Be careful, I would recommend selecting manual until we change the settings for the syndication server, otherwise you may find yourself with 5 billion little XML files that it generates. When I was first building this interface out, the syndication server would create a new file every 1 second for each material in the Data Manager, and it would not overwrite the files, it was generating new ones. So it took me a while to clean out that directory.
1.1.5 Import XML Schema
In order to perform the mapping in the Syndication Server, we need to define the XML schema to which we will map. In our case, we’re going to be using an XML representation of the MATMAS05 IDoc. MDM ships with the XML schemas for MATMAS03, 04, and 05. But just in case you were interested in importing your own schema down the road, I thought it would be a good idea to walk through the process.
In the Admin tree, select XML schemas.
In the XML Schemas section, right click -> Add XML Schema.
Enter the name of the schema, and choose the XSD file that you would like to import, in this case we are using a MATMAS05 XSD generated from XI.
Now before we move on to creating a sample material in the MDM Data Manager, we have to load this repository. Otherwise we will not be able to connect to it via the Data Manager GUI program.
Right click the Material repository -> Load Repository -> Immediate.
1.2 MDM Data Manager
If you have never logged into the Material repository, it may not show up in the repository list at first, so click the button that looks [ … ]
In the “Choose Repository” pop-up window, enter the address of your MDM server and press enter. When it contacts that server (should take a second or two) it will generate the repository list, so you can simply select the repository from the drop down menu and press OK.
Finish entering your credentials for the server, username (created earlier), password, and language. Then press OK to log into the system.
To create a new material, in the records section of the screen right click -> add.
I am not going to explain all the fields in which you should fill out for the material, or what to enter. That should depend upon your business. But keep in mind that I will be ultimately creating a MATMAS05 IDoc at the end of this tutorial, so it may be worthwhile to enter the information that is required for a MATMAS05 IDoc if you would like to stay consistent with what I’m doing. As soon as you enter the information, the data should be saved to the repository in which you are working in.
1.3 MDM Syndicator
Follow the same process as before to connect to the Material repository if you have never connected using the MDM Syndicator before.
1.3.1 Create Map
We must start by defining the structure of the message we would like to generate. In this case, we are planning on ultimately generating an IDoc with XI, so it will make things easier if we can export an XML representation of the MATMAS05 IDoc. So we will start by defining our destination items as MATMAS05.
Click File -> Destination Properties.
In the pop-up window, select XML Schema as the type, the remote system you created earlier as the remote system, the XML schema for MATMAS05, and press OK.
You may notice that the “Destination Items” section of the screen should now look similar to the screen shot below:
Now, I am not going to explain the details of the MATMAS05 IDoc, and which fields must be mapped, as the functional specs should explain that. But I will demonstrate a few field maps so that the process is outlined.
Expand the E1MARAM segment and scroll down to E1MAKTM.
Select the E1MAKTM segment, and select the Description field in the source items, and press the “map” button.
Notice that once you click the map button, a green arrow appears next to the fields that have been mapped together. That lets you know that the field is mapped. To unmap them, press the unmap button. You may continue performing your mappings as defined in your functional specifications, or you can just make a few quick mappings and continue on, as this is only for a prototype interface anyway. Once you have finished with the mappings that you want, select the Destination Preview tab so see the XML document that the syndicator will generate.
1.3.2 Test Syndication
Let’s now test out the Syndication Server by manually executing a syndication process to verify that the XML documents can be generated correctly.
Press the Red Exclamation mark button.
Enter a filename and a location to save the XML files, and press Save.
The Syndicator will generate an XML file for each of the materials that you have listed in your Data Manager. Try opening one of the files to make sure that the data was created correctly.
1.3.3 Configure Syndication Server
I’m not sure if the configuration is the same on Windows as it is on UNIX, but I can only figure it is very similar. From what I understand, SAP bought MDM and then tried to port it over to UNIX, as it was written on Windows. We all know how well that works….or doesn’t work. Consequently, the current version of MDM is a real pain to work with on UNIX.
Log into your MDM server and navigate to the bin directory. On UNIX it may be something like /opt/MDM/bin
As you can see there is a file for the mdis (import server) and a file for the mdss (syndication server). I wish we could take this time to configure the mdis as well, but as this point it’s useless on my server, so I’m not going to bother, since Excel is not a supported file format in the current release. Instead, we will configure the syndication server. We do this by editing the mdss.ini file. I am going to use the VI editor to make changes to the ini file, but if you prefer, feel free to copy the file to your windows computer and edit it graphically.
Change the “Auto Syndication Task Delay (seconds)” setting to be a value that you can live with. This of course depends upon what your business requirements are.
Save the file.
Next we need to start the syndication server up and make sure that it’s working.
While in the /bin directory, execute the command: ./mdss
On Windows hosts, open your “Services” program, and scroll down until you see the three services that MDM installs. You can simply right click -> start service on the syndication server.
To verify that the server is actually working, navigate to the directory of the port that you created. Any port set to automatic syndication in the Console will instantly start syndicating and generating XML files. The file path should be something as follows:
But this of course will depend upon the settings that you entered when creating the port.
This concludes the first of the three part series on this interface scenario. I need a break, and I’m tired of writing, so I will be hopefully posting the second part of this blog (regarding the XI configuration) in the very near future.