Quería consultar con ustedes si es posible agregar registros a una tabla de usuario de SAP B1 a través del DI API, actualmente estoy utilizando C#, ASP.NET y SQL Server.
Como para hacer movimientos no se pueden hacer “insert” directamente, quería ver si alguno ha realizado ésto antes, si me pudieran apoyar con algún ejemplo o recurso para conseguirlo.
Como siempre gracias de antemano por su apoyo. Saludos cordiales.
Las tablas de usuario puedes hacer insert, update y delete sin ningún problema, ya que no afectas a información de SAP. Al igual que los campos de usuario de las tablas de SAP.
Lo único que no recomiendan es hacerlo sobre las tablas y campos de SAP.
Para poder agregar registros a una UDT por medio de la DI API debes hacer uso del objeto GeneralServices, aqui va un ejemplo(Esta en VB.net):
Dim oGeneralService As SAPbobsCOM.GeneralService
Dim oGeneralData As SAPbobsCOM.GeneralData
Dim oChild As SAPbobsCOM.GeneralData
Dim oChildren As SAPbobsCOM.GeneralDataCollection
Dim oGeneralParams As SAPbobsCOM.GeneralDataParams
//Get GeneralService (oCmpSrv is the CompanyService)
Set oGeneralService = oCmpSrv.GetGeneralService("MiTablaUDT")
//Create data for new row in main UDO
Set oGeneralData = oGeneralService.GetDataInterface(gsGeneralData)
oGeneralData.SetProperty ("Code", "First")
oGeneralData.SetProperty ("U_MiCampo", "Mi data")
//Create data for a row in the child table
Set oChildren = oGeneralData.Child("ChildUDO")
Set oChild = oChildren.Add
oChild.SetProperty ("U_Data", "child data")
oChild.SetProperty ("U_Type", 6)
//Add the new row, including children, to database
oGeneralService.Add oGeneralData
Respecto a lo que indica @Charlei117 , es cierto, SAP unicamente permite manipular de forma directa (SQL stament) las UDT, pero no las Tablas del sistema, ni los UDOs, ni los UDF definidos sobre estos ultimos (No consegui a la mano la documentacion, pero en los fors en ingles es lo primero que aprendes).
Siento defraudarte con eso, pero no tengo documentación, pero si te pones a pensar, todas las sentencias de SAP solo contempla las tablas y campos que vienen por defecto, por lo que el resto de información no la tiene en cuenta y es para personalización propia.
Hola que tal Gabriel, muchas gracias por tu respuesta. Hice la prueba con tu ejemplo y con otro código y funcionó correctamente. Al final, por simplicidad dejé como código el siguiente:
Y lo que comentas @Charlei117 tiene mucho sentido, pero como en algunos casos el SDK es algo restrictivo, quise despejar las dudas antes de arriesgarme a alguna mala práctica.
Muchas gracias a ambos por su apoyo. Quedó marcada la solución por el ejemplo del código.