<?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; asp</title>
	<atom:link href="http://www.diplod.it/tag/asp/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 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>
	</channel>
</rss>
