<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SAP Integration Experts - DataXstream &#187; XI/PI</title>
	<atom:link href="http://www.dataxstream.com/tag/xipi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dataxstream.com</link>
	<description>SAP Certified Consultants</description>
	<lastBuildDate>Sat, 24 Jul 2010 11:29:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>What’s in a Naming Convention? Part II</title>
		<link>http://www.dataxstream.com/2010/05/what%e2%80%99s-in-a-naming-convention-part-ii/</link>
		<comments>http://www.dataxstream.com/2010/05/what%e2%80%99s-in-a-naming-convention-part-ii/#comments</comments>
		<pubDate>Tue, 25 May 2010 13:30:29 +0000</pubDate>
		<dc:creator>Dave Morin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP Interface Blog]]></category>
		<category><![CDATA[SAP PI Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[David Morin]]></category>
		<category><![CDATA[namespace]]></category>
		<category><![CDATA[SAP PI]]></category>
		<category><![CDATA[XI]]></category>
		<category><![CDATA[XI/PI]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=5056</guid>
		<description><![CDATA[ I would like to say that I had a great DataXstream ESR-specific naming convention, however the SAP naming convention guide for PI 7.1 does the job perfectly.  In this post I would like to point out some things that I feel most people miss, as well as some things that I think are particularly interesting.]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://www.dataxstream.com/2010/05/what’s-in-a-naming-convention/">last post</a>, I discussed naming the naming convention that DataXstream recommends for SAP PI Integration Directory (ID) objects.  I would like to say that I had a great DataXstream ESR-specific naming convention, however the SAP naming convention guide for PI 7.1 does the job perfectly. Here is the link to the  PI 7.1 naming convention guide <a href="http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/40a66d0e-fe5e-2c10-8a85-e418b59ab36a?QuickLink=index&amp;overridelayout=true">http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/40a66d0e-fe5e-2c10-8a85-e418b59ab36a?QuickLink=index&amp;overridelayout=true</a> . I would like to point out some things that I feel most people miss, as well as some things that I think are particularly interesting.</p>
<h3><strong>Object Name Prefixes</strong></h3>
<p>I have seen a lot of places use prefixes or suffixes before objects such as or dt_ or _mt. I have never really been a fan of these prefixes and suffixes, and apparently neither is the above linked naming convention guide. The reason being is that they are unnecessary. It would be difficult to confuse a message type with a data type in a real interface scenario, even if troubleshooting an unknown broken object. Plus it makes message mapping unnecessarily confusing and long since it’s not clear whether to add the prefix, i.e. MT_one_to_MT_two. Good descriptive names are usually all that you need e.g. DEBMAS_to_Customer. The only possible exception to a no-suffix-or-prefix-policy is the service interface, as sometimes it is useful to know which direction and type a service interface is. An argument for a prefix or a suffix to describe a service interface would be to assist in understanding the flow from an SAP perspective in the event that someone who didn’t develop the interface had to come behind and troubleshoot. A argument against would be the fact that it looks silly if you use it for a web service, because you have a name that doesn’t mean anything to a third party user (note operation mappings are told to omit the prefix of direction and mode in the SAP guide).</p>
<p>One interesting thing that I noticed in my investigation of PI 7.1 EHP1 is that it appears that naming conventions on PI can be validated. If the object names do not conform to a naming convention a message will appear. Ter perform this check in the ESR go to menu <em>Tools&gt;Component Check</em>.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2010/05/ESB-Component-Check1.jpg" rel="shadowbox[post-5056];player=img;"><img class="alignnone size-full wp-image-5115" title="ESB-Component-Check" src="http://www.dataxstream.com/wp-content/uploads/2010/05/ESB-Component-Check1.jpg" alt="" width="551" height="434" /></a></p>
<p>Select &#8220;Governance&#8221; and &#8220;Interface Name Checks&#8221;:</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2010/05/Interface-Name-Checks1.jpg" rel="shadowbox[post-5056];player=img;"><img class="alignnone size-full wp-image-5116" title="Interface Name Checks" src="http://www.dataxstream.com/wp-content/uploads/2010/05/Interface-Name-Checks1.jpg" alt="" width="598" height="494" /></a></p>
<p>If the service interface does not end with (In/Out)(SYNC/ASY) the interface check will show as an error (does not impact interface processing). I created 2 interfaces: one good and one bad to show this error.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2010/05/Results.jpg" rel="shadowbox[post-5056];player=img;"><img class="alignnone size-full wp-image-5117" title="Results" src="http://www.dataxstream.com/wp-content/uploads/2010/05/Results.jpg" alt="" width="599" height="494" /></a></p>
<p>My suspicion is that SAP will put more in place to force consistent naming standards depending on the service interface pattern in future releases.</p>
<h3><strong>Using a software component and Namespace for each “side” of an interface</strong></h3>
<p>All objects of an interface should not be grouped in a single namespace. They should to be split among the Software Component Versions of the systems being interfaced. Otherwise when you go to configure, you will not be able to see your operational mapping (OM) in the dropdown box without having to select all in the dropdown menu. A general rule of thumb is: if it’s not easy to configure, odds are you have probably done something wrong. Another reason why an object might not appear in the dropdown menu (for example for an operations mapping on an interface mapping) would be if the installed checkbox is not clicked on the SLD. When done correctly, most interfaces should be able to be configured quickly and intuitively in the integration directory (ID) without the need to select from all SWCV from dropdown menus on the integration builder.</p>
<p>Whatever naming convention you choose to use for the ESR, the important thing to remember is that adhering to the standard makes production support and troubleshooting faster and easier.
<script src="http://www.stumbleupon.com/hostedbadge.php?s=5"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2010/05/what%e2%80%99s-in-a-naming-convention-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Troubleshooting the Services Registry</title>
		<link>http://www.dataxstream.com/2010/02/troubleshooting-the-services-registry/</link>
		<comments>http://www.dataxstream.com/2010/02/troubleshooting-the-services-registry/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 02:07:45 +0000</pubDate>
		<dc:creator>Dave Morin</dc:creator>
				<category><![CDATA[SAP Interface Blog]]></category>
		<category><![CDATA[SAP PI Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[David Morin]]></category>
		<category><![CDATA[PI]]></category>
		<category><![CDATA[SAP PI]]></category>
		<category><![CDATA[UDDI]]></category>
		<category><![CDATA[web service]]></category>
		<category><![CDATA[XI]]></category>
		<category><![CDATA[XI/PI]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=4441</guid>
		<description><![CDATA[Recently I set up the services registry for PI 7.1 EHP1 for a client of ours. Although it seemed like it would be a simple process, I ran into a 401 authorization issue and another issue where  web services were not publishing to the services registry. Looking online there are a lot of people who ran [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I set up the services registry for PI 7.1 EHP1 for a client of ours. Although it seemed like it would be a simple process, I ran into a 401 authorization issue and another issue where  web services were not publishing to the services registry. Looking online there are a lot of people who ran into the same issues as I did, so I am providing, here, the steps to perform if your services registry isn’t working.</p>
<p><span id="more-4441"></span></p>
<p>Please note that I was unable to find the wizard for setting it the Services registry in PI 7.1 EPH1, which means I did it manually.</p>
<h3><strong>Make sure everything is correct in the Services Registry Management </strong></h3>
<p>Go to the NWA (http://host:port/nwa).</p>
<p>Go to <em>SOA Management&gt; Technical Configuration&gt;Services Registry Management</em>.
In theory, there is nothing to do here, however I did specify the discovery URL api parameter as the hostname of the server (no port). If you have changed some settings, on the maintenance tab you can click reinitialize, which should reset any changes you have made back to the initial state.</p>
<h3><strong>Configure the ServicesRegistrySiPort</strong></h3>
<p>Go to <em>SOA Management&gt; Application and Scenario Communication&gt; Single Service Administration</em></p>
<p>Click the Consumer Proxies tab.</p>
<p>Search for &#8220;ServicesRegistrySi&#8221;.</p>
<p>Click on the result and click the Configuration Tab and click on ServicesRegistrySiPort.</p>
<p>The service endpoint name should be ServicesRegistrySiPort.  Don’t change it.</p>
<p>Click security.</p>
<p>You have to give it an http authentication. If you don&#8217;t give the authentication, you will eventually have problems like not being able to publish to the SR, even though you may be able to access the registry.</p>
<p>Click on the user ID/ password, click details, and input your http authentication parameters.</p>
<p style="text-align: center;"><a href="http://www.dataxstream.com/wp-content/uploads/2010/02/ServiceRegistrySI1.png" rel="shadowbox[post-4441];player=img;"><img class="aligncenter size-full wp-image-4455" src="http://www.dataxstream.com/wp-content/uploads/2010/02/ServiceRegistrySI1.png" alt="" width="567" height="596" /></a></p>
<h3><strong>Configure the third party UDDI (Only if not using SAP’s UDDI)</strong></h3>
<p>If you are using a non-sap UDDI, you will need to go to <em>NWA&gt;Destination Template Management</em> and create a UDDI_DESTINATION and a CLASSIFICATION_DESTINATION to point to the respective urls of your uddi. Don’t forget to click security and select User ID/Password Authentication for both destinations. Otherwise, you will get a 401 not authorized error when you try to access the services registry&#8211;similar to if you mistyped your password at ServicesRegistrySiPort.</p>
<p style="text-align: center;"><a href="http://www.dataxstream.com/wp-content/uploads/2010/02/3rd-party-uddi.png" rel="shadowbox[post-4441];player=img;">
</a><a href="http://www.dataxstream.com/wp-content/uploads/2010/02/3rd-party-uddi.png" rel="shadowbox[post-4441];player=img;"></a><a href="http://www.dataxstream.com/wp-content/uploads/2010/02/3rd-party-uddi1.png" rel="shadowbox[post-4441];player=img;"><img class="aligncenter size-full wp-image-4453" src="http://www.dataxstream.com/wp-content/uploads/2010/02/3rd-party-uddi1.png" alt="" width="493" height="503" /></a></p>
<h3><strong>Security</strong></h3>
<p style="text-align: center;">Make sure that your user has  UDDI_TierN and SERVICES_REGISTRY_READ_WRITE authorizations or you will get a 401 not authorized error.  Of course. in your system you should use a technical user instead of your userid as which I did for the purposes of this blog.<a href="http://www.dataxstream.com/wp-content/uploads/2010/02/Security-Authorizations1.png" rel="shadowbox[post-4441];player=img;"><img class="aligncenter size-full  wp-image-4454" src="http://www.dataxstream.com/wp-content/uploads/2010/02/Security-Authorizations1.png" alt="" width="557" height="441" /></a></p>
<p>Please note, I did run into an issue where it suddenly stopped working a day everything was configured. All I can say is Gremlins. I switched the user to a technical user with the authorization listed above on the ServicesRegistrySiPort as well as on the destination templates and I haven’t had a problem since.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2010/02/troubleshooting-the-services-registry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changed RFC Structure Not Propagating to XI/PI Runtime</title>
		<link>http://www.dataxstream.com/2009/11/changed-rfc-structure-not-propagating-to-xipi-runtime/</link>
		<comments>http://www.dataxstream.com/2009/11/changed-rfc-structure-not-propagating-to-xipi-runtime/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 15:04:14 +0000</pubDate>
		<dc:creator>Craig Stasila</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP PI Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[Craig Stasila]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[PI]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[XI]]></category>
		<category><![CDATA[XI/PI]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=3257</guid>
		<description><![CDATA[In support of an synchronous XI interface (SOAP-&#62;XI-&#62;RFC), I changed the underlying structure of one of the RFC parameters.  I appended some fields to the end of a return structure in ECC.  I re-imported the RFC meta data to the Integration Repository as always and mapped the fields accordingly.  When I executed the interface, the fields that [...]]]></description>
			<content:encoded><![CDATA[<p>In support of an synchronous XI interface (SOAP-&gt;XI-&gt;RFC), I changed the underlying structure of one of the RFC parameters.  I appended some fields to the end of a return structure in ECC.  I re-imported the RFC meta data to the Integration Repository as always and mapped the fields accordingly.  When I executed the interface, the fields that I added did NOT appear in the XML.  This is because the XI runtime cache did not have the updated metadata for the RFC.</p>
<p>To update the runtime cache (called CPA Cache), enter the following URL in your web browser <em>http://&lt;host&gt;:5&lt;sys#&gt;00/CPACache/refresh?mode=full</em>.  XI will do the rest of the work for you.  After the CPA cache is refreshed, the new RFC meta data reflects the newly added fields.</p>
<p>These other CPA Cache URLs may also be helpful:</p>
<blockquote><p><strong>CPA Cache Monitoring: </strong> http://&lt;host&gt;:5&lt;sys#&gt;00/CPACache<br/>
<strong>Delta CPA Cache Refresh: </strong> http://&lt;host&gt;:5&lt;sys#&gt;00/CPACache/refresh?mode=delta<br/>
<strong>Full CPA Cache Refresh: </strong> http://&lt;host&gt;:5&lt;sys#&gt;00/CPACache/refresh?mode=full</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/11/changed-rfc-structure-not-propagating-to-xipi-runtime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Allow Additional Mapping Types in SAP XI/PI</title>
		<link>http://www.dataxstream.com/2009/09/allow-additional-mapping-types/</link>
		<comments>http://www.dataxstream.com/2009/09/allow-additional-mapping-types/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 13:00:06 +0000</pubDate>
		<dc:creator>Craig Stasila</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP PI Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[Craig Stasila]]></category>
		<category><![CDATA[PI]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[XI]]></category>
		<category><![CDATA[XI/PI]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=2256</guid>
		<description><![CDATA[SAP PI is a powerful integration engine that allows developers a variety of methods for implementing transformation logic.  As a long-time ABAP developer, one of my favorite methods to implement transformation logic is using ABAP.  This transformation option is not enabled in SAP XI/PI out of the box.  While information regarding how to enable ABAP [...]]]></description>
			<content:encoded><![CDATA[<p>SAP PI is a powerful integration engine that allows developers a variety of methods for implementing transformation logic.  As a long-time ABAP developer, one of my favorite methods to implement transformation logic is using ABAP.  This transformation option is not enabled in SAP XI/PI out of the box.  While information regarding how to enable ABAP transformations can be found in SAP help, I have found it easier to have step-by-step instructions.</p>
<p><span id="more-2256"></span></p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/09/01-Default-Mapping-Types.jpg" rel="shadowbox[post-2256];player=img;"><img class="alignleft size-full wp-image-2257" title="01 - Default Mapping Types" src="http://www.dataxstream.com/wp-content/uploads/2009/09/01-Default-Mapping-Types.jpg" alt="01 - Default Mapping Types" width="342" height="144" /></a>By default XI/PI allows message mappings, Java class maps, Java XSLT maps. All these mapping types execute on the Java Stack.  There are times where mapping could/should be done on ABAP stack. XI/PI allows for the ABAP stack to handle mapping, but it is not enabled by default.  My next blog posting will cover when to use a ABAP map and how to implement transformation in ABAP.</p>
<p>The graphic at left shows the default mapping types in the Interface Mapping definition of the Integration Repository.</p>
<p>The first step to enable ABAP stack mapping logic is to navigate your browser to the SAP XI/PI Administration application.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/09/02-XI-Administration1.jpg" rel="shadowbox[post-2256];player=img;"><img class="size-full wp-image-2259 alignnone" title="02 - XI Administration" src="http://www.dataxstream.com/wp-content/uploads/2009/09/02-XI-Administration1.jpg" alt="02 - XI Administration" width="602" height="290" /></a></p>
<p>We will be modifying the Exchange Profile to allow SAP XI/PI to utilize the additional mapping types.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/09/03-Exchange-Profile.jpg" rel="shadowbox[post-2256];player=img;"><img class="size-full wp-image-2260 alignnone" title="03 - Exchange Profile" src="http://www.dataxstream.com/wp-content/uploads/2009/09/03-Exchange-Profile.jpg" alt="03 - Exchange Profile" width="602" height="407" /></a></p>
<p>The Exchange Profile setting we want to change is com.sap.aii.repository.mapping.additionaltypes.  This setting is located via the following hierarchy: &#8220;IntegrationBuilder\IntegrationBuilder.Repository&#8221;</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/09/04-com.sap.aii.repository.mapping.additionaltypes.jpg" rel="shadowbox[post-2256];player=img;"><img class="size-full wp-image-2261 alignnone" title="04 - com.sap.aii.repository.mapping.additionaltypes" src="http://www.dataxstream.com/wp-content/uploads/2009/09/04-com.sap.aii.repository.mapping.additionaltypes.jpg" alt="04 - com.sap.aii.repository.mapping.additionaltypes" width="626" height="421" /></a></p>
<p>Once you navigate to the correct Exchange Profile setting, enter the following value:</p>
<p><code>R3_ABAP|Abap-class;R3_XSLT|XSL (ABAP Engine)</code></p>
<p>The above string specifies that, in addition to the standard mapping types delivered by the Java stack, we will also be using ABAP code, and XSLT translations using the ABAP stack.</p>
<p>Once you have entered the data, press the save button.</p>
<p>Changes to the Exchange Profile require the Java instance to be restarted.  When appropriate, restart the Java instance.</p>
<p>Once the Java instance has been restarted, the new mapping types can be seen in the Interface Mapping definition of the Integration Repository.  Your SAP PI system is now ready to execute data transformations using the ABAP stack.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/09/05-ABAP-class-mapping.jpg" rel="shadowbox[post-2256];player=img;"><img class="alignnone size-full wp-image-2266" title="05 - ABAP-class mapping" src="http://www.dataxstream.com/wp-content/uploads/2009/09/05-ABAP-class-mapping.jpg" alt="05 - ABAP-class mapping" width="337" height="174" /></a></p>
<p>For more information, refer to <a href="http://help.sap.com/saphelp_nw04/helpdata/en/10/5abb2d9df242f6a62e22e027a6c382/content.htm" target="_blank">SAP Help</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/09/allow-additional-mapping-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fun With SAP PI Message-Mapping</title>
		<link>http://www.dataxstream.com/2009/06/fun-with-message-mapping/</link>
		<comments>http://www.dataxstream.com/2009/06/fun-with-message-mapping/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 20:12:49 +0000</pubDate>
		<dc:creator>Craig Stasila</dc:creator>
				<category><![CDATA[SAP PI Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[Craig Stasila]]></category>
		<category><![CDATA[Message Mapping]]></category>
		<category><![CDATA[XI/PI]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=1188</guid>
		<description><![CDATA[My previous post discussed the &#8220;hidden&#8221; menu in the SAP PI message mapping tool that can only be unlocked by pressing &#60;Ctrl&#62; + &#60;Shift&#62; while right clicking in the data flow editor area.  Hands down, the best feature of this menu is the import/export functionality.  I have no idea why the SAP developers buried such [...]]]></description>
			<content:encoded><![CDATA[<p>My previous post discussed the &#8220;hidden&#8221; menu in the SAP PI message mapping tool that can only be unlocked by pressing &lt;Ctrl&gt; + &lt;Shift&gt; while right clicking in the data flow editor area.  Hands down, the best feature of this menu is the import/export functionality.  I have no idea why the SAP developers buried such a useful feature in such a hard-to-find menu.  Whatever the reason, now that we know that we can import and export message mappings, we can exploit this fact to make our map-developing lives easier.</p>
<p>Most SAP PI developers have had a situation where a relatively minor change to the target message causes real havoc to the entire message mapping.  For <span>relatively</span> small maps, it may not be a big deal. For maps with complex logic, this can be a big deal requiring hours of tedious rework.  Recently, I was faced with a requirement change that required my message mapping to change correlations from 1:1 to 1:N.  Since this interface used the RFC adapter (which supports multiple messages), I was able to implement a 1:N multi-mapping message split. In the new interface design, the file adapter will process one file and pass it to the integration engine.  The integration engine will perform a multi-mapping message split to break-up the message.  The new, individual messages will be sent via one adapter engine call to the RFC adapter.  The RFC adapter will handle each message individually, calling each in a separate logical unit of work (LUW).</p>
<p>The steps below will detail how to switch a message mapping from a 1:1 correlation to a 1:N correlation <strong>without remapping anything!</strong>
<span id="more-1188"></span>
<em><strong>Note:</strong> The steps outlined below assume a moderate understanding of SAP XI/PI and gives does not give comprehensive instructions for every step.  Please post any questions to the comments section of this blog.</em></p>
<ul>
<li><strong>Step 1</strong> Before starting anything, make a safe copy of your message mapping. This will give you the ability to perform before and after comparisons and afford you some protection if something were to happen to your original mapping</li>
<li><strong>Step 2</strong> Use the hidden menu command (&lt;Ctrl&gt; + &lt;Shift&gt; + right click for those of you not paying attention) to download the current version of your message mapping.  SAP PI will save a file with the extension .mte.<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/02-export.jpg" rel="shadowbox[post-1188];player=img;"><img src="http://www.dataxstream.com/wp-content/uploads/2009/06/02-export.jpg" alt="" width="472" height="238" />
</a>The .mte file you just exported is really just an XML file.  Opening the .mte file in Internet Explorer will yield something that looks like this
<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/03-mapping-xml.jpg" rel="shadowbox[post-1188];player=img;"><img src="http://www.dataxstream.com/wp-content/uploads/2009/06/03-mapping-xml.jpg" alt="" width="588" height="660" /></a>
The entire message mapping is contained in the file, including any user-defined functions, brick layout, and test cases.  This will be <strong>very</strong> useful!</li>
<li><strong>Step 2</strong> Change the target occurrence in the message mapping. This is done on the <em>Messages</em> tab of the message mapping.
<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/00-messages.jpg" rel="shadowbox[post-1188];player=img;"><img src="http://www.dataxstream.com/wp-content/uploads/2009/06/00-messages.jpg" alt="" width="560" height="347" />
</a>Changing the occurrence on the target message <em>appears</em> to have little effect on the message mapping, until you switch back to the <em>Design</em> tab and you see this ugly message box:
<img src="http://www.dataxstream.com/wp-content/uploads/2009/06/01-error-message.jpg" alt="" />
<strong>Oh noes!</strong> PI added <em>&lt;Messages&gt;</em> and <em>&lt;Message1&gt;</em> tags to the source and target messages! Since the target message structure changed,  all of my hard-fought mappings are lost! Who can save me from hours of tedious remapping?
Fear not, plucky mapper, in a few steps, <strong>you</strong> can save the day by  converting the entire map without remapping a thing!</li>
<li><strong>Step 3</strong> Use your favorite text editor to open the .mte mapping file.  We will use the find/replace functionality to mass change the source mappings.  You will need the services of the copy of the map you made in step 1.  To get the value to find, copy the path of the root node in the unscathed map. To get the value to replace, copy the path of the node just below the &lt;Message1&gt; node in the new map.
<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/04-copy-path.jpg" rel="shadowbox[post-1188];player=img;"><img src="http://www.dataxstream.com/wp-content/uploads/2009/06/04-copy-path.jpg" alt="" width="328" height="107" /></a>
Here is the find/replace text for the example in the graphic:</p>
<p><code>Replace:
/ns0:Personnel_MT
with
/ns0:Messages/ns0:Message1/ns1:Personnel_MT</code></li>
<li><strong>Step 4</strong> Repeat step 3 for the target message.<code>Replace:
/ns1:Z_BAPI_II_KENEXA
with
/ns0:Messages/ns0:Message1/ns2:Z_BAPI_II_KENEXA</code></p>
<p>Save the .mte file in the text editor</li>
<li><strong>Step 5</strong> Providing you didn&#8217;t inadvertently screw something up, you should be able to import the .mte file to the Integration Builder
<a style="text-decoration: none;" href="http://www.dataxstream.com/wp-content/uploads/2009/06/05-import.jpg" rel="shadowbox[post-1188];player=img;"><img src="http://www.dataxstream.com/wp-content/uploads/2009/06/05-import.jpg" alt="" width="450" height="196" /></a></li>
<li><strong>Step 6</strong> Now change the occurrence on the corresponding interface mapping to match the message mapping occurrence set in step 2.  Save and activate all of your changes.</li>
<li><strong>Step 7</strong> The final step is to change the Interface Determination in the Integration Directory to utilize your new multi-mapping message split.</li>
</ul>
<p>As you can see, the ability to export/import message mappings can really save you a lot of time.  If you have any other tips regarding message mapping export/import, please share the in the comments.</p>
<p>Happy Mapping!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/06/fun-with-message-mapping/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PI Message Mapping Editor &#8220;Hidden&#8221; Menu</title>
		<link>http://www.dataxstream.com/2009/06/pi-message-mapping-editor-hidden-menu/</link>
		<comments>http://www.dataxstream.com/2009/06/pi-message-mapping-editor-hidden-menu/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 14:05:07 +0000</pubDate>
		<dc:creator>Craig Stasila</dc:creator>
				<category><![CDATA[SAP PI Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[Craig Stasila]]></category>
		<category><![CDATA[Message Mapping]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[XI/PI]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=1131</guid>
		<description><![CDATA[When I was young, one of my favorite Nintendo games was Contra by Konami Corporation (old-skool NES).  Standard play with Contra afforded you with 3 lives.  I was not particularly adept at Contra (I only excel at driving games) and 3 lives was not nearly enough for me.  The only way the game was fun for me was [...]]]></description>
			<content:encoded><![CDATA[<p>When I was young, one of my favorite Nintendo games was Contra by Konami Corporation (old-skool NES).  Standard play with Contra afforded you with 3 lives.  I was not particularly adept at Contra (I only excel at driving games) and 3 lives was not nearly enough for me.  The only way the game was fun for me was to enter the Konami &#8220;cheat code&#8221;.  This cheat code gave me 3o lives!  I could get 10x the Contra playing excitement before I got obliterated by one of the many end-of-level &#8220;bosses&#8221;.  It was with the help of that cheat code that my friend Jeff and I were able to beat the game during a marathon, overnight Contra session.  It has been over 20 years since I played Contra, but I still remember the cheat code key sequence:
<code>up, up, down, down, left, right, left, right, B, A, start</code></p>
<p>Now that I&#8217;m a little older, I&#8217;ve graduated from NES to SAP PI.  It&#8217;s not nearly as fun, but every bit as challenging.  And at least I get paid to do it.  I looked, but could not find anybody to pay me to play Contra.  Instead of the many end of level &#8220;bosses&#8221; the only boss I have to worry about is my project manager&#8211;I don&#8217;t know which one is more evil.</p>
<p>Similar to Contra, the message mapping editor in XI/PI has a menu with helpful items that is &#8220;hidden.&#8221;  Unless, that is, you know the secret key combination to unlock it.
In PI, open any message mapping in edit mode.  While holding the &lt;Ctrl&gt;+&lt;Shift&gt; keys, right click in the data flow editor window.  You will be rewarded with this menu.</p>
<p style="text-align: center;"><a href="http://www.dataxstream.com/wp-content/uploads/2009/06/01-menu.jpg" rel="shadowbox[post-1131];player=img;"><img class="aligncenter" src="http://www.dataxstream.com/wp-content/uploads/2009/06/01-menu.jpg" alt="" width="477" height="299" /></a></p>
<p>Here is a short rundown of some of the menu options:</p>
<ul>
<li><strong><span style="text-decoration: underline;">Last Used</span></strong> This menu keeps track of recently used mapping functions.  It can be a real time saver if you are using mapping functions from multiple function groups.</li>
<li><strong><span style="text-decoration: underline;">Tools\Export Tools\Import</span></strong> The import/export functionality of the message mapping editor is, single handedly, the best feature of the hidden menu.  The import functionality allows you to transfer message mappings from disparate SAP PI systems.  The import/export functions also can reduce work in other ways that I will discuss in detail in later blogs.</li>
<li><strong><span style="text-decoration: underline;">Tools\Export Tools\Export</span></strong> The export function downloads the source of your message mapping to your local hard drive.  The file includes the map&#8217;s header data, data flow logic, user-defined functions, test cases, and documentation.</li>
<li><span style="text-decoration: underline;"><strong>Tools\Color schema\Schema XI20 SP3</strong></span> This option changes the data flow editor color scheme to look like it did in XI2.0 SP3.  I never used XI 2.0, so I don&#8217;t know if this color scheme is accurate.  I can tell you, however, that the brick colors are brighter in this color scheme<br />
<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/02-xi20-color-scheme.jpg" rel="shadowbox[post-1131];player=img;"><img style="border: 0px initial initial;" src="http://www.dataxstream.com/wp-content/uploads/2009/06/02-xi20-color-scheme.jpg" alt="" width="232" height="39" /></a></li>
<li><strong><span style="text-decoration: underline;">Tools\Color schema\Schema XI30 &#8220;accessible&#8221;</span></strong> Personally, I really like this color scheme. The data flow editor&#8217;s ugly grey background is replaced with a more eye-pleasing white.  I switch to this color scheme whenever I am capture screen grabs of the data flow editor for documentation purposes.<br />
<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/03-xi30-accessible-color-scheme.jpg" rel="shadowbox[post-1131];player=img;"><img style="border: 0px initial initial;" src="http://www.dataxstream.com/wp-content/uploads/2009/06/03-xi30-accessible-color-scheme.jpg" alt="" width="232" height="39" /></a></li>
<li><strong><span style="text-decoration: underline;">Tools\Local Compilation</span></strong> While I&#8217;m not quite sure exactly what this option does, I would assume that it changes on which system the compilation of the map occurs.  When checked I think the compilation of the map would occur on your workstation instead of the server, but I have not been able to confirm this thru testing, nor have I found any documentation to support this claim.</li>
<li><strong><span style="text-decoration: underline;">Tools\JarClassTest</span></strong> This togges the JarClassTest option.  I have yet to detect a difference in the behavior when compiling/testing, nor have I found any documentation on this item.  If anybody out there has any information, please post a comment.</li>
<li><strong><span style="text-decoration: underline;">Tools\Autosize Bricks</span></strong> This function is useful, especially if you have fields or user-defined functions (UDFs) that have long names.  By selecting this menu, you no longer have to guess what field or function each brick is for.<br />
<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/05-autosize-on.jpg" rel="shadowbox[post-1131];player=img;"><img class=" alignnone" title="Autosize On" src="http://www.dataxstream.com/wp-content/uploads/2009/06/05-autosize-on.jpg" border="0" alt="" width="233" height="40" /></a> vs.  <a href="http://www.dataxstream.com/wp-content/uploads/2009/06/04-autosize-off.jpg" rel="shadowbox[post-1131];player=img;"><img class=" alignnone" title="Autosize Off" src="http://www.dataxstream.com/wp-content/uploads/2009/06/04-autosize-off.jpg" border="0" alt="" width="232" height="39" /></a></li>
<li><strong><span style="text-decoration: underline;">Encoding</span></strong> This option allows you to change the encoding in the XML tag of the target message</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/06/pi-message-mapping-editor-hidden-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>1:N IDOC Receiver Without BPM.  Yes It&#8217;s Possible!</title>
		<link>http://www.dataxstream.com/2009/06/1n-idoc-receiver-without-bpm-yes-its-possible/</link>
		<comments>http://www.dataxstream.com/2009/06/1n-idoc-receiver-without-bpm-yes-its-possible/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 15:20:03 +0000</pubDate>
		<dc:creator>Craig Stasila</dc:creator>
				<category><![CDATA[SAP PI Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[Craig Stasila]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[XI/PI]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=1101</guid>
		<description><![CDATA[If you are using a file sender adapter and an IDOC receiver adapter, this little tip will allow you to process one file into many IDOCs.]]></description>
			<content:encoded><![CDATA[<p>For those of you familiar with PI, you know that it likes to deal with single messages, and not multiple messages in bulk. Many interfaces to &#8220;legacy&#8221; systems require single file interfaces. If you are using a file sender adapter and an IDOC receiver adapter, I have a little tip for you that will allow you to process one file into many IDOCs.</p>
<p>At a client of mine, I had to develop an interface to accept a file with IDOC acknowledgments. Our SAP system was sending data to an external system and the external system was sending back status messages that we were to post using ALEAUD. The status file was written periodically and could contain any number of records. Each record needed to be its own IDOC. The problem is that there is no &#8220;out of the box&#8221; solution that allows 1:N file to IDOC mapping. I searched a bit on <a href="http://sdn.sap.com/">SDN</a> and found that there were others with my same problem. All of the responses, however, suggested using BPM. That just didn&#8217;t seem right to me. BPMs are great and all, but I don&#8217;t feel like I should need to implement a BPM to do something as simple as 1:N correlations. I set out to find a better way to do 1:N correlations with IDOCs and found that is actually was <em>real</em> easy.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_0.jpg" rel="shadowbox[post-1101];player=img;"><img class="alignright" style="border: 0px initial initial;" src="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_0.jpg" border="0" alt="" width="400" height="232" /></a>After doing my research, I found that the issue is not with the IDOC adapter nor mapping engine, but rather the issue lies in the meta-data imported from the ECC instance. The meta-data describing the IDOCs has an element occurs of &#8220;1..1&#8243;&#8211;i.e. each message that contains an IDOC can contain one and only one IDOC. As it turns out, SAP handles the case if multiple IDOCs are passed to the receiver IDOC adapter. The mapping engine can easily handle multiple IDOC occurrence. The only limitation is the IDOC meta-data and, as I will show you below, that is an easy limitation to overcome.</p>
<ol>
<li>First, in your XI integration repository, download the IDOC definition from your ECC/R/3 instance as you normally would for any standard IDOC integration scenario.<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_1.jpg" rel="shadowbox[post-1101];player=img;"><img class="alignleft" src="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_1.jpg" border="0" alt="" width="400" height="232" /></a></li>
<li>Complete the message mapping and the rest of the integration scenario development as usual.<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_25.jpg" rel="shadowbox[post-1101];player=img;"><img class="alignnone" style="border: 0px initial initial;" src="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_25.jpg" border="0" alt="" width="400" height="105" /></a>Notice how the source message has an occurrence of 1..unbounded, but destination message is limited to an occurrence of 1..1. If the mapping were to remain this way, no matter how many IDOC tags would be in the source XML, one and only one IDOC tag will be created in the resultant XML. We&#8217;ll take care of this next.</li>
<li>Export the XSD for the IDOC to a file on your PC.<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_2.jpg" rel="shadowbox[post-1101];player=img;"><img class="alignleft" src="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_2.jpg" alt="" width="418" height="321" /></a></li>
<li>Open the file in a text editor and change the element named &#8220;IDOC&#8221;. Add the following text:<code>minOccurs="1" maxOccurs="unbounded"</code>
<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_3.jpg" rel="shadowbox[post-1101];player=img;"><img class="alignleft" style="border: 0px initial initial;" src="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_3.jpg" border="0" alt="" width="686" height="113" /></a>Save and close the XSD file.</li>
<li>In the message mapping created in step 2, import the XSD created in the previous step as the message reference for the IDOC. Notice how the evil &#8220;1..1&#8243; occurrence constraint on the IDOC tag is now &#8220;1..unbounded&#8221;!
<a href="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_4.jpg" rel="shadowbox[post-1101];player=img;"><img class="alignleft" style="border: 0px initial initial;" src="http://www.dataxstream.com/wp-content/uploads/2009/06/1ton-correlation_4.jpg" border="0" alt="" width="441" height="239" /></a></li>
<li>Multiple rows in the file will create multiple IDOCs! Are you as excited as I am?</li>
</ol>
<p>So, what did we learn today?</p>
<ul>
<li>You aren&#8217;t completely locked into the meta-data derived by SAP.</li>
<li>The reciver IDOC adapter is pretty forgiving (much more so than the sender IDOC adapter&#8211;more on that another day)</li>
<li>Most importantly, it is possible for a 1:N multi-message IDOC reciver correlation without BPM!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/06/1n-idoc-receiver-without-bpm-yes-its-possible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welcome to the DataXstream XI/PI Blog</title>
		<link>http://www.dataxstream.com/2009/06/welcome-to-the-dataxstream-xipi-blog/</link>
		<comments>http://www.dataxstream.com/2009/06/welcome-to-the-dataxstream-xipi-blog/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 21:56:54 +0000</pubDate>
		<dc:creator>Craig Stasila</dc:creator>
				<category><![CDATA[SAP PI Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[Craig Stasila]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[XI/PI]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=1074</guid>
		<description><![CDATA[Our team of consultants will post to this blog with tips, tricks, and experiences regarding SAP PI.]]></description>
			<content:encoded><![CDATA[<p>Hello.  Welcome to the DataXstream XI/PI Blog.  SAP XI/PI means SAP Exchange Infrastructure/Process Integration. SAP XI (the old name) and SAP PI (the new name) are SAP&#8217;s applications for integrating software solutions. Our team of consultants will post to this blog with tips, tricks, and experiences regarding SAP PI.</p>
<p>This blog was originally created on another blogging site. Recently, DataXstream migrated its web server to a platform that makes it easy to blog.  The first couple of posts to this blog will be reposts of entries from the old site.</p>
<p>Some topics in this blog will be very technical and may need some clarification. Please don&#8217;t hesitate to post questions, comments, or concerns.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/06/welcome-to-the-dataxstream-xipi-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
