Agregar registro a tabla de usuario SAP B1

Estimados, agradezco de su ayuda, necesitamos agregar registros a una tabla de usuario a través de un servicio con DIAPI, el error que nos muestra es: “Invalid field name”

Nota: seguimos las instrucciones en el siguiente tema: “Agregar registro a Tabla de Usuario por DI API”, sin conseguir resultados esperados.

Estamos con SAP B1 9.2.pl04

El código que estamos usando es:

SAPbobsCOM.UserTable oUserTable;
                oUserTable = cmp.UserTables.Item("RFXAPLICACION");
                oUserTable.Code = "5";
                oUserTable.Name = "cinco";
                oUserTable.UserFields.Fields.Item("U_CampoPrueba").Value = "dos";

                if (oUserTable.Add() == 0)
                {
                    Console.WriteLine("Se agrego");
                }
                else
                {
                    Console.WriteLine("No se agrego");
                }

Gracias,

1 me gusta

es correcto el nombre del campo?

3 Me gusta

Yo cree este método y va de lujo, Los parámetros son el nombre del UDT y un Objeto mapeado y cargado correspondiente a cada campo del UDT .El código para cargar y agregar un registro a un UserTables se ve claramente.

Public Shared Function InsertRecord(ByVal UDT_Name As String, ByVal Objeto As Object, Optional DB_Company As String = "") As String
        Dim rpta As String = "N"
        Dim SBO_Company As SAPbobsCOM.Company = oCompany
        Try
            FuncionesUDT.Connect_Company(SBO_Company)

            If DB_Company.Trim.Length > 0 Then
                Dim oConectarAplicacion As New DConectarAplicacion()
                SBO_Company = oConectarAplicacion.Conectar_Empresa(SBO_Company, DB_Company)
            End If

            Dim UDT As SAPbobsCOM.UserTable

            UDT = SBO_Company.UserTables.Item(UDT_Name)
            UDT.Code = FuncionesUDT.GetNextCode(SBO_Company, UDT_Name).ToString
            UDT.Name = UDT.Code

            For Each propiedad As PropertyInfo In Objeto.GetType.GetProperties
                Try
                    Dim tipoPropiedad As String = propiedad.PropertyType.Name
                    Dim NombrePropiedad As String = propiedad.Name
                    Dim valorPropiedad = propiedad.GetValue(Objeto, Nothing)
                    UDT.UserFields.Fields.Item(NombrePropiedad).Value = valorPropiedad
                Catch ex As Exception
                    rpta = "N"
                End Try
            Next

            Dim ErrCode = UDT.Add()
            If ErrCode <> 0 Then
                rpta = "N"
            Else
                rpta = "S"
            End If

        Catch ex As Exception
        End Try
        Return rpta

    End Function

Saludos :vulcan_salute:

6 Me gusta

Buen día @AldoaMC, el error Invalid field name te puede aparecer por tres motivos:

  1. Nombre incorrecto de la tabla de usuario (UDT)
  2. Nombre incorrecto del campo de usuario (UDF | U_nombre)
  3. Versión incorrecta del SQL Server al conectarte al objeto oCompany (oCompany.DbServerType = BoDataServerTypes.dst_MSSQL2014)

No me he topado con que arroje ese error en otro escenario, te sugeriría revisar estos tres puntos mencionados para dar con el problema.

Espero que te sea de ayuda, saludos cordiales.

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.