MUNDOSAP

MUNDOSAP (foro/index.php)
-   Otros lenguajes: VB, JAVA (foro/forumdisplay.php?f=6)
-   -   Ejemplo RFC_READ_TABLE (foro/showthread.php?t=62539)

rogerclavell 07/05/12 10:43:37

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 18/06/13 15:47:19

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 :D

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 :confused:

zehiter 20/06/13 16:19:15

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" ;)


Husos Horarios son GMT. La hora en este momento es 17:59:56.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web