PDA

Ver la Versión Completa : actualizar excel con datos de sap automaticamente


yanez_surot
31/05/11, 15:36:37
Hola a todos,
Les cuento que soy novato en sap, pero me manejo mucho en programacion vb macros excel etc, mi duda es la siguiente:
En el trabajo me pidieron que mediante alguna funcion en macros excel, trajera informacion de sap automaticamente una vez al dia, del las transacciones son FBL1N y SCIV.
Existe alguna manera de conectar excel con sap para que me traiga estos datos automaticamente?.
Pido por favor a alguien que me oriente un poco en este tema, y si tienen alguna documentacion sobre esto estaria muy agradecido.
Saludos a todos.

aperfects
18/06/11, 19:39:17
Alguien tiene el código vba mediante macros en excel conectar con el SAP, para obtener reportes... gracias por su ayuda ...

COLSEN
27/07/11, 08:19:40
Sub GetCLientes()

'Declaration

Dim objBAPIControl As Object 'Function Control (Collective object)
Dim sapConnection As Object 'Connection object
Dim Total

' Assign.
Set objBAPIControl = CreateObject("SAP.Functions")
Set sapConnection = objBAPIControl.Connection

'Logon with initial values Credenciales de conexcion

sapConnection.Client = "111"
sapConnection.User = "DESADM"
sapConnection.Password = "xxxxx"
sapConnection.SystemNumber = 0
sapConnection.System = "DES"
sapConnection.HostName = "serverxxx"
sapConnection.Language = "ES"

If sapConnection.logon(1, True) <> True Then
MsgBox "No connection to R/3!"
Exit Sub
End If

'Prepare output to the EXCEL worksheet

Worksheets(2).Select
Cells.Clear

Set objTableSAP = objBAPIControl.Add("ZCLIENTES")

'call the 1st BAPI to retrieve the list of clients'
returnFunc = objTableSAP.Call

If returnFunc = True Then
Dim objTable As Object
Set objTable = objTableSAP.Tables("ZCLIENTES")
Total = objTable.RowCount

ActiveSheet.Cells(1, 1) = "Cantidad :" & Total

For i = 1 To Total

ActiveSheet.Cells(2 + i, 1) = objTable.Cell(i, 1)
ActiveSheet.Cells(2 + i, 2) = objTable.Cell(i, 2)
ActiveSheet.Cells(2 + i, 3) = objTable.Cell(i, 3)
ActiveSheet.Cells(2 + i, 4) = objTable.Cell(i, 4)
ActiveSheet.Cells(2 + i, 5) = objTable.Cell(i, 5)
ActiveSheet.Cells(2 + i, 6) = objTable.Cell(i, 6)
ActiveSheet.Cells(2 + i, 7) = objTable.Cell(i, 7)

Next i

End If

Columns("A:Z").EntireColumn.AutoFit

'Close connection to R/3 !
'
objBAPIControl.Connection.logoff
'
'Release the objects to free storage space
'
Set sapConnection = Nothing
Set functionCtrl = Nothing
MsgBox "Program terminated!", 0, "Exit"
End Sub

dzatan
29/05/12, 15:44:03
deseo usar el CreateObject("SAP.Functions"), pero me salta el siguiente #error <El componente activeX no puede crear el objeto>

Saludos
y muchas gracias

mgcarcamo
06/07/12, 17:04:58
Por lo que yo he visto, en donde se ejecute la macro (equipo) debe tener instalado el SAP GUI, y dados de alta los servidores a los que se requiere el acceso.

Espero te funcione esta información.

si alguien sabe como hacerlo si tener instalado el SAP GUI por favor compartalo.

:D

Ana_M
04/10/12, 11:58:23
Hola!
Y no es mejor crear el reporte directamente en sap y luego exportarlo a excel? Si son solamente datos de dos tablas con un QuickView lo tendrías que resolver!
Sds,

AntonioCamejo
22/02/13, 23:28:39
:) Yo buscando en la web encontré un programa donde puedes preparar queries con tablas bajadas de SAP y luego los exporta a Excel. Desde el libro de Excel que se crea se pueden actualizar los queries sin necesidad de volver a abrir ese programa y se hace con solo darle a un botón.
Los campos quedan bien formateados y no tienes que estarlos arreglando. Lo pueden conseguir en este sitio Web: http://www.fragajorge.com/sqlwebsite_1/default.aspx
Cuando se lo instalas a un usuario puedes limitarle las tablas que puede usar.

