Using the SAP.NET Connector to connect your .NET applications to SAP
By Andrew Schmidt, Custom Software By Preston
June 1st, 2007
Overview:
This article will show a simple example on how to establish a connection to SAP
and how to call an ABAP function on SAP and pass data to the function and receive
data back from the function all via the SAP .NET Connector.
We specialize in provide SAP to .Net integrated applications. Feel free to contact
us to assist or handle any of your IT projects.
Introduction
If you are a professional developer, its almost a given that you have been tasked
at one time or another to interact with various ERP systems. Sometimes, this
task can be completed simply because you may be granted access directly to the back
end databases, however often times you need to communicate directly with the business
logic layer of the ERP system. This is often the case when working with SAP because
of the powerful ABAP functions which reside within the business logic layer of the
system. Fortunately, SAP and Microsoft have teamed up to provide developers
with the SAP.NET Connector.
The SAP Connector for Microsoft .NET is a programming environment that enables communication
between the Microsoft .NET platform and SAP Systems. It supports SAP Remote Function
Calls (RFC) and Web services, and allows you to write various applications, for
example, Web form, Windows form, and console applications within Microsoft Visual
Studio .NET. You can use all Common Language Runtime (CLR) programming languages
such as Visual Basic .NET and C#. This article will demonstrate how to get
connected to SAP and how to call an ABAP function and pass data to and from SAP.
So, without further ado, lets get to the code!
Establishing a Connection to SAP at Design Time.
The first thing to note here is that your .NET applications can interact with SAP
in two ways. First, as a client which calls SAP, the server. The second
way in which your .NET applications can interact with SAP is where your client acts
as the server and receives calls from SAP, the client. This article will focus
on the former, and the latter will be discussed in a forthcoming article.
It should be noted that connecting your .NET applications to SAP as the client is
much more straightforward than when your .NET applications have act as the server.
So, how to we connect a .NET application to SAP? Well, the first thing you
need to do is download the SAP.NET connector, which is free and can be obtained
here. Once you have
installed the connector, start Visual Studio.NET and create a new Windows application.
You might be tempted to go straight to the references of the project and add references
to the SAP .NET connector, however, this approach is not correct. The correct
next step is to right click on your project file and select add then New item.
Once the dialog box opens, scroll to the bottom and you will find an entry called
“SAP Connector Proxy”, as show in figure 1 below:

Figure 1 – Adding the SAP Connector Proxy to your project
After you add the proxy, you will notice that the system automatically adds the
necessary references to your project as well as creating a WSDL file called “SAPProxy1.wsdl”.
This file will show up as a blank screen in Visual Studio, as shown in figure 2
below:

Figure 2 – after the SAP Connector Proxy has been added.
Once the proxy has been added, its time to add the SAP Server to your project.
Click View then click Server Explorer and you will see that an option for SAP is
included in the list. Click the SAP entry and it will expand and show
“Application Servers”. Right click this and select ”Add
Application Server”. A dialog box similar to Figure 3 below will appear.

Figure 3 – SAP Application Server Dialog Box.
This is where you will need to set your parameters for establishing a connection
to your SAP server. Change the Destination Type property to “Custom”,
then add the necessary values for the following properties:
- User Name
- Password
- AppServerHost
- SAPRouterString
- HTTP Port
- Client
- System Number
These variables will depend on your SAP installation. Check with your SAP
Administrator for the specific settings in your environment.
Once you have the properties set, you can then establish your connection to SAP.
Expand the new server, then expand the Functions entry. This will provide
a list of all ABAP functions that are contained in your SAP environment. See
figure 4 below:

The next step is to locate the function that you wish to call. When you find
it, simply drag and drop it onto the SAPProxy1.sapwsdl file. It will automatically
create several objects and even code files that relate to your particular function
(note you need to be viewing all files in your project to see the code files that
the process creates):

Figure 5 – after the SAP objects are created – note the additional code
files automatically created.
Once this step is created, the rest is quite easy. To demonstrate, my sample
uses a very simple ABAP function that takes a contract number and a line item number
and returns an invoice. I have created a form with 1 button and a text box.
The code behind my button will do the following:
Establish a connection to SAP
Create object to allow me to invoke the ABAP function and return the values that
it provides. Here is the code listing (note that I have removed the actual
connection values – you need to substitute the values with your connection
parameters):
Private Sub
Button1_Click(ByVal sender
As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
Dim
BAPI As New SAPProxy1
Dim
conStr As String = "ASHOST=AppserverIP SYSNR=sysnumber
CLIENT=clientnumber USER=user PASSWD=password"
BAPI = New
SAPProxy1(conStr)
Dim
SAPtbl As New ZSDUS_INVOICETable
Dim
Ret As New VS2003_SAP_Connect.BAPIRETURNTable
Try
BAPI.Zsdus_Get_Invoice_Number("0045001126",
"000010", SAPtbl, Ret)
Catch
ex As Exception
MsgBox(ex.Message)
End Try
If
Ret.Count > 0 Then
MsgBox(Ret.Item(0).Message.ToString)
End If
TextBox1.Text = (SAPtbl.Item(0).Vbeln.ToString)
End Sub
So what’s going on here?
We declare a variable to hold the connection string.
We create an instance of our Proxy
We establish the connection
We create the parameters that the ABAP function calls for. In this case its
two tables – note these are strongly typed.
We call the function passing in the parameters.
We examine the Return table to see if we had success or any errors
We read out the first item from the table, a field called “Vbeln” and
assign its value to a text box.
See the results below:

Figure 6 – the results
As you can see, the function call returned a data table with invoice information.
I have chosen to only display one field for simplicity sake, but the actual data
returned is all the contents of the invoice. We could have loaded this information
to a data gird, for example.
Conclusion
This article shows a real world example of connection to SAP and calling an ABAP
function from .NET via the SAP.NET connector. As you can see, by using
the connector as a client to SAP, we can easily connect to the SAP server and invoke
any function that we have permissions to execute. This ability add tremendous
flexibility to your .NET applications when you need to integrate with SAP.
Our firm specializes in provide SAP to .Net integrated applications to our clients.
Feel free to contact us to assist or handle any of your IT Needs.
About the Author
Andrew Schmidt is a consultant with Custom Software By Preston. He has over
10 years of software development experience in a range of industries including manufacturing,
government, health care, and telecommunications. He has developed enterprise
systems that integrate with SAP and other ERP systems . He resides in Chicago with
his wife and 2 year old son and can be reached via email at
andy@customsoftwarebypreston.com