Consumare un web service SAP con C#: guida pratica.

Pubblicato da Davide, venerdì 18 luglio 2014 Nessun Commento »

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#.

Supponiamo di aver realizzato un function module in SAP semplicissimo: due parametri in ingresso (un numero e una stringa) e due parametri in uscita (lo stesso numero al quadrato e la stessa stringa).
Di seguito il codice ABAP di tale funzione:

FUNCTION Z_TEST000.
*"----------------------------------------------------------------------
*"*"Interfaccia locale:
*" IMPORTING
*" VALUE(NUM) LIKE BAPISDHD1-DUN_COUNT DEFAULT 4
*" VALUE(TEXTTEST) LIKE MARA-MATNR
*" EXPORTING
*" VALUE(RETURNNUM) LIKE BAPISDHD1-DUN_COUNT
*" VALUE(RETURNCHAR) LIKE MARA-MATNR
*"----------------------------------------------------------------------
returnnum = num * num.
returnchar = texttest.
ENDFUNCTION.

Supponiamo anche di averla pubblicata come web service, in modo da avere l’indirizzo del WSDL per poter aggiungere il riferimento al servizio nella nostra soluzione di Visual Studio. Le indicazioni che trovate qui, 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.. -> riferimento al servizio..

Nella maschera che appare basta mettere l’url del documento WSDL e dare un nome al servizio, che nel nostro caso è ztestoneee.

Questo il codice del front-end, una pagina in cui c’è solamente un pulsante che lancia un metodo per chiamare il web service e una label in cui visualizzeremo i risultati di questa chiamata.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Vai bello!" OnClick="button_click" />
<asp:Label ID="Label1" runat="server" Text="incrocia le dita"></asp:Label>
</div>
</form>
</body>
</html>

A questo punto non resta che vedere il codice C# per consumare effettivamente il web service. Ci servono di fatto 3 oggetti:

  • input: contiene i parametri da inviare al web service
  • client: è l’oggetto che esegue la chiamata
  • response: è l’oggetto che raccoglie la risposta dal web service

Leggendo il codice sotto e i relativi commenti si può capire al volo il concetto.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Globalization;
using ztestoneee;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//al caricamento della pagina non succede nulla
}
protected void button_click(object sender, EventArgs e)
{
//inizializzo oggetti: input, client e response
ztestoneee.Z_TEST000 input = new ztestoneee.Z_TEST000();
ztestoneee.ztestoneClient client = new ztestoneee.ztestoneClient();
ztestoneee.Z_TEST000Response response = new ztestoneee.Z_TEST000Response();
//inserisco valori da passare alla chiamata
input.NUM = 3;
input.NUMSpecified = true;
input.TEXTTEST = "Nice!";
//chiamata a web service
response = client.Z_TEST000(input);
//elaboro e pubblico la risposta
decimal returnnum = response.RETURNNUM;
string returnchar = response.RETURNCHAR;
Label1.Text = "Hey dude: " + returnnum + returnchar;
}
}

Il gioco è fatto.

Nessun Commento »

Puoi lasciare un tuo commento, oppure fare un trackback dal tuo sito.

Vuoi essere il primo a lasciare un commento per questo articolo? Utilizza il modulo sotto..

Lascia il tuo commento

 

http://livregratis.fr/ - http://club-ebook.fr/