<?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 Experts: VMware Virtualization &#124; Consulting &#124; Integration - DataXstream &#187; Steve Park</title>
	<atom:link href="http://www.dataxstream.com/tag/steve-park/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dataxstream.com</link>
	<description>SAP Certified Consultants</description>
	<lastBuildDate>Tue, 07 Feb 2012 23:57:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Integrate SAP Service Desk with a Third-Party Service Desk</title>
		<link>http://www.dataxstream.com/2011/07/integrate-sap-service-desk-with-a-third-party-service-desk/</link>
		<comments>http://www.dataxstream.com/2011/07/integrate-sap-service-desk-with-a-third-party-service-desk/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 14:15:49 +0000</pubDate>
		<dc:creator>Steve Park</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP SolMan Blog]]></category>
		<category><![CDATA[CA Service Desk Manager]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[SAP Service Desk]]></category>
		<category><![CDATA[SAP Solution Manager]]></category>
		<category><![CDATA[Service Desk]]></category>
		<category><![CDATA[SOLMAN]]></category>
		<category><![CDATA[Steve Park]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=7295</guid>
		<description><![CDATA[When companies implement SAP, Solution Manager (Solman) is also included in the installation.  Companies need to make a conscious decision of what they plan to use from Solman.  One of the features in Solman is the Service Desk ticketing system. SAP service desk is usually getting introduced in an environment in where an existing Third-party [...]]]></description>
			<content:encoded><![CDATA[<p>When companies implement SAP, Solution Manager (Solman) is also included in the installation.  Companies need to make a conscious decision of what they plan to use from Solman.  One of the features in Solman is the Service Desk ticketing system.</p>
<p>SAP service desk is usually getting introduced in an environment in where an existing Third-party Service Desk is already in use.  Because of this, companies need to make a decision on how they will integrate SAP Service Desk with their existing Third-party Service Desk.</p>
<p>In this blog, I will describe Service Desk integration scenarios and DataXstream’s involvement in the Service Desk integration space.</p>
<p><span id="more-7295"></span></p>
<h2><span style="color: #3366ff;">Scenarios of how companies can introduce Solman Service Desk</span></h2>
<p>There are many ways that Solman Service Desk can be integrated with other ticketing systems:</p>
<ol>
<li>All tickets are managed in SAP Service Desk and existing ticketing system is retired
<ul>
<li>Easy for companies that don’t have an existing ticketing system</li>
</ul>
</li>
<li>All tickets are managed in Third-Party Service Desk and SAP Service Desk is not used.
<ul>
<li>Easy for companies that don’t want to train and develop new processes</li>
</ul>
</li>
<li>SAP Service Desk manages SAP related tickets and Third-Party Service desk manages general IT related tickets
<ul>
<li>Environment where it’s decided that the support is divided between SAP issues and General IT issues.</li>
<li>Integration between SAP service desk and Third-party Service is needed.  An SAP related ticket can be created in the Third-Party Service desk, Since it is an SAP related ticket, this ticket can be ‘sent’ over to SAP Service Desk for resolution or vice versa.</li>
</ul>
</li>
<li>SAP Service Desk and Third-Party Service Desk both exist, but only want one Service Desk to contain all the tickets.
<ul>
<li>All of SAP Service Desk related tickets can be  synced over to the Third-Party Service desk ticket or vice versa.</li>
</ul>
</li>
</ol>
<p>Whatever the reason, many companies will need to integrate SAP Solution Manager Service Desk and a Third-Party Service desk.  Integration with SAP Service Desk is accomplished by being able to call the SAP Service Desk API’s.  These API’s can be exposed as WebServices that can be called by the Third-Party Service Desk.</p>
<p>DataXstream has made a conscious effort to make this integration as painless as possible.</p>
<h2><span style="color: #3366ff;">How did DataXstream get involved in Service Desk of integration?</span></h2>
<p>The following timeline highlights DataXstream&#8217;s involvement with SAP Solution Manager Service Desk integration:</p>
<ul>
<li><strong>2008:</strong> DataXstream was contracted by CA (formerly known as Computer Associates) to build a prototype to integrate SAP Solution Manager and CA Service Desk</li>
<li><strong>2009:</strong> DataXstream was contracted by CA to turn the working prototype into a deployable product.  Multiple versions of the CA product were released from version 12.1 to 12.5</li>
<li><strong>2011:</strong> DataXstream requested permission to CA to continue maintenance of existing installations and support and create a similar product.</li>
<li><strong>March 2011:</strong> DataXstream started development of a new Xstream Connector for CA Service Desk, an improved integration product, owned and maintained by DataXstream.</li>
</ul>
<h2><span style="color: #3366ff;">What&#8217;s Next?</span></h2>
<p>DataXstream has decided to push forward with developing an improved Connector for CA Service Desk.</p>
<p>The following features included in Xstream Connector for CA Service Desk are new and/or improved over the standard SAP Solution Manager integration provided by CA Service Desk 12.5:</p>
<ul>
<li>Custom status mapping</li>
<li>URL Linkage in Solution Manager ticket back to CA Service Desk</li>
<li>Implementation of SAP enhancement framework to allow for interface customizations</li>
<li>Enhanced ticket handling and resolution flexibility</li>
<li>Real-time integration with non-blocking change propagation via Xstream Integration Broker</li>
<li>Improved exception handling and logging</li>
<li>Compatible with new and future implementations of CA Service Desk release 12.6</li>
<li>Support for file attachments (available in future release)</li>
<li>Ability to pass groups (available in future release)</li>
</ul>
<h2><span style="color: #3366ff;">Conclusion</span></h2>
<p>With any new system that is introduced in a landscape, a decision will always need to be made about what to do with the current system that is in place.  By being able to integrate with SAP Service Desk API’s, offers flexibility to either keep or retire the existing Service Desk ticketing system.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2011/07/integrate-sap-service-desk-with-a-third-party-service-desk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IDoc Has Left The Building</title>
		<link>http://www.dataxstream.com/2010/04/idoc-has-left-the-building/</link>
		<comments>http://www.dataxstream.com/2010/04/idoc-has-left-the-building/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 13:30:00 +0000</pubDate>
		<dc:creator>Steve Park</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP Interface Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[IDOC]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[Steve Park]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=4339</guid>
		<description><![CDATA[SAP IDocs are a tried and true interface methodology.  But as with any interfacing technology the most brittle component is the connection between the two systems (in the case, SAP and the subsystem).  In scenarios where SAP is sending IDocs to a subsystem via the transactional RFC, one question is paramount: How do you know [...]]]></description>
			<content:encoded><![CDATA[<p>SAP IDocs are a tried and true interface methodology.  But as with any interfacing technology the most brittle component is the connection between the two systems (in the case, SAP and the subsystem).  In scenarios where SAP is sending IDocs to a subsystem via the transactional RFC, one question is paramount:</p>
<blockquote><p><strong>How do you know when an Outbound IDoc has physically left SAP?</strong></p></blockquote>
<p>It’s a simple fact that if your subsystem never receives an IDoc from SAP, the subsystem will not be able to route or process the IDoc.   I have always gone by the notion that once the subsystem has successfully received the IDoc, the subsystem now has all the responsibility to process and route the IDoc, but before that time, SAP has the responsibility to ensure that the IDoc is fully dispatched.  The subsystem should have processes in place to determine if the IDoc has been received at the target system successfully or not.  In this blog I will focus on the handshake between SAP and the subsystem.  This will entail Outbound IDoc status and a couple of batch jobs that should be setup to ensure a better chance of a successful handoff between SAP and the subsystem.</p>
<p><span id="more-4339"></span>First, let&#8217;s cover the normal, expected progression of statuses for outbound IDocs.  The following graphic shows the collection of status records for a random outbound IDoc.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2010/03/IDOC-Statuses.jpg" rel="shadowbox[sbpost-4339];player=img;"><img class="alignnone size-full wp-image-4584" title="IDOC Statuses" src="http://www.dataxstream.com/wp-content/uploads/2010/03/IDOC-Statuses.jpg" alt="" width="423" height="167" /></a></p>
<p>The status records at the bottom of the list depict the IDoc status <em>before</em> the status records at the top of the list.  So, in this example, the IDoc started in status &#8220;01 &#8211; IDoc generated&#8221;, then progressed to status &#8220;30 &#8211; IDoc ready for dispatch (ALE service).&#8221;  These two statuses usually are created in rapid succession for outbound IDocs and mean that the IDoc has been created in the SAP system and is ready to be sent via tRFC to the subsystem.  The next two IDoc status, 03 and 12, can be a little confusing.  They both seem to mean that the IDoc has been dispatched from SAP.  What is the difference?  I have found that sometimes there is some confusion on weather the IDoc has left SAP or not.  After I explain the difference, I will show 2 batch jobs that should be setup in order to update the status if the Outbound IDoc has physically left SAP.</p>
<h2><strong>So what do statuses ‘03’ and ‘12’ really mean?</strong></h2>
<p>The status ‘03’ actually means “Data passed to port OK” which basically means that the IDoc has been dispatched to the tRFC queue and an attempt was made to send the IDoc to the subsystem.  However, that does not necessarily mean that the IDoc has left SAP.   There could be many reasons why SAP would fail to send the IDoc.  One example could be that the subsystem was down during the transmission of the IDoc.  Errors during data transmission would cause the IDoc to remain in the tRFC queue.  Thus, the IDoc would still remain in SAP and remain with a status of ‘03’.</p>
<p>When the Status changes to ‘12’; a successful connection was made to the subsystem and the IDoc was sent.  This status represents that the Outbound IDoc is no longer in the tRFC queue  and, therefore, has physically left SAP.  The IDoc is in the hands of the subsystem which is now responsible for processing or routing the IDoc.</p>
<h2><strong>But what if I never see a status of ‘12’ on IDocs that were successfully sent?</strong></h2>
<p>For one reason or another, sometimes the batch job to update the status to ‘12’ is not scheduled.  In Production this batch job is usually set up, however in the QA or Dev environment this may or may not be setup depending on the client.</p>
<p>1)  The following job should be setup in order to process a status ‘12’.  I typically set this to every 10 minutes depending on the client.</p>
<p>Program:  <strong>RBDMOIND </strong>– Schedule this program in order to check whether the IDoc have been successfully sent out of the tRFC queue.  If the IDoc has been sent successfully to the subsystem, the program RBDMOIND will change the status of the IDoc from status ‘03’ to status ‘12’.  This means that the handshake with subsystem was successfully and the IDoc has physically left SAP.</p>
<p>2)  There may be times when the subsystem is unavailable at the time the SAP is trying to send the Outbound IDoc.  By default, SAP will only make one attempt to transmit the IDoc.  By scheduling the following program in a batch job, SAP will try to resend the Outbound IDoc again at a specified time interval.  I also usually set this at job every 10 min, depending on the client.</p>
<p>Program:  <strong>RSARFCEX</strong> – Schedule this program in a batch job in order to resend any IDocs that have are stuck on the tRFC queue.</p>
<h2><strong>Ok I have set up these jobs, but the status does not change.  Now what?</strong></h2>
<p>Sometimes an Outbound IDoc could remain stuck on the tRFC queue and never get sent out successfully.  Some issues could be that the RFC Destination for the subsystem is configured incorrectly or there could be an authorization issue.  These types of errors need to be fixed before the batch job for RSARFCEX will send the IDoc out successfully.  You may need to get some additional detail of the problem.  Execute the following transaction below.</p>
<p><strong>Transaction SM58</strong> – This will check what is currently on the tRFC queue.   Once you display the list, you also have the ability to drill down and get some additional detail of what has caused the failed transmission.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2010/03/SM58.jpg" rel="shadowbox[sbpost-4339];player=img;"><img class="alignnone size-full wp-image-4585" title="SM58" src="http://www.dataxstream.com/wp-content/uploads/2010/03/SM58.jpg" alt="" width="612" height="202" /></a></p>
<h2><strong>Conclusion</strong></h2>
<p>Typically you won’t see many issues with Outbound IDocs.  From time to time, IDocs will get stuck on the tRFC queue and if not managed properly, could be stuck there a long time.  This blog should give you more visibility in respect to IDoc status to ensure that the Outbound IDoc has successfully left SAP for processing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2010/04/idoc-has-left-the-building/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SAP Event Driven Batch Job</title>
		<link>http://www.dataxstream.com/2010/03/sap-event-driven-batch-job/</link>
		<comments>http://www.dataxstream.com/2010/03/sap-event-driven-batch-job/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 05:00:32 +0000</pubDate>
		<dc:creator>Steve Park</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP ABAP Blog]]></category>
		<category><![CDATA[SAP ABAP Performance]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[batch job]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[Steve Park]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=3839</guid>
		<description><![CDATA[When creating SAP batch jobs to run a program, most of the scheduling can be accomplished by setting a periodic time for when the job is executed.  For example, execute the job every 10min, 30min, or 1 hour.  But what if you needed more control of when a batch job was executed? At one of [...]]]></description>
			<content:encoded><![CDATA[<p>When creating SAP batch jobs to run a program, most of the scheduling can be accomplished by setting a periodic time for when the job is executed.  For example, execute the job every 10min, 30min, or 1 hour.  But what if you needed more control of when a batch job was executed?</p>
<p><span id="more-3839"></span></p>
<p>At one of my clients they had a requirement to run a batch job every 5 minutes.  Sometimes the batch job would take longer than 5 minutes to complete.  Thus, the same program would start in a new batch job before the previous batch job had time to finish.  The same program would collide with itself and cause issues.</p>
<p>It seems that SAP&#8217;s built-in job scheduler does not have a standard way of preventing overlapping job executions.  I was hoping to find a checkbox that would deny an execution of a job if it finds the same active job running, but that would be too easy.  However, SAP does have some different options in its toolbelt to satisfy this requirement.  The approach that I will demonstrate will use an event-driven approach to execute a SAP batch job.</p>
<p>First I will detail the High level overview of what needs to happen.  Then, after you understand the big picture, then I will go into more detail about how to code and configure this scenario.</p>
<h2>High level Overview</h2>
<p>Basically 2 SAP batch jobs are needed:</p>
<p>1) SAP Job #1</p>
<ul>
<li>This job will execute every 5min or so depending on your requirment and execute a simple custom program that will check the status of Job #2.
<ul>
<li>If the status of job Job #2 is <strong>not </strong>running, then the custom program will raise an event</li>
<li>If the status of Job #2 is running, then the custom program will do nothing</li>
</ul>
</li>
</ul>
<p>2) SAP Job #2</p>
<ul>
<li>This job is setup to start only when an event is raised
<ul>
<li>If an event is Raised from Job #1 then Job #2 will start.  Job #2 will contain the actual programs that you need to execute.</li>
</ul>
</li>
</ul>
<p>Sound easy enough?</p>
<h2>Step-By-Step Instructions</h2>
<p>Now let’s get to business and see what configuration and coding we need to do.</p>
<p>1)      First let’s define an Event.</p>
<p>Transaction SM64 – I defined my event as Z_JOB_START_XXXXX</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-3850" title="pic1" src="http://www.dataxstream.com/wp-content/uploads/2010/01/pic1.png" alt="pic1" width="600" height="233" /></p>
<p style="text-align: center;">
<p style="text-align: center;"><img class="aligncenter size-full wp-image-3851" title="2" src="http://www.dataxstream.com/wp-content/uploads/2010/01/2.png" alt="2" width="599" height="122" /></p>
<p>2)     Next,  Create simple Custom program ZJOB_CREATE_EVENT to Raise the Event.   This program will basically check if the specified job is currently running.  If it is not running then Raise an event which was created in the previous step above.   In my case, I will  raise event ‘Z_JOB_START_XXXXX’.   Create a variant here with the Event Name(Z_JOB_START_XXXXX) and the Job #2 name (ZJOB_XXXXX).</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-3852" title="3" src="http://www.dataxstream.com/wp-content/uploads/2010/01/3.png" alt="3" width="554" height="636" /></p>
<p style="text-align: center;">3)      For Job #1.  Basically set this job as Periodic Time driven job to run every 5 minutes or so with the custom program ZJOB_CREATE_EVENT.  Also make sure you include the variant with the Job #2 name and Event.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-3853" title="4" src="http://www.dataxstream.com/wp-content/uploads/2010/01/4.png" alt="4" width="485" height="133" /></p>
<p>4)      For Job #2.  Define this job as an Event Driven batch job and define the actual program (I used test program ZSPTEST) that needs to be executed.  Specify the event Z_JOB_START_XXXXX that this job will be waiting for.  Also checkbox ‘Periodic job’ to schedule another event job.</p>
<p style="text-align: center;"><img class="aligncenter size-large wp-image-3854" title="5" src="http://www.dataxstream.com/wp-content/uploads/2010/01/5-856x1024.png" alt="5" width="599" height="717" /></p>
<p style="text-align: center;">
<p style="text-align: center;"><img class="aligncenter size-full wp-image-3855" title="6" src="http://www.dataxstream.com/wp-content/uploads/2010/01/6.png" alt="6" width="603" height="604" /></p>
<p>That’s it…Now the batch job will only execute if the same batch job is not running.</p>
<h2>Testing</h2>
<p>For testing purposes, I will demonstrate by manually execute program ZJOB_CREATE_EVENT to show that how this all works.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-3856" title="7" src="http://www.dataxstream.com/wp-content/uploads/2010/01/7.png" alt="7" width="606" height="357" /></p>
<p>The event ZJOB_START_XXXXX has been raised by program ZJOB_CREATE_EVENT.  Now you can see the ZJOB_XXXXX is Active/Running</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-3857" title="8" src="http://www.dataxstream.com/wp-content/uploads/2010/01/8.png" alt="8" width="391" height="145" /></p>
<p>During the time the job is active, I attempted to execute program ZJOB_CREATE_EVENT again.   This time, the program knows that the job is still active and, therefore, it does not raise the event.  The only time the event will be raised again is once the job is finished .</p>
<p>This is only one scenario in where an event driven batch job is needed.  Now you can see how you can utilize an event driven batch job to put some control around how some programs are executed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2010/03/sap-event-driven-batch-job/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Turn any SAP remote-enabled function module into a Web Service – Part 2</title>
		<link>http://www.dataxstream.com/2009/10/turn-any-sap-remote-enabled-function-module-into-a-web-service-%e2%80%93-part-2/</link>
		<comments>http://www.dataxstream.com/2009/10/turn-any-sap-remote-enabled-function-module-into-a-web-service-%e2%80%93-part-2/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 18:00:26 +0000</pubDate>
		<dc:creator>Steve Park</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP ABAP Blog]]></category>
		<category><![CDATA[SAP Interface Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[enterprise service]]></category>
		<category><![CDATA[funciton module]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[Steve Park]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=1846</guid>
		<description><![CDATA[In my previous blog I showed the steps into turning a simple function module into an Enterprise Service.  Now that we have the service defined in ECC, our next step is to configure it so an external application can call our newly created service. I will show how to configure and test the Web Service [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous blog I showed the steps into turning a simple function module into an Enterprise Service.  Now that we have the service defined in ECC, our next step is to configure it so an external application can call our newly created service.</p>
<p>I will show how to configure and test the Web Service on ECC with Service pack 14 and higher.   Before Service Pack 14, the configuration is completed in ECC, however after SP14 the configuration is completed on the Java Stack.</p>
<p><span id="more-1846"></span></p>
<p>Now let’s get started.</p>
<p>Execute the following transaction:<br />
Transaction: SOAMANAGER</p>
<p>This will initiate a Web session and prompt you to log into the WebAS.<br />
Once you have logged in, the next step is to locate the Enterprise Service that you created earlier.<br />
To locate your Enterprise Service go to<br />
Business Administrator Tab  &#8211;&gt; Web Service Administration</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic1.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="size-full wp-image-1851 alignnone" title="pic1" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic1.jpg" alt="pic1" width="651" height="404" /></a></p>
<p>First we will want to find the Enterprise Service that we created.   In our scenario, we named our test service as “ZTESTWEBSERVICE”.  After you have found your service, you need to display it by pressing the “Apply Selection” button.</p>
<p>This will display the current settings for this service.  Since we have not yet defined the configuration we will want to create a new service.  In the Configuration tab, select “Create Service”.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic2.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="size-full wp-image-1852 alignnone" title="pic2" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic2.jpg" alt="pic2" width="652" height="442" /></a></p>
<p style="text-align: left;">Enter a Service Name and a Binding name that you would like.  I usually put a prefix of “SN” and “BN” when defining a Service Name and a Binding name.<a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic3.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="size-full wp-image-1853 alignnone" title="pic3" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic3.jpg" alt="pic3" width="467" height="209" /></a></p>
<p style="text-align: left;">Here you will see all of the different type of runtime configuration options that are available.  As you can see you can configure other security and authentication options.  Once you are complete, press “SAVE”.</p>
<p style="text-align: left;"><a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic4.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="size-full wp-image-1854 alignnone" title="pic4" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic4.jpg" alt="pic4" width="576" height="288" /></a></p>
<p>Now you are complete.  The Web Service should be up and running ready for an external application to call it.  Our next step is to obtain the wsdl location and execute a test a call to the Web Service from an external application..</p>
<p style="text-align: left;"><strong>Testing the Web Service</strong></p>
<p>Before we can test the service we will first need to get the wsdl locations. With your service displayed,  go to the Overview tab.</p>
<p style="text-align: left;">Here you will want to click on “Open wsdl document for selected binding”</p>
<p style="text-align: left;"><a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic5.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="size-full wp-image-1855 alignnone" title="pic5" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic5.jpg" alt="pic5" width="577" height="407" /></a></p>
<p>This will display the wsdl in another web session.  This is the URL that needs to be given to the external application that is initiating the call.  In our case, we will be using the WS Navigation tool to be doing this call.   Copy this URL.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic6.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="alignnone size-full wp-image-1856" title="pic6" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic6.jpg" alt="pic6" width="574" height="358" /></a></p>
<p>Now we have the wsdl location, we will use the WS Navigator to perform the test.<br />
In Overview tab, select the following link:<br />
“Open Web Service navigator for selected binding”</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic7.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="alignnone size-full wp-image-1857" title="pic7" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic7.jpg" alt="pic7" width="573" height="141" /></a></p>
<p>Here you will enter the wsdl URL that you copied in the previous step.<br />
Then press ‘Next’</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic8.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="alignnone size-full wp-image-1858" title="pic8" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic8.jpg" alt="pic8" width="574" height="202" /></a></p>
<p>Enter a valid user that will log into ECC when calling the Web Service</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic9.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="alignnone size-full wp-image-1859" title="pic9" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic9.jpg" alt="pic9" width="577" height="268" /></a></p>
<p>Now press ‘Test’.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic10.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="alignnone size-full wp-image-1860" title="pic10" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic10.jpg" alt="pic10" width="574" height="242" /></a></p>
<p>Here is a list of available operations to call  this  Service.   Remember since we built it from just a function module it will only contain one operation.  If we want to build an service with multiple operation we would generate this service from a function group.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic11.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="alignnone size-full wp-image-1861" title="pic11" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic11.jpg" alt="pic11" width="576" height="271" /></a></p>
<p>For this simple  example, the service will take any input and bring back a successful response.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/08/pic12.jpg" rel="shadowbox[sbpost-1846];player=img;"><img class="alignnone size-full wp-image-1850" title="pic12" src="http://www.dataxstream.com/wp-content/uploads/2009/08/pic12.jpg" alt="pic12" width="578" height="630" /></a></p>
<p>And there you have it.  You know how to turn a function module into a Web Service and test the service with WS Navigator.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/10/turn-any-sap-remote-enabled-function-module-into-a-web-service-%e2%80%93-part-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Turn any SAP remote-enabled function module into a Web Service – Part 1</title>
		<link>http://www.dataxstream.com/2009/09/turn-any-sap-remote-enabled-function-module-into-a-web-service-%e2%80%93-part-1/</link>
		<comments>http://www.dataxstream.com/2009/09/turn-any-sap-remote-enabled-function-module-into-a-web-service-%e2%80%93-part-1/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 04:00:15 +0000</pubDate>
		<dc:creator>Steve Park</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP ABAP Blog]]></category>
		<category><![CDATA[SAP PI Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[enterprise service]]></category>
		<category><![CDATA[function module]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[Steve Park]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=1549</guid>
		<description><![CDATA[It still amazes me that not a lot of developers know that you can turn any existing SAP remote enable function module into a Web Service.  It may sound like a challenging task, but it is just one of those things that you either know how to do it or you don’t.  And to know [...]]]></description>
			<content:encoded><![CDATA[<p>It still amazes me that not a lot of developers know that you can turn any existing SAP remote enable function module into a Web Service.  It may sound like a challenging task, but it is just one of those things that you either know how to do it or you don’t.  And to know how to do it only takes 15min to understand.</p>
<p>I have broken this down into 2 blogs<br />
Part 1 will show how to create the simple structured web service<br />
Part 2 will show how to configure and test the web service using SOAMANAGER and WSNAV</p>
<p><span id="more-1549"></span></p>
<p>For this scenario, I created a really simple function module with one input and one output that will send back a response of “Response successful from test”   This will only create one operation for this service.  However, if you want to create multiple operations for a Service you can also generate the service from a function group.</p>
<p><img class="size-full wp-image-1560 alignnone" title="pic_1" src="http://www.dataxstream.com/wp-content/uploads/2009/07/pic_1.jpg" alt="pic_1" width="651" height="341" /></p>
<p>You will need to ensure that the attribute is set as Remote-enabled in the function module.</p>
<p><img class="alignnone size-full wp-image-1561" title="pic_2" src="http://www.dataxstream.com/wp-content/uploads/2009/07/pic_2.jpg" alt="pic_2" width="656" height="430" /></p>
<p>Now go to transaction SE80 and right-click&#8211;&gt;Create&#8211;&gt;Web Service</p>
<p><img class="alignnone size-full wp-image-1562" title="pic_3" src="http://www.dataxstream.com/wp-content/uploads/2009/07/pic_3.jpg" alt="pic_3" width="652" height="321" /></p>
<p>Since SAP will be hosting this web service we will want to select  “Service Provider”</p>
<p><img class="alignnone size-full wp-image-1563" title="pic_4" src="http://www.dataxstream.com/wp-content/uploads/2009/07/pic_4.jpg" alt="pic_4" width="654" height="312" /></p>
<p>Select the radio button “<em>Existing ABAP Object(Inside Out)&#8221;</em></p>
<p>Since we are building this web service from a Function Module.  The difference between and inside out vs. an outside is approach is where the structure is built.  From a design perspective, it is recommended that you use an Outside-in approach whenever possible.  This means that you would build out  the structure in the ESR and then implement the code behind it in SAP..  However, there will be cases when you will want to turn a Standard SAP remote enable function module into a Web Service, thus using this approach, the Inside out approach..)</p>
<p><img class="alignnone size-full wp-image-1564" title="pic_5" src="http://www.dataxstream.com/wp-content/uploads/2009/07/pic_5.jpg" alt="pic_5" width="655" height="324" /></p>
<p>Give a name to what you want to call your Enterprise service and specify that the endpoint will be a function module.</p>
<p><img class="alignnone size-full wp-image-1565" title="pic_6" src="http://www.dataxstream.com/wp-content/uploads/2009/07/pic_6.jpg" alt="pic_6" width="656" height="349" /></p>
<p>Enter the name of the Function module that the web service will call in the backend.</p>
<p><img class="alignnone size-full wp-image-1566" title="pic_7" src="http://www.dataxstream.com/wp-content/uploads/2009/07/pic_7.jpg" alt="pic_7" width="658" height="423" /></p>
<p>Here you will have to specify which authentication you want this service to have.  For this example I have set it to no authentication.</p>
<p><img class="alignnone size-full wp-image-1567" title="pic_8" src="http://www.dataxstream.com/wp-content/uploads/2009/07/pic_8.jpg" alt="pic_8" width="656" height="360" /></p>
<p><img class="alignnone size-full wp-image-1568" title="pic_9" src="http://www.dataxstream.com/wp-content/uploads/2009/07/pic_9.jpg" alt="pic_9" width="655" height="433" /></p>
<p>Now you are complete with building this web service.  However at this point you have just built the Web Service but you will now need to configure it so that an external application can call this web service.</p>
<p><img class="alignnone size-full wp-image-1559" title="pic_10" src="http://www.dataxstream.com/wp-content/uploads/2009/07/pic_10.jpg" alt="pic_10" width="655" height="318" /></p>
<p>This will come in my next Blog for configuring the newly created Web Service and as well as testing this  service.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/09/turn-any-sap-remote-enabled-function-module-into-a-web-service-%e2%80%93-part-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