PabloCanales
25/04/13, 17:28:33
Estimados; una consulta; cuándo te conectas al SAP a través del Excel implica en algo el usuario con el que entres? esto debido a que me connecto a SAP y me rescata información pero de otros centros y no desde donde estoy trabajando.


Atte.
Pablo

AntonioCamejo
07/05/13, 15:34:42
Un saludo Pablo
Cuando hagas la conexión debes hacerla a través de tu mandante. La tabla bajará con todos los centros que maneje ese mandante. Para evitar eso debes poner filtro a la tabla por un valor del centro de tu interés. Por ejemplo para yo bajar la tabla MAST la bajo colocando el filtro: MAST.WERKS = '1000' porque este es centro de mi interés.
Espero que esto te ayude.

AntonioCamejo
07/05/13, 16:02:39
Estimados; una consulta; cuándo te conectas al SAP a través del Excel implica en algo el usuario con el que entres? esto debido a que me connecto a SAP y me rescata información pero de otros centros y no desde donde estoy trabajando.


Atte.
Pablo

Un saludo Pablo
Cuando hagas la conexión debes hacerla a través de tu mandante. La tabla bajará con todos los centros que maneje ese mandante. Para evitar eso debes poner filtro a la tabla por un valor del centro de tu interés. Por ejemplo para yo bajar la tabla MAST la bajo colocando el filtro: MAST.WERKS = '1000' porque este es centro de mi interés.
Espero que esto resuelva tu duda.

von_korey
06/11/14, 13:15:21
Si lo que necesito es importar de la transaccion CS12 a excel como lo hago?

Estos 3 datos donde los puedo obtener:

sapConnection.SystemNumber = 0
sapConnection.System = "DES"
sapConnection.HostName = "serverxxx"

Gracias!:confused:

Sub GetCLientes()

'Declaration

Dim objBAPIControl As Object 'Function Control (Collective object)
Dim sapConnection As Object 'Connection object
Dim Total

' Assign.
Set objBAPIControl = CreateObject("SAP.Functions")
Set sapConnection = objBAPIControl.Connection

'Logon with initial values Credenciales de conexcion

sapConnection.Client = "111"
sapConnection.User = "DESADM"
sapConnection.Password = "xxxxx"
sapConnection.SystemNumber = 0
sapConnection.System = "DES"
sapConnection.HostName = "serverxxx"
sapConnection.Language = "ES"

If sapConnection.logon(1, True) <> True Then
MsgBox "No connection to R/3!"
Exit Sub
End If

'Prepare output to the EXCEL worksheet

Worksheets(2).Select
Cells.Clear

Set objTableSAP = objBAPIControl.Add("ZCLIENTES")

'call the 1st BAPI to retrieve the list of clients'
returnFunc = objTableSAP.Call

If returnFunc = True Then
Dim objTable As Object
Set objTable = objTableSAP.Tables("ZCLIENTES")
Total = objTable.RowCount

ActiveSheet.Cells(1, 1) = "Cantidad :" & Total

For i = 1 To Total

ActiveSheet.Cells(2 + i, 1) = objTable.Cell(i, 1)
ActiveSheet.Cells(2 + i, 2) = objTable.Cell(i, 2)
ActiveSheet.Cells(2 + i, 3) = objTable.Cell(i, 3)
ActiveSheet.Cells(2 + i, 4) = objTable.Cell(i, 4)
ActiveSheet.Cells(2 + i, 5) = objTable.Cell(i, 5)
ActiveSheet.Cells(2 + i, 6) = objTable.Cell(i, 6)
ActiveSheet.Cells(2 + i, 7) = objTable.Cell(i, 7)

Next i

End If

Columns("A:Z").EntireColumn.AutoFit

'Close connection to R/3 !
'
objBAPIControl.Connection.logoff
'
'Release the objects to free storage space
'
Set sapConnection = Nothing
Set functionCtrl = Nothing
MsgBox "Program terminated!", 0, "Exit"
End Sub