PDA

Ver la Versión Completa : SAP y .NET


Doubl R
17/11/06, 10:52:39
Hola.

Tengo un Webservice que quiero que se conecte a SAP, he intalado el SAP Connector 2.0 y he realizado la conexión a SAP: (Versión de VS.NET 2005)

Pero no se como llamar a una BAPI (pasarle parámetros y que me lo devuelva en xml o en qualquier otro formato)

Como puedo hacer la llamada de la BAPI. ? Como puedo interactuar con .NET y SAP???

Dim sapDest As SAP.Connector.Destination
Dim connSAP As SAP.Connector.SAPConnection


sapDest = New Destination
sapDest.AppServerHost = ""
sapDest.Client = 24
sapDest.SystemNumber = 1
sapDest.Username = ""
sapDest.Password = ""
sapDest.Language = "EN"

connSAP = New SAP.Connector.SAPConnection(sapDest)

With connSAP
.Open()
End With

manuelachetigue
01/03/07, 20:11:57
Anteriormente yo hacia las conexiones vía WEB por medio de este tipo de códigos
<% Public Sub ConexionSap() 'Conexion a SAP
Set Session("oLogon") = Server.CreateObject("SAP.Logoncontrol.1")
Set Session("oConnection") = Session("oLogon").NewConnection
Session("oConnection").ApplicationServer = ""
Session("oConnection").System = "00"
Session("oConnection").Client = "010"
Session("oConnection").User = ""
Session("oConnection").Password = ""
Session("oConnection").Language = "ES"

If not Session("oConnection").Logon(0 , true) Then 'Despliega ventana
Response.WRITE "NO HAY COMUNICACION CON SAP, VERIFIQUE ENTRADAS!!!"
SESSION("oConnection").logoff
End If
end sub
%>
siempre los valores deben de ir en comillas dobles..
y para llamar la RFC o BAPI se hace a través de:
<%
CALL CONEXIONSAP()
'************************** Declaracion de variables ******************************'
dim Functions
dim GpoClientes
dim GpoC
dim Func
dim Row
dim i
dim Rows

'********* Llamada al RFC (ZRFC_DEMO) *********'
Set Functions = CreateObject("SAP.Functions")
Set Functions.Connection = Session("oConnection")
Functions.Autologon = true
Functions.LogFileName = "c:\tmp\table+viewlog.txt"
Functions.LogLevel = 8

Set Func = Functions.Add("ZRFC_DEMO")
Func.Exports("KUNNR") = Request.Form ("fldcvecliente")
Func.Exports("NAME1") = Request.form ("fldnombrecliente")

If Func.Call <> True Then
Response.Write "ERROR en llamada para recuperar los datos del cliente. Excepcion " + Func.exception
else
Set GpoClientes = Func.Tables
Set GpoC = GpoClientes("T_CTES")
Set Row = GpoC.Rows()
End If
%>

<%
Dim TotCols
Dim TabType
Dim Bytes
Dim TotRec

TotRec = GpoC.RowCount ' Get the total records from the table object
TotCols = Gpo.ColumnCount

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>TEST RFC UTILITIES</title>
</head>

<BODY BGCOLOR="WHITE" BOTTOMMARGIN="0" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
<P>
<TABLE BORDER="1" WIDTH="90%" CELLSPACING="0" CELLPADDING="0" ALIGN="CENTER">
<TR>
<td>Num. Cliente</TD>
<td>Nombre Cliente</td>
</TABLE>
<table border=1>
<% for i = 1 to TotRec
set Rows = GpoMat.Rows(i) 'Get the material group
%>
<TD><%= Rows("kunnr") %> <%= "name1" %></TD>

<% next %>
</TABLE>
<DIV ALIGN="center"><INPUT TYPE="submit" NAME="cmdSubmit" VALUE="Procesar">
<INPUT TYPE="Reset" VALUE="Cancelar">
</BODY>
</html>

ESPERO y esto te sirva como base... si tienes dudas puedes contactarme por correo a manuelhachetigue@hotmail.com

crgatica
27/07/09, 20:10:44
primero tienes que instalar el SapConector.Net con el Framework 1.1 y el visual studio 2003, despues crear la DLL en la cual te conectas a sap y crear un proxy y llamas a la bapi.

Luego creas esta funcion que esta hecha en visual basic.net con visual studio 2005 y llamas la Dll que creaste en VS2003 y le pasas los parametros de conexion, no es tan complicado.


Imports DLLSap.

Function Empleado(ByVal ID As Integer, ByVal fecha As String) As DataTable

Dim SapDestination As New SAP.Connector.Destination
Dim SapProxy As New SAPProxy1

Dim dt As New DataTable
Dim r1 = ""
Dim r2 = ""
Dim r3 = ""

SapDestination.AppServerHost = "IP o Host"
SapDestination.SystemNumber = 0
SapDestination.Client = numberclient
SapDestination.Username = "Username"
SapDestination.Password = "Pass"
SapDestination.Language = "ES"

Dim SapConection As New SAP.Connector.SAPConnection(SapDestination)
SapProxy.Connection = SapConection

Dim Emp As New YHR_RFCEMPLEADOS
Dim RFC_Empleado As New YHR_RFCEMPLEADOSTable

Try
SapProxy.Connection.Open()
SapProxy.Bapi_Hrrfc_Empleados(fecha, ID, r1, r2, r3, RFC_Empleado)

dt = RFC_Empleado.ToADODataTable()


Catch ex As SAP.Connector.RfcException

Finally
SapProxy.Connection.Close()
End Try

Return dt

End Function

Bhaco
04/01/10, 18:24:00
y si no tengo vs2003?? Yo tengo vs2005 y vs2008. Alguien sabe como puedo hacer?? O tiene el proxy compilado para facilitarme??
Desde ya muchas gracias.

Pd: es malísimo que el soporte sea solo para vs2003

ramflores
15/07/11, 13:38:50
Hola Bhaco.

Yo estoy haciendo algunas cosas con VS2010 y SAP connector 3, como po ejemplo el levantamiento de avisos para PM y su consulta, tengo SAP 4.6C, el problema con el que me encuentro actualmente es poder hacer un cierre de las ordenes, ya que en esta version no trae un RFC o BAPI para eso, y estoy viendo como hacerlo.

Si alguien sabe como, se los agradeceria.

Saludos

y si no tengo vs2003?? Yo tengo vs2005 y vs2008. Alguien sabe como puedo hacer?? O tiene el proxy compilado para facilitarme??
Desde ya muchas gracias.

Pd: es malísimo que el soporte sea solo para vs2003

DCErick
21/07/11, 14:56:04
Hola Bhaco.

Yo estoy haciendo algunas cosas con VS2010 y SAP connector 3, como po ejemplo el levantamiento de avisos para PM y su consulta, tengo SAP 4.6C, el problema con el que me encuentro actualmente es poder hacer un cierre de las ordenes, ya que en esta version no trae un RFC o BAPI para eso, y estoy viendo como hacerlo.

Si alguien sabe como, se los agradeceria.

Saludos

Si tienes un ABAP o sabes ABAP, hagan un modulo de función que haga exclusivamente eñl cierre de la orden via CALL TRANSACTION en la primer pestaña hay algo de permitir acceso remoto le marcas ese flag y listo ya cuentas con tu RFC Z para ser consumida por tu aplicación en .Net.

SAPING
23/05/13, 17:59:22
Hola.
Como se puede hacer para recibir de .NET a ABAP un path de red?
Mediante .NET se crea un archivo en una ruta especifica, y con abap tengo que procesar ese archivo.

Slds.