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