<?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>diploD &#187; sap</title>
	<atom:link href="http://www.diplod.it/tag/sap/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diplod.it</link>
	<description>by Davide Del Monte</description>
	<lastBuildDate>Fri, 13 Feb 2015 14:26:10 +0000</lastBuildDate>
	<language>it-IT</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>Consumare un web service SAP con C#: guida pratica.</title>
		<link>http://www.diplod.it/2014/07/18/consumare-un-web-service-sap-con-c-guida-pratica/</link>
		<comments>http://www.diplod.it/2014/07/18/consumare-un-web-service-sap-con-c-guida-pratica/#comments</comments>
		<pubDate>Fri, 18 Jul 2014 10:24:06 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[SAP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[consumare]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[guida]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1443</guid>
		<description><![CDATA[Facciamola semplice, ad imperitura memoria per chiunque capiterà su queste pagine: ecco come consumare un web service SAP (ECC 6) con una applicazione web scritta in C#.]]></description>
				<content:encoded><![CDATA[<p>Facciamola semplice, ad imperitura memoria per chiunque capiterà su queste pagine: ecco come consumare un web service SAP (ECC 6) con una applicazione web scritta in <strong>C#</strong>.</p>
<p>Supponiamo di aver realizzato un <strong>function module</strong> in <strong>SAP</strong> semplicissimo: due parametri in ingresso (un numero e una stringa) e due parametri in uscita (lo stesso numero al quadrato e la stessa stringa).<br />
Di seguito il codice ABAP di tale funzione:</p>
<p><code>FUNCTION Z_TEST000.<br />
*"----------------------------------------------------------------------<br />
*"*"Interfaccia locale:<br />
*" IMPORTING<br />
*" VALUE(NUM) LIKE BAPISDHD1-DUN_COUNT DEFAULT 4<br />
*" VALUE(TEXTTEST) LIKE MARA-MATNR<br />
*" EXPORTING<br />
*" VALUE(RETURNNUM) LIKE BAPISDHD1-DUN_COUNT<br />
*" VALUE(RETURNCHAR) LIKE MARA-MATNR<br />
*"----------------------------------------------------------------------<br />
returnnum = num * num.<br />
returnchar = texttest.<br />
ENDFUNCTION.</code></p>
<p><span id="more-1443"></span>Supponiamo anche di averla <strong><a title="Pubblicare un function module SAP come web service" href="http://www.diplod.it/2013/11/20/sap-ecc-6-pubblicare-una-function-come-web-service-senza-fronzoli/" target="_blank">pubblicata come web service</a></strong>, in modo da avere l&#8217;indirizzo del <strong>WSDL</strong> per poter aggiungere il riferimento al servizio nella nostra soluzione di <strong>Visual Studio</strong>. Le indicazioni che <a title="Consumare web service sap" href="http://www.diplod.it/2012/10/26/consumare-un-web-service-sap-da-applicazione-net-in-c-visual-studio/" target="_blank">trovate qui</a>, per aggiungere il servizio in modo da poterlo utilizzare nel codice restano valide, in estrema sintesi: tasto destro sul nome della soluzione (il nodo root del nostro sito web) poi aggiungi.. -&gt; riferimento al servizio..</p>
<p>Nella maschera che appare basta mettere l&#8217;url del documento WSDL e dare un nome al servizio, che nel nostro caso è <strong>ztestoneee</strong>.</p>
<p>Questo il codice del front-end, una pagina in cui c&#8217;è solamente un pulsante che lancia un metodo per chiamare il web service e una label in cui visualizzeremo i risultati di questa chiamata.</p>
<p><code>&lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %&gt;<br />
&lt;!DOCTYPE html&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head runat="server"&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt;<br />
&lt;title&gt;&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;form id="form1" runat="server"&gt;<br />
&lt;div&gt;<br />
&lt;asp:Button ID="Button1" runat="server" Text="Vai bello!" OnClick="button_click" /&gt;<br />
&lt;asp:Label ID="Label1" runat="server" Text="incrocia le dita"&gt;&lt;/asp:Label&gt;<br />
&lt;/div&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</code></p>
<p>A questo punto non resta che vedere il codice C# per consumare effettivamente il web service. Ci servono di fatto 3 oggetti:</p>
<ul>
<li>input: contiene i parametri da inviare al web service</li>
<li>client: è l&#8217;oggetto che esegue la chiamata</li>
<li>response: è l&#8217;oggetto che raccoglie la risposta dal web service</li>
</ul>
<p>Leggendo il codice sotto e i relativi commenti si può capire al volo il concetto.</p>
<p><code>using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Web;<br />
using System.Web.UI;<br />
using System.Web.UI.WebControls;<br />
using System.Globalization;<br />
<strong>using ztestoneee;</strong><br />
public partial class _Default : System.Web.UI.Page<br />
{<br />
protected void Page_Load(object sender, EventArgs e)<br />
{<br />
//al caricamento della pagina non succede nulla<br />
}<br />
protected void button_click(object sender, EventArgs e)<br />
{<br />
<strong>//inizializzo oggetti: input, client e response</strong><br />
ztestoneee.Z_TEST000 input = new ztestoneee.Z_TEST000();<br />
ztestoneee.ztestoneClient client = new ztestoneee.ztestoneClient();<br />
ztestoneee.Z_TEST000Response response = new ztestoneee.Z_TEST000Response();<br />
<strong>//inserisco valori da passare alla chiamata</strong><br />
input.NUM = 3;<br />
input.NUMSpecified = true;<br />
input.TEXTTEST = "Nice!";<br />
<strong>//chiamata a web service</strong><br />
response = client.Z_TEST000(input);<br />
<strong>//elaboro e pubblico la risposta</strong><br />
decimal returnnum = response.RETURNNUM;<br />
string returnchar = response.RETURNCHAR;<br />
Label1.Text = "Hey dude: " + returnnum + returnchar;<br />
}<br />
}</code></p>
<p>Il gioco è fatto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2014/07/18/consumare-un-web-service-sap-con-c-guida-pratica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SAP ECC 6: pubblicare una function come web service, senza fronzoli.</title>
		<link>http://www.diplod.it/2013/11/20/sap-ecc-6-pubblicare-una-function-come-web-service-senza-fronzoli/</link>
		<comments>http://www.diplod.it/2013/11/20/sap-ecc-6-pubblicare-una-function-come-web-service-senza-fronzoli/#comments</comments>
		<pubDate>Wed, 20 Nov 2013 15:47:38 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Applicazioni Web]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[ecc6]]></category>
		<category><![CDATA[integrazione]]></category>
		<category><![CDATA[RFC]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[servizio web]]></category>
		<category><![CDATA[soap ui]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1395</guid>
		<description><![CDATA[In giro ci sono troppi un sacco di articoli che spiegano come pubblicare una function come web service, da consumare poi con applicazioni esterne. Questi vogliono essere appunti operativi, che diventano di fatto un how-to da tenere a riferimento per capire come fare.]]></description>
				<content:encoded><![CDATA[<p>In giro ci sono <del>troppi</del> un sacco di articoli che spiegano come pubblicare una function come web service, da consumare poi con applicazioni esterne. Questi vogliono essere appunti operativi, che diventano di fatto un how-to da tenere a riferimento per capire come fare.</p>
<p>Il prerequisito di base è che la function abbia alcune proprietà basilari: &#8220;Modulo accessibile in remoto&#8221;, vedi figura dalla transazione <strong>SE37</strong>.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura1.png"><img class="alignnone size-full wp-image-1396" alt="cattura1" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura1.png" width="781" height="375" /></a></p>
<p>&nbsp;</p>
<p><span id="more-1395"></span></p>
<p>&nbsp;</p>
<p>Per pubblicarla come servizio web, basta andare da menu, sempre nella SE37: Utilities -&gt; Altre Utilities -&gt; Generare servizio web -&gt; Dal function module (vedi figura)</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura2.png"><img class="alignnone size-full wp-image-1397" alt="cattura2" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura2.png" width="773" height="414" /></a></p>
<p>&nbsp;</p>
<p>Bisognerà poi seguire il wizard come da figure sotto, dando un nome al web service.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura3.png"><img class="alignnone size-full wp-image-1398" alt="cattura3" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura3.png" width="790" height="544" /></a></p>
<p>&nbsp;</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura4.png"><img class="alignnone size-full wp-image-1399" alt="cattura4" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura4.png" width="790" height="544" /></a></p>
<p>&nbsp;</p>
<p>Per pubblicare senza richiesta di autenticazione, selezionare come da figura sottostante:</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura5.png"><img class="alignnone size-full wp-image-1400" alt="cattura5" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura5.png" width="790" height="544" /></a></p>
<p>&nbsp;</p>
<p>Scegliere il pacchetto e la richiesta di trasporto.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura6.png"><img class="alignnone size-full wp-image-1401" alt="cattura6" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura6.png" width="790" height="544" /></a></p>
<p>&nbsp;</p>
<p>Cliccare su &#8220;completare&#8221;, si aprirà la maschera di creazione del servizio e resterà solamente da attivare il servizio (con l&#8217;icona di attivazione).</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura9.png"><img class="alignnone size-full wp-image-1404" alt="cattura9" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura9.png" width="786" height="499" /></a></p>
<p>Ora bisognerà terminare il lavoro dalla transazione <strong>SOAMANAGER</strong> (introdotta con l&#8217;ECC 6).<br />
Si aprirà una finestra del browser, da qui bisogna andare su &#8220;Web service configuration&#8221;</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura7.png"><img class="alignnone size-full wp-image-1402" alt="cattura7" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura7.png" width="800" height="479" /></a></p>
<p>&nbsp;</p>
<p>Da qui è possibile ricercare il web service appena creato, selezionarlo, premere &#8220;apply selection&#8221; e andare sulla tab &#8220;configuration&#8221;</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura8.png"><img class="alignnone size-full wp-image-1403" alt="cattura8" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura8.png" width="800" height="629" /></a></p>
<p>&nbsp;</p>
<p>Qui bisogna creare un nuovo servizio.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura101.png"><img class="alignnone size-full wp-image-1406" alt="cattura10" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura101.png" width="512" height="264" /></a></p>
<p>&nbsp;</p>
<p>Bisogna inserire un nome per il servizio e per il binding, poi premere &#8220;Apply Settings&#8221;</p>
<p>&nbsp;</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura11.png"><img class="alignnone size-full wp-image-1407" alt="cattura11" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura11.png" width="459" height="212" /></a></p>
<p>&nbsp;</p>
<p>Sotto si aprire una maschera con le impostazioni del servizio, bisognerà configurarle. Se ad esempio si vuole impostare un utenza fissa, in modo tale che le applicazioni esterne chiamino il servizio senza autenticarsi ogni volta, si può configurare come in figura sotto. Alla fine premere &#8220;Save&#8221;.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2013/11/cattura121.png"><img class="alignnone size-full wp-image-1409" alt="cattura12" src="http://www.diplod.it/wp-content/uploads/2013/11/cattura121.png" width="800" height="627" /></a></p>
<p>&nbsp;</p>
<p>A questo punto è tutto pronto.</p>
<p>Bisognerà premere su &#8220;Open WSDL document for selected binding or service&#8221; per ottenere l&#8217;url della definizione del web service, da utilizzare ad esempio su <a title="SOAP UI" href="http://www.soapui.org/" target="_blank">SOAP UI</a> per poter consumare il web service e testarlo.</p>
<h3>E se un giorno volessimo ripubblicare il servizio dopo aver cambiato la function?</h3>
<p>Magari viene aggiunto un parametro di input/output, il web service non recepirà queste modifiche finchè non lo torniamo a pubblicare. Per fare ciò, da SAP, dobbiamo accedere alla transazione <strong>SE80</strong>. Selezionare il pacchetto in cui è stata salvata la function e poi selezionare il proprio servizio web sotto &#8220;Enterprise Service -&gt; Service Provider&#8221;. Andare in modifica e da menù come da immagine sottostante.</p>
<p><img class="alignnone size-full wp-image-1448" alt="riattivazione" src="http://www.diplod.it/wp-content/uploads/2013/11/riattivazione.png" width="933" height="692" /></p>
<p>Salvare e attivare.</p>
<p>Ora il web service avrà ereditato le modifiche.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2013/11/20/sap-ecc-6-pubblicare-una-function-come-web-service-senza-fronzoli/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Consumare un web service SAP da applicazione .NET in C# con Visual Studio</title>
		<link>http://www.diplod.it/2012/10/26/consumare-un-web-service-sap-da-applicazione-net-in-c-visual-studio/</link>
		<comments>http://www.diplod.it/2012/10/26/consumare-un-web-service-sap-da-applicazione-net-in-c-visual-studio/#comments</comments>
		<pubDate>Fri, 26 Oct 2012 16:01:16 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[SAP]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[aspx]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1363</guid>
		<description><![CDATA[Lo scenario è il seguente: dobbiamo pubblicare su una pagina web alcuni dati provenienti da SAP. Il modo migliore per farlo? Creare un function module su SAP che estragga i dati richiesti, pubblicarlo come web service e consumarlo scrivendo qualche riga di codice in Visual Studio.]]></description>
				<content:encoded><![CDATA[<p>Lo <strong>scenario </strong>è il seguente: dobbiamo pubblicare su una pagina web alcuni dati provenienti da <strong>SAP</strong>. Il modo migliore per farlo? Creare un function module su SAP che estragga i dati richiesti, pubblicarlo come <strong>web service</strong> e consumarlo scrivendo qualche riga di codice in Visual Studio.</p>
<p>Lato SAP, dopo aver scritto il nostro <strong>function module</strong> in ABAP (che in questo esempio estrae una tabella di dati tramite alcuni parametri in input e averlo reso disponibile <a title="Pubblicare web service SAP" href="http://www.diplod.it/2012/10/26/pubblicare-un-function-module-sap-come-web-service/">pubblicandolo come web service</a>), per evitare che sia necessario passare le credenziali di accesso durante la chiamata al web service, possiamo pubblicarlo con un utente di default. Per fare ciò: dalla transazione <strong>SICF</strong>, individuare il web service nel ramo <em>sap/bc/srt/rfc/sap/</em>, entrare in modifica e settare l&#8217;utente nella sezione &#8220;Dati di logon anonimi&#8221;.</p>
<p>Avevo già appuntato qualche nota su come <a title="Consumare web service visual studio" href="http://www.diplod.it/2010/12/21/chiamare-e-consumare-un-web-service-da-una-pagina-aspx-con-c/">consumare un web service</a> da una pagina ASPX, tutto quello che sta scritto in quell&#8217;articolo è ovviamente valido, ma questa volta aggiungeremo il servizio al nostro progetto in un modo leggermente diverso. Da <strong>Visual Studio 2010</strong>, cliccando col tasto destro sul nome del progetto e selezionando la voce di menù &#8220;Aggiungi riferimento al servizio..&#8221;</p>
<p><span id="more-1363"></span></p>
<p><a href="http://www.diplod.it/wp-content/uploads/2012/10/addvisualstudio.png"><img class="alignnone size-full wp-image-1365" title="addvisualstudio" src="http://www.diplod.it/wp-content/uploads/2012/10/addvisualstudio.png" alt="" width="622" height="611" /></a></p>
<p>Nella popup che appare inseriremo l&#8217;url del servizio web di SAP e sceglieremo un nome: in questo caso d&#8217;esempio lo chiameremo &#8220;Ws_Factory&#8221;.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2012/10/servizio.png"><img class="alignnone size-full wp-image-1366" title="servizio" src="http://www.diplod.it/wp-content/uploads/2012/10/servizio.png" alt="" width="631" height="510" /></a></p>
<p>A questo punto siamo pronti per sfruttare il web service su una pagina aspx. La pagina avrà un <strong>DataGrid </strong>che servirà per pubblicare la tabella restituita dal web service, in questo datagrid vengono esplicitate solo le colonne da visualizzare, i nomi sono esattamente gli stessi nomi dei campi della tabella su SAP (se avessimo voluto far visualizzare tutta la tabella, bastava non riportare alcuna colonna). Ecco il codice aspx:</p>
<p><code><br />
&lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %&gt;<br />
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head runat="server"&gt;<br />
&lt;title&gt;Esempio Webservice&lt;/title&gt;<br />
&lt;link href="StyleSheet.css" rel="stylesheet" type="text/css" /&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;form id="form1" runat="server"&gt;<br />
&lt;div id="container"&gt;<br />
&lt;div id="main-container"&gt;<br />
&lt;asp:GridView ID="GridVisual" AutoGenerateColumns="false" runat="server" CellPadding="0" CellSpacing="0"&gt;<br />
&lt;Columns&gt;<br />
&lt;asp:BoundField HeaderText="CdL" DataField="ARBPL"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="Materiale" DataField="MATNR"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="Squadra" DataField="TEAMTXT" ItemStyle-CssClass="team"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="T Setup" DataField="SETUP_TIME"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="T Lavorato" DataField="WORKED_TIME"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="T Sospensione" DataField="TIMEOUT"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="Pz Teorici" DataField="QTY_THEORETICAL"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="Pz Reali" DataField="LMNGA"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="Pz Scarto" DataField="XMNGA"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="Efficienza Prod" DataField="EFFICIENCY"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="Pz da Produrre" DataField="QTY_TO_PROD"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="T al Setup Succ" DataField="NEXT_SETUP"&gt;&lt;/asp:BoundField&gt;<br />
&lt;asp:BoundField HeaderText="Stato" DataField="VM_STATUS"&gt;&lt;/asp:BoundField&gt;<br />
&lt;/Columns&gt;<br />
&lt;/asp:GridView&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</code><br />
Il codice <strong>C#</strong> necessario è riportato sotto, con relativi commenti che spiegano tutti i passaggi:</p>
<p><code><br />
using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Web;<br />
using System.Web.UI;<br />
using System.Web.UI.WebControls;<br />
using Ws_factory; //riferimento al Web Service di SAP<br />
public partial class _Default : System.Web.UI.Page<br />
{<br />
// Inizializzazione oggetti<br />
Ws_factory.YSVISUAL_MNGT MyVisual = new Ws_factory.YSVISUAL_MNGT();<br />
Ws_factory.ys_ws_factory_vmClient MyClient = new Ws_factory.ys_ws_factory_vmClient();<br />
Ws_factory.YS_FACTORY_VMRequest MyRequest = new Ws_factory.YS_FACTORY_VMRequest();<br />
Ws_factory.YS_FACTORY_VMResponse MyResponse = new Ws_factory.YS_FACTORY_VMResponse();<br />
protected void Page_Load(object sender, EventArgs e)<br />
{<br />
/* YSVISUAL_MNGT[] è la tabella dove vengono restituiti i dati dal web service di SAP<br />
* Inizializzo come vuota */<br />
YSVISUAL_MNGT[] MyVisual = new YSVISUAL_MNGT[] { };<br />
/* Compilo i parametri della richiesta mettendo i filtri che mi interessano */<br />
//MyRequest.CT_YSVISUAL_MNGT = MyVisual;<br />
MyRequest.IV_ARBPL = "";<br />
MyRequest.IV_DTOEE = "";<br />
MyRequest.IV_NEW_RUN = "";<br />
MyRequest.IV_WERKS = "P100";<br />
/* Lancio il metodo via web passando i parametri appena impostati sopra,<br />
* il riferimento della tab da popolare coi risultati è la tabella MyVisual */<br />
MyClient.YS_FACTORY_VM(ref MyVisual, MyRequest.IV_ARBPL, MyRequest.IV_DTOEE, MyRequest.IV_NEW_RUN, MyRequest.IV_WERKS);<br />
MyResponse.CT_YSVISUAL_MNGT = MyVisual;<br />
/* Ora elaboro i dati restituiti per farli visualizzare sulla pagina */<br />
GridVisual.DataSource = MyResponse.CT_YSVISUAL_MNGT;<br />
GridVisual.DataBind();<br />
}<br />
}<br />
</code><br />
Questo è semplicemente il punto di partenza, da qui è ovviamente possibile spingersi oltre e perdere tempo a volontà.. ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2012/10/26/consumare-un-web-service-sap-da-applicazione-net-in-c-visual-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pubblicare un function module SAP come Web Service</title>
		<link>http://www.diplod.it/2012/10/26/pubblicare-un-function-module-sap-come-web-service/</link>
		<comments>http://www.diplod.it/2012/10/26/pubblicare-un-function-module-sap-come-web-service/#comments</comments>
		<pubDate>Fri, 26 Oct 2012 15:32:59 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[SAP]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[function module]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[soap ui]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1368</guid>
		<description><![CDATA[SAP è un mondo, ma ogni tanto questo mondo deve poter essere "visto" e "manipolato" dall'esterno. Senza infinte elucubrazioni sulla SOA (Service Oriented Architecture), venendo subito al sodo: l'obiettivo di questo articolo è fissare i passaggi per pubblicare come web service un funztion module di SAP scritto in ABAP.]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-1371" title="3574742620_6c65635459" src="http://www.diplod.it/wp-content/uploads/2012/10/3574742620_6c65635459.jpg" alt="" width="500" height="322" /><br />
Foto <a href="http://www.flickr.com/photos/walkadog/3574742620/sizes/m/in/photostream/" target="_blank">Credits</a></p>
<p><strong>SAP </strong>è un mondo, ma ogni tanto questo mondo deve poter essere &#8220;visto&#8221; e &#8220;manipolato&#8221; dall&#8217;esterno. Senza infinte elucubrazioni sulla <a title="Service Oriented Architecture" href="http://it.wikipedia.org/wiki/Service-oriented_architecture" target="_blank">SOA</a> (Service Oriented Architecture), venendo subito al sodo: l&#8217;obiettivo di questo articolo è fissare i passaggi per pubblicare come <strong>web service</strong> un <strong>function module</strong> di SAP scritto in ABAP.</p>
<p><span id="more-1368"></span></p>
<p>Dopo aver creato il function module (transazione <strong>SE37</strong>), dovremo avviare il wizard per la pubblicazione (il wizard funziona correttamente con il logon in inglese):</p>
<ul>
<li><strong>Su ECC5.0</strong>:  Menu Utilities &gt; Altre utility &gt; Generare servizio web &gt; Dal function module</li>
<li><strong>Su ECC6.0</strong>:  Tasto destro &gt; Creare Web Service</li>
</ul>
<p>In seguito attivare i servizi sulla transazione <strong>SICF</strong>:</p>
<ul>
<li>/default_host/sap/bc/soap</li>
<li>/default_host/sap/bc/srt</li>
<li>Ogni web service è rappresentato come servizio ICF nel ramo /default_host/sap/bc/srt/rfc/sap/</li>
</ul>
<p>Bisognerà poi recuperare l&#8217;url del web service pubblicato. Le transazioni disponibili dipendono dalla versione del Service Pack:</p>
<ul>
<li><strong>WSADMIN</strong></li>
<li><strong>WSCONFIG</strong></li>
<li><strong>SOAMANAGER</strong></li>
</ul>
<p>I passaggi sono i seguenti:</p>
<ul>
<li>Cercare e selezionare il      web service nel nodo SOAP Application for RFC-Compliant FMs</li>
<li>Menu Web Service &gt;      WSDL</li>
<li>Nella popup selezionare      Document Style</li>
<li>Si apre il browser con il      link e  la definizione del WSDL
<ul>
<li>Non serve la configurazione       del J2EE. Nel caso sia attivata, configurarla da Menu: Passaggio a &gt;       Parametrizzazione Amministrazione (esempio <em>http://dominio.it:50000</em>)</li>
<li>Se non è attivata la       parte J2EE, il WSDL lavora sulla porta dell’ITS (esempio <em>http://dominio.it:8000/sap/bc/srt/rfc/sap/Z_WS_TEST_CUSTOMER_DETAIL?sap-client=600&amp;wsdl=1.1</em> )</li>
</ul>
</li>
<li>Il link per le BAPI      standard è: <em>http://dominio.it:8000/sap/bc/soap/wsdl11?services=BAPI_CUSTOMER_GETDETAIL2&amp;sap-client=600</em></li>
</ul>
<p>Per <strong>testare il web service </strong>si può utilizzare un programma come <a title="SOAP UI" href="http://www.soapui.org/" target="_blank"><strong>SOAP UI</strong></a>. Dopo averlo installato, i passaggi da fare sono i seguenti:</p>
<ul>
<li>Creare nuovo progetto</li>
<li>Nel progetto aggiungere un      WSDL</li>
<li>Indicare il link      recuperato dalla transazione WSADMIN</li>
<li>Inserire username e      password dell’account SAP nel riquadro in basso a sinistra</li>
</ul>
<p>Nella zona di sinistra vanno inseriti i parametri di input, rimuovendo i punti interrogativi. Poi premere il tasto con la freccia verde e nella parte di destra comparirà il risultato restituito dal web service.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2012/10/soapui.png"><img class="alignnone size-large wp-image-1370" title="soapui" src="http://www.diplod.it/wp-content/uploads/2012/10/soapui-1024x550.png" alt="" width="717" height="385" /></a></p>
<p>Non vado oltre anche se il tema meriterebbe molti approfondimenti, riporto queste poche informazioni come promemoria per chiunque si debba cimentare; nel caso qualcuno voglia maggiori informazioni lascio qualche link utile:</p>
<ul>
<li><a href="http://help.sap.com/saphelp_nwpi71/helpdata/en/bb/ddb33d2ae46b3be10000000a114084/frameset.htm">http://help.sap.com/saphelp_nwpi71/helpdata/en/bb/ddb33d2ae46b3be10000000a114084/frameset.htm</a></li>
<li><a href="http://help.sap.com/saphelp_nwpi71/helpdata/en/9b/dad1ae3908ee44a5caf57e10918be9/frameset.htm">http://help.sap.com/saphelp_nwpi71/helpdata/en/9b/dad1ae3908ee44a5caf57e10918be9/frameset.htm</a></li>
<li><a href="http://www.dataxstream.com/2009/09/turn-any-sap-remote-enabled-function-module-into-a-web-service-%E2%80%93-part-1/">http://www.dataxstream.com/2009/09/turn-any-sap-remote-enabled-function-module-into-a-web-service-%E2%80%93-part-1/</a></li>
<li><a href="http://www.dataxstream.com/2009/10/turn-any-sap-remote-enabled-function-module-into-a-web-service-%E2%80%93-part-2/">http://www.dataxstream.com/2009/10/turn-any-sap-remote-enabled-function-module-into-a-web-service-%E2%80%93-part-2/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2012/10/26/pubblicare-un-function-module-sap-come-web-service/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Integrazione Sharepoint &#8211; SAP Enterprise Portal</title>
		<link>http://www.diplod.it/2008/12/02/integrazione-sharepoint-sap-enterprise-portal/</link>
		<comments>http://www.diplod.it/2008/12/02/integrazione-sharepoint-sap-enterprise-portal/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 09:57:15 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[ICT]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[integrazione]]></category>
		<category><![CDATA[intranet]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[portale]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=713</guid>
		<description><![CDATA[SAP è il mondo della documentazione definitiva, dei dati da archivio; sharepoint è il mondo della documentazione viva, delle discussioni, della community.
Le basi per realizzare una integrazione dei sistemi.]]></description>
				<content:encoded><![CDATA[<p><strong>Intranet aziendale</strong>, tipicamente esistono due tipologie. C&#8217;è l&#8217;<strong>intranet fatta a mano</strong>, con qualche pagina html, un <a title="CMS - wikipedia" href="http://it.wikipedia.org/wiki/Content_management_system" target="_blank">cms</a> in php e qualche calendario condiviso, preso in prestito dal mondo dell&#8217;open source. Oppure l&#8217;<strong>intranet bellissima</strong>, con strumenti all&#8217;avanguardia, spesso costosi ma poco integrati tra loro che alla fine nessuno sfrutta a pieno. Parlando di quest&#8217;ultima tipologia, una delle sfide più interessanti per un site builder è l&#8217;integrazione tra <a title="SAP enterprise portal" href="http://www.sap.com/platform/netweaver/index.epx" target="_blank">SAP Enterprise Portal</a> e <a title="Microsoft sharepoint" href="http://office.microsoft.com/it-it/sharepointtechnology/default.aspx">Microsoft Sharepoint</a> (MOSS). Sono due strumenti dalle grandi potenzialità, sharepoint è imbattibile in un ambiente fortemente microsoft oriented perfetto nelle situazioni in cui è necessario dare agli utenti un luogo per condividere la documentazione e collaborare; SAP portal è la via di accesso preferenziale al gestionale SAP tramite browser, è quindi utilissimo per offrire piccoli applicativi a persone esterne all&#8217;azienda (ordini via web, consegne resi, ecc..).</p>
<p>Ecco allora un po&#8217; di <strong>documentazione</strong> per chi volesse cimentarsi in queste affascinanti integrazioni. Io ci sono in mezzo, attualmente non ho <em>La Soluzione</em>, ma una vaga idea me la sono fatta. Credo che l&#8217;integrazione perfetta, quella dove l&#8217;<strong>utente non percepisce differenze</strong>, sia difficile ma realizzabile. Già il semplice fatto che entrambi i sistemi supportano il <strong>Single Sign On</strong> e pescano le credenziali di accesso dall&#8217;<strong>active directory</strong> migliora sensibilmente l&#8217;esperienza di navigazione. Non credo però sia un bene, lato amministratore, costruire un forte <strong>accoppiamento</strong>. Si tratta comunque di sistemi in evoluzione (stiamo parlando di portali e non di software gestionali), ritengo quindi più conveniente mantenere una certa separazione, evitando di caricare viste di Sharepoint su SAP Portal o viceversa pescare dati da SAP per pubblicarli in sharepoint.</p>
<p><strong>SAP è il mondo della documentazione definitiva</strong>, dei dati da archivio; <strong>sharepoint è il mondo della documentazione viva</strong>, delle discussioni, della community.<br />
Qualcuno ci ha lavorato? Qualcuno l&#8217;ha vissuta diversamente?</p>
<p><span id="more-713"></span></p>
<p>Come promesso, ecco un buon elenco di materiale dal quale partire:</p>
<ul>
<li><strong>Interoperability between SAP NetWeaver Portal and Microsoft SharePoint Technologies</strong><br />
<a href="http://download.microsoft.com/download/b/c/1/bc1939d9-638f-4053-b602-4258f18bb683/CB_045_Interoperability%20between%20SAP%20NetWeaver%20Portal%20and%20Microsoft%20SharePoint%20Server%202007.pdf" target="_blank">http://download.microsoft.com/download/b/c/1/bc1939d9-638f-4053-b602-4258f18bb683/CB_045_Interoperability%20between%20SAP%20NetWeaver%20Portal%20and%20Microsoft%20SharePoint%20Server%202007.pdf</a></li>
<li><strong>Interoperability between SAP NetWeaver Portal and Microsoft SharePoint Portal Server</strong><br />
<a href="https://www.sdn.sap.com/irj/sdn/dotnet?rid=/webcontent/uuid/f735eb47-0a01-0010-6286-fd089bc952e3" target="_blank">https://www.sdn.sap.com/irj/sdn/dotnet?rid=/webcontent/uuid/f735eb47-0a01-0010-6286-fd089bc952e3</a></li>
<li><strong>Integration of SAP Business Server Pages (SAP BSP) in Share Point 2007</strong><br />
<a href="http://download.microsoft.com/download/4/3/d/43de0f43-df6a-4cf2-8c91-2c9001df5945/cb_027_integration_of_sap_bsp_into_sharepoint_server_2007.pdf" target="_blank">http://download.microsoft.com/download/4/3/d/43de0f43-df6a-4cf2-8c91-2c9001df5945/cb_027_integration_of_sap_bsp_into_sharepoint_server_2007.pdf</a></li>
<li><strong>Integrating Microsoft® Office SharePoint® Server 2007 and SAP</strong><br />
<a href="http://download.microsoft.com/download/9/9/5/99583191-9cd2-4701-9ef1-47715b73cffe/CB_028_Integrating_Microsoft_Office_SharePoint_Server_and_SAP.pdf" target="_blank">http://download.microsoft.com/download/9/9/5/99583191-9cd2-4701-9ef1-47715b73cffe/CB_028_Integrating_Microsoft_Office_SharePoint_Server_and_SAP.pdf</a></li>
<li><strong>Consuming SAP Enterprise Services in a Microsoft Office InfoPath Form</strong><br />
<a href="https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/e0421f9a-4c9e-2910-1085-a45f8e813324" target="_blank">https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/e0421f9a-4c9e-2910-1085-a45f8e813324</a></li>
<li><strong>Interoperability between Microsoft Office SharePoint Server and SAP Enterprise Portal [il caso Siemens]</strong><br />
<a href="http://www.sharepointusergroup.at/info/Dokumente/Sharepoint_and_SAP_Real_World_final.pdf" target="_blank">http://www.sharepointusergroup.at/info/Dokumente/Sharepoint_and_SAP_Real_World_final.pdf</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2008/12/02/integrazione-sharepoint-sap-enterprise-portal/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
