#1
|
|||
|
|||
SAP y .NET
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 |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
ddd
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 Úlima edición por crgatica fecha: 27/07/09 a las 20:15:12. |
#4
|
|||
|
|||
.NEt
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 |
#5
|
|||
|
|||
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
__________________
--------------------------------- DIOS los bendiga Ing. Ramiro Flores Monterrey, Nuevo León, México |
#6
|
||||
|
||||
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.
__________________
------------------- ¿Dudas para descargar manuales? Ver este tema -> |
#7
|
|||
|
|||
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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|