Ver Mensaje Individual
  #1  
Viejo 07/05/12, 10:43:37
rogerclavell rogerclavell is offline
Junior Member
 
Fecha de Ingreso: may 2012
Mensajes: 7
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.
Responder Con Cita