Ejemplo RFC_READ_TABLE

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • rogerclavell
    Junior Member
    • may
    • 7

    #1

    Ejemplo RFC_READ_TABLE

    Hola,

    Os paso un ejemplo de como leer datos de las tablas de sap desde visual studio 2010 y el connector sap 3.0.

    Imports SAP.Middleware.Connector

    Private Sub leertabla()

    'Parametros de conexión a SAP
    Dim param As New RfcConfigParameters
    param(RfcConfigParameters.User) = "tu_usuario"
    param(RfcConfigParameters.Password) = "tu_password"
    param(RfcConfigParameters.SystemID) = "sap_maquina"
    param(RfcConfigParameters.Client) = "sap_mandante"
    param(RfcConfigParameters.Name) = "sap_groupname"
    param(RfcConfigParameters.AppServerHost) = "sap_ip"
    param(RfcConfigParameters.SystemNumber) = "sap_numero_sistema"
    param(RfcConfigParameters.Language) = "ES"
    Try

    'Conexión a SAP
    Dim conex As RfcDestination
    conex = RfcDestinationManager.GetDestination(param)


    Dim rfcFunction As IRfcFunction = conex.Repository.CreateFunction("RFC_READ_TABLE") 'Función RFC de SAP
    rfcFunction.SetValue("QUERY_TABLE", "MCHB") 'Tabla sobre la que queremos buscar
    rfcFunction.SetValue("DELIMITER", "~") 'Delimitador de valores

    'Campos que queremos mostrar
    Dim tblFields As IRfcTable = rfcFunction.GetTable("FIELDS")
    tblFields.Append()
    tblFields.SetValue("FIELDNAME", "MATNR")
    tblFields.Append()
    tblFields.SetValue("FIELDNAME", "ERSDA")
    tblFields.Append()
    tblFields.SetValue("FIELDNAME", "LGORT")

    'Condición WHERE para realizar la busqueda
    Dim tblOptions As IRfcTable = rfcFunction.GetTable("OPTIONS")
    tblOptions.Append()
    tblOptions.SetValue("TEXT", "MATNR EQ '000000000100000008'")

    'Ejecutar la función
    rfcFunction.Invoke(conex)

    'Recuperar los datos que nos devuelve SAP
    Dim tblResult As IRfcTable = rfcFunction.GetTable("DATA")

    'Recorrer los datos que nos muestra SAP
    Dim misResultados(tblResult.RowCount - 1, 0) As String
    For i As Integer = 0 To tblResult.RowCount - 1
    Dim sRes() As String = Split(tblResult.Item(i).GetString(0), "~") 'Separarlos por el delimitador
    ReDim Preserve misResultados(tblResult.RowCount - 1, UBound(sRes))
    For i2 As Integer = 0 To UBound(sRes)
    misResultados(i, i2) = sRes(i2) 'Guardarlos en un vector de strings
    Next
    Next


    Catch ex As Exception
    MsgBox(ex)
    End Try

    End Sub

    Espero sirva de ayuda.
  • zehiter
    Member
    • oct
    • 92

    #2
    Cerrar sesión en SAP desde VB

    Muchas gracias por tu ejemplo rogerclavell ya lo estoy implementando para leer datos de una tabla Z desde VB 2010

    Tengo una pregunta ojalá puedas ayudarme, resulta que cuando me conecto a SAP para leer los datos una vez que cierro mi aplicación VB el usuario se queda conectado en SAP, esto lo he comprobado ejecutando la transacción SM04. Cómo le hago para cerrar la sesión desde VB

    Comentario

    • zehiter
      Member
      • oct
      • 92

      #3
      Ya logré cerrar la conexión desde VB

      Ya lo tengo, una vez que me conecto a SAP desde VB, sobre la misma conexión mando llamar la función TH_DELETE_MODE pero esta en una función Z con el parámetro "modulo de acceso remoto"

      Comentario

      Trabajando...