Programar una macro para importar desde excel usando la DI API

Junto con saludar les dejo los pasos de un pequeño ejemplo sobre como importar desde excel usando la DI API mediante una simple macro.

1.- El primer paso consiste en abrir una hoja de calculo Excel

imagen1

2.- Luego abrimos la ventana de edición de visual basic que trae excel para programar macros

imagen2

3.- Agregamos las referencias de la DI API  de SAP al trabajo actual

imagen3

imagen4

4.- Insertamos el código, cambian los parámetros de conexión que corresponden a su servidor y ejecutan el código

Public Sub Imp_Items()

	Dim oCompany As SAPbobsCOM.Company
	Dim lRetCode, ErrorCode As Long
	Dim ErrorMessage As String

	Set oCompany = New SAPbobsCOM.Company

	oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008
	oCompany.DbUserName = "sa"
	oCompany.DbPassword = "********"
	oCompany.Server = "localhost"
	oCompany.CompanyDB = "SBODemoCL"
	oCompany.UserName = "manager"
	oCompany.Password = "manager"
	oCompany.UseTrusted = False

	lRetCode = oCompany.Connect()

	Dim Retval As Long
	Dim vItem As SAPbobsCOM.Items

	Set vItem = oCompany.GetBusinessObject(oItems)

	Row = 2
	Do While ActiveSheet.Cells(Row, 1) <> ""

		vItem.ItemCode = ActiveSheet.Cells(Row, 1)
		vItem.ItemName = ActiveSheet.Cells(Row, 2)

		If vItem.ItemCode <> "" Then
			Retval = vItem.Add
		End If

		Row = Row + 1
	Loop

	oCompany.Disconnect

End Sub

Luego en SAP buscamos los artículos

imagen5

Saludos y espero les haya gustado.

También te podría gustar...

32 Respuestas

  1. Si quieres visualizar el servidor por su nombre agregalo al siguiente archivo host en windows lo encuentras en C:\Windows\System32\drivers\etc\hosts

    Ejemplo : 127.0.0.1 localhost

    Saludos

  2. Franco Viale dice:

    Buenas Tardes, me encuentro bajo una red on distintos rangos (1.xxx , 2.xxx , 3.xxx ) y no puedo ver el servidor por el nombre pero si por la ip, la pregunta es..como le doi al ip?…se la doi a la variable server name pero no me la toma.

    Saludos.

  3. Buenas tardes

    Eso si es posible utilizando el objeto Documents(DeliveryNotes)

    Saludos

  4. Buenas Tardes, quisiera realizar una macro desde excel que me lleve los datos a SAP y me de una entrega eso es posible ?

  5. Eduardo dice:

    primero que todo gracias por la información. pero me gustaría saber como puedo importar desde Excel, listados que he creado en el Query Manager.

    • Estimado

      Desde Excel y o cualquier otra interfaz se puede importar a SAP las mismas transacciones (compras, ventas, operaciones de stock, etc) que usted realiza en el cliente, no comprendo a que se refiere con «listados que he creado en el Query Manager».

      Saludos

  6. Alan Lopez dice:

    Buenas tardes estoy tratando de realizar el mismo ejemplo pero me sale un error al ejecutar que dice: Se ha producido error ‘429’ en tiempo de ejecucion. el Componente ActiveX no puede crear el Objeto. Cual podria ser la causa del problema?

  7. lio dice:

    buenos dias ando manejando una macro de excel a sap pero no soy experto en ambito del sap ise los pasos pero me nadan errores necesito enviar mis libros de excel al sap puedn ayudarme

  8. jose giron dice:

    hola buenas soy un usuario comun de SAP tengo mi clave de acceso y mi usuario, puedo tener un archivo de excel que baje la informacion de SAP sin ser programador…, el SAP que utilizo es R# no es bussines one se puedo con macr….???

  9. Cristian dice:

    se pueden hacer salidas, utilizando este método??? me estoy rompiendo la cabeza tratando pero nada

    • Estimado, si es posible hacer salidas pero no es llegar y hacer una salida, hay que tener conocimientos de la SDK de SAP y del lenguaje en el que estás desarrollando.

      Llena una plantilla del DTW cárgala exitosamente y las mismas columnas que cargaste son las que debes declarar en tu código al momento de programar.

      Saludos

  10. Cristian dice:

    Buenísimo aporte!!! trate de agregar mas columnas:
    vItem.ItemCode = ActiveSheet.Cells(Row, 1)
    vItem.ItemName = ActiveSheet.Cells(Row, 2)
    vItem.FrgnName = ActiveSheet.Cells(Row, 3)
    vItem.InvntryUom = ActiveSheet.Cells(Row, 4)
    vItem.InvntItem = ActiveSheet.Cells(Row, 5)

    Pero da error 438, alguna sugerencia

    Saludos y gracias por existir

    • Cristian dice:

      Super!! solo debía usar el nombre correcto

      vItem.InventoryItem = ActiveSheet.Cells(Row, 4)
      vItem.InventoryUOM = ActiveSheet.Cells(Row, 3)

      Gracias

  11. Mauricio Chavarro dice:

    Buenas noches quiero realizar una macro que me abra una transaccion en SAP eso es posible como se haría agradezco me colaboraran gracias

    • Buenas tardes.

      No comprendo cual es el objetivo de «abrir una transacción», te refieres a cambiar el estado de un documento de cerrado a abierto?

      Saludos

  12. Luis dice:

    Estimado hice todo según lo que informas , pero me da un error.

    «Se ha producido el error’-106(ffffff96)’ en tiempo de ejecución:
    Error de Automatización.
    Al parecer es cuando ejecuta la línea.

    Set vItem = oCompany.GetBusinessObject(oItems)

    Sldos,
    LuisMR

  13. MANUEL LÓPEZ dice:

    buenos días
    alguien me puede facilitar un ejemplo de macro en VBA que haga lo entrario; es decir, que importe a Excel 2010 los datos de una tabla de SAP
    tengo el SAP GUI que creo que es necesario
    ¿alguien me ayuda?
    saludos

    • Felipe Loyola dice:

      Buenas Manuel.

      Lo que deseas es rescatar los datos de la base de datos hacía excel?

      Saludos

  14. Juan Carlos dice:

    No se muestran las imágenes. Veo que están colgadas de sites.google.com. Sí existen aún esas imágenes?

    Saludos,

    JC.

    • Victor Riquelme dice:

      Estimado muchas gracias por la información. En este mismo momento haremos el cambio.

      Saludos

  1. marzo 10, 2015

    […] Programar una macro para importar desde excel usando la DI API […]