Error DI API para generar llamadas de servicio

Hola,
Estoy programando en visual basic con sdk de sap 9.2 businnes one y me aparece error al momento de hacer add de la llamada.

El error lo he buscado y no entiendo a que se refiere, además no se cuantos campos obligatorios son necesarios para que pueda grabar la llamada de servicio, es primera vez que programo una sdk y la mayoría de los datos los he sacado de ejemplos en internet. muchas gracias si alguien tiene alguna respuesta.

Aquí tengo el codigo, he colocado datos de prueba que existen en la base de datos para poder probar el codigo, ya he solucionado algunos problemas, pero este no entiendo que puede ser, se refiere al tiempo HH:mm Starttime, Asociados al campo Startdate. le he cambiado formato, he tratado de colocar un valor directamente y nada, favor ayuda.

En el código generé una excepción de error con un mensaje, es en esa linea que me muestra el siguiente error : “La conversion de la cadena “1540” en el tipo Date no es valida”
1540 es la hora y minutos en que ejecute al rutina y que que deberia queda grabado en el campo que es de tipo int.

Public Class Form1
    Private oCompany As SAPbobsCOM.Company
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Coneccion()
    End Sub

    Private Sub Coneccion()

        Dim lRetCode As Long
        oCompany = New SAPbobsCOM.Company
        oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008
        oCompany.DbUserName = "sa"
        oCompany.DbPassword = "Sa123456"
        oCompany.Server = "10.0.0.7"
        oCompany.CompanyDB = "Zdemo-Deira"
        oCompany.UserName = "manager"
        oCompany.Password = "FF$2019"
        oCompany.UseTrusted = False
        oCompany.language = SAPbobsCOM.BoSuppLangs.ln_Spanish

        lRetCode = oCompany.Connect()
        If lRetCode <> 0 Then
            MsgBox(oCompany.GetLastErrorDescription())
        Else
            '         Act_item
            MsgBox("CONECTADO A SAP")
            Ingllamadaservicio()
            oCompany.Disconnect()
            MsgBox("DECONECTADO OK")
        End If
    End Sub

    Private Sub Ingllamadaservicio()
        On Error GoTo ErrorHandler
        Dim fecha As Date = Now()
        Dim hora As Date
        Dim ErrCode As Long
        Dim ErrMsg As String

        Dim SAPServiceCall As SAPbobsCOM.ServiceCalls
        SAPServiceCall = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oServiceCalls)

        SAPServiceCall.CustomerCode = "81201000C"
        SAPServiceCall.ManufacturerSerialNum = "S451432HH0NP0H"
        SAPServiceCall.Subject = "PRUEBA SAP LLAMADA SERVICIO AUTOMÁTICA: "
        SAPServiceCall.Origin = 1
        SAPServiceCall.ProblemType = 4
        SAPServiceCall.ProblemSubType = 2
        SAPServiceCall.CallType = 12
        SAPServiceCall.Queue = "011PFL"
        SAPServiceCall.StartDate = DateTime.Now
        hora = DateTime.Now.ToString("HHmm")
        SAPServiceCall.StartTime = hora
        SAPServiceCall.Add()
        If (SAPServiceCall.Update() <> 0) Then
            MessageBox.Show(oCompany.GetLastErrorDescription())
        End If
        Exit Sub
ErrorHandler:
        MsgBox("Exception:" + Err.Description)


    End Sub

Valida si te funciona esto:

  SAPServiceCall.StartDate = Date.Now
  SAPServiceCall.StartTime = DateTime.Now.ToString("HH:mm:ss")
2 Me gusta

Hola Juliancab, muchas gracias por tu ayuda, ya no me aparece el error, pero al momento de hacer el el add me aparece un nuevo error .
error1

he visto este campo en la tabla OSCL y aparece una R, traté de colocar directamente la “R” a este campo, pero no tengo esta propiedad la mas parecida es ServiceBPType .
muy agradecido por su respuesta pero mientra no tenga solucionado todos los campos que tiene que llevar la llamada de servicio para ser agregada no sabré están bien pero asumo que su repuesta está bien ya que no generó error.
gracias.

Es correcto, es ese y le puedes asigarnar datos asi:

Si es de Ventas

oSC.ServiceBPType = SAPbobsCOM.ServiceTypeEnum.srvcSales

Si es de Compras

oSC.ServiceBPType = SAPbobsCOM.ServiceTypeEnum.srvcPurchasing

Saludos

1 me gusta

Realice el cambio y agregue lo que me indicaste, quedo de la siguiente manera :slight_smile:
Private Sub Ingllamadaservicio()
On Error GoTo ErrorHandler
Dim fecha As Date = Now()
Dim hora As Date
Dim ErrCode As Long
Dim ErrMsg As String
Dim BT As String

    Dim SAPServiceCall As SAPbobsCOM.ServiceCalls
    SAPServiceCall = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oServiceCalls)

    SAPServiceCall.CustomerCode = "81201000C"
    SAPServiceCall.ManufacturerSerialNum = "S451432HH0NP0H"
    SAPServiceCall.Subject = "PRUEBA SAP LLAMADA SERVICIO AUTOMÁTICA: "
    SAPServiceCall.Origin = 1
    SAPServiceCall.ProblemType = 4
    SAPServiceCall.ProblemSubType = 2
    SAPServiceCall.CallType = 12
    SAPServiceCall.Queue = "011PFL"
    SAPServiceCall.StartDate = Date.Now
    SAPServiceCall.StartTime = DateTime.Now.ToString("HH:mm:ss")
    SAPServiceCall.ServiceBPType = SAPbobsCOM.ServiceTypeEnum.srvcSales
  
    SAPServiceCall.Add()
    If (SAPServiceCall.Update() <> 0) Then
        MessageBox.Show(oCompany.GetLastErrorDescription())
    End If
    Exit Sub

ErrorHandler:
MsgBox(“Exception:” + Err.Description)

End Sub

pero sigue saliendo el error.

error1

Ya vi tu error, al parecer agregas y luego quieres hacer un UPDATE, eso esta mal.

SAPServiceCall.Add()     <----Aqui estas agregando
If (SAPServiceCall.Update() <> 0) Then   <----Aqui estas actualizando

En todo caso deja solamente esta linea asi:

If (SAPServiceCall.add() <> 0) Then

SALUDOS

1 me gusta

Julian, tienes toda la razón, estaba preguntando por update y no por el add, realice los cambios y ejecuté a modo de debuger, ahora no me muestra errores y me agregó varios regsitros a la tabla OSC, creo que fue por la cantidad de veces que lo ejecuté, pero ahora quedó bien y el cógido quedó así :

Código

Public Class Form1
    Private oCompany As SAPbobsCOM.Company
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Coneccion()
    End Sub

    Private Sub Coneccion()

        Dim lRetCode As Long
        oCompany = New SAPbobsCOM.Company
        oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008
        oCompany.DbUserName = "sa"
        oCompany.DbPassword = "Sa123456"
        oCompany.Server = "10.0.0.7"
        oCompany.CompanyDB = "Zdemo-Deira"
        oCompany.UserName = "manager"
        oCompany.Password = "FF$2019"
        oCompany.UseTrusted = False
        oCompany.language = SAPbobsCOM.BoSuppLangs.ln_Spanish

        lRetCode = oCompany.Connect()
        If lRetCode <> 0 Then
            MsgBox(oCompany.GetLastErrorDescription())
        Else
            '         Act_item
            MsgBox("CONECTADO A SAP")
            Ingllamadaservicio()
            oCompany.Disconnect()
            MsgBox("DECONECTADO OK")
        End If
    End Sub

    Private Sub Ingllamadaservicio()
        On Error GoTo ErrorHandler
        Dim fecha As Date = Now()
        Dim hora As Date
        Dim ErrCode As Long
        Dim ErrMsg As String
        Dim BT As String

        Dim SAPServiceCall As SAPbobsCOM.ServiceCalls
        SAPServiceCall = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oServiceCalls)

        SAPServiceCall.CustomerCode = "81201000C"
        SAPServiceCall.ManufacturerSerialNum = "S451432HH0NP0H"
        SAPServiceCall.Subject = "PRUEBA SAP LLAMADA SERVICIO AUTOMÁTICA: "
        SAPServiceCall.Origin = 1
        SAPServiceCall.ProblemType = 4
        SAPServiceCall.ProblemSubType = 2
        SAPServiceCall.CallType = 12
        SAPServiceCall.Queue = "011PFL"
        SAPServiceCall.StartDate = Date.Now
        SAPServiceCall.StartTime = DateTime.Now.ToString("HH:mm:ss")
        SAPServiceCall.ServiceBPType = SAPbobsCOM.ServiceTypeEnum.srvcSales
        SAPServiceCall.Add()
        If (SAPServiceCall.Add() <> 0) Then
            MessageBox.Show(oCompany.GetLastErrorDescription())
        End If
        Exit Sub
ErrorHandler:
        MsgBox("Exception:" + Err.Description)


    End Sub

   
End Class

Igual dejaré abierto por unos días esto, ya que seguiré probando agregando más datos.

Te agradezco mucho tu gran ayuda y toda tu dedicación en esto y para los que necesiten agregar llamadas de servicio con DI API y Visual Studio, aquí tienen una pequeña ayuda para empezar.

@Carlos_Garay, recuerda agradecer a quienes te ayudaron valorando los distintos mensajes con el botón :heart: y seleccionando una respuesta (preferentemente no de tu autoría) como solución.

1 me gusta