miércoles, 9 de julio de 2014

Mi incursion en macros macro EXCEL a SAP B1 Anticipos

Jamás me había interesado esto, pensé siempre que era mejor una aplicación desde cualquier lenguaje, sin embargo el poco tiempo y la necesidad me han hecho ver las macros como una buena herramienta para mitigar ciertas tareas repetitivas y tediosas.

para empezar genere esta pequeña macro para poder enlazar a objetos de SAP. necesitaba cerrar anticipos de manera automática por ser un número grande.

para esto primero agregar herramientas/referencia dentro de vb en la pestaña de programador en Excel.



agregamos este código, explico en cada renglón por que el objeto o la variable.

Sub SAP()
'---Datos SAP...
Dim oCompany As SAPbobsCOM.Company 'objeto de compañías de sapbobscom
Dim lRetCode, ErrorCode As Long 'variables para errores
Dim ErrorMessage As String 'mensaje de error variable
Dim Retval As Long 'variable de error regresado por sap
Dim vItem As SAPbobsCOM.Documents 'objeto de documento en SAP
Dim numdocentry As Long 'variable para mover el registro del objeto
' Importar
  Set oCompany = New SAPbobsCOM.Company 'asignas al objeto para manejar la bd.
    oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2005 'tipo de base de datos,
                  'hay diferentes dependiendo del manejador de la bd
    oCompany.DbUserName = "Tudbuser"
    oCompany.DbPassword = "tupasswordsql"
    oCompany.Server = "127.0.0.1"
    oCompany.CompanyDB = "basededatosSAP"
    oCompany.UserName = "userSAP"
    oCompany.Password = "passSAP"
    oCompany.UseTrusted = False
    lRetCode = oCompany.Connect()
    Set vItem = oCompany.GetBusinessObject(oDownPayments)
    Row = 2
    Do While Sheets(1).Cells(Row, "A") <> ""
        numdocentry = Sheets(1).Cells(Row, "A")
        vItem.GetByKey (numdocentry)
        'vItem.NumAtCard = Sheets(7).Cells(Row, "C")
        vItem.Comments = "anticipo cancelado macro"
        vItem.Update ' El objeto se actualiza puede ser create, delete, update
        Retval = vItem.Cancel
        Row = Row + 1
    Loop
    oCompany.Disconnect 'desconectar compañía
    MsgBox "Exportado "
'Importar a SAP
MsgBox "Exportado ..!"
End Sub



tengo poco tiempo pero esto lo posteo a ver si puede servir a alguien, cabe mencionar que la DI API es de la versión 2007.