SAP y .NET

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Doubl R
    Junior Member
    • nov
    • 1

    #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
  • manuelachetigue
    Junior Member
    • feb
    • 21

    #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 manuelhachetigue@hotmail.com

    Comentario

    • crgatica
      Junior Member
      • jul
      • 1

      #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
      Editado por última vez por crgatica; 27/07/2009, 20:15:12.

      Comentario

      • Bhaco
        Junior Member
        • ene
        • 1

        #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

        Comentario

        • ramflores
          Junior Member
          • jul
          • 22

          #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

          Originalmente publicado por Bhaco
          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
          ---------------------------------
          DIOS los bendiga
          Ing. Ramiro Flores
          Monterrey, Nuevo León, México

          Comentario

          • DCErick
            Moderator
            • mar
            • 1090

            #6
            Originalmente publicado por ramflores
            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.
            -------------------
            ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

            Comentario

            • SAPING
              Senior Member
              • may
              • 199

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

              Comentario

              Trabajando...