`Hello All, I am trying to create a table in the SAP B1. But I am getting an error code "-1120". For creating a table I have fetched a data from the json file. And by using that data I tried to create the tables in the SAP B1. But I am getting an error code "-1120".
Here is the code
string text = File.ReadAllText(@"C:\Users\vijay\Documents\Visual Studio 2015\Projects\TestAddon_03\TestAddon_03\json1.json");
var tableInfo = JsonConvert.DeserializeObject<TableInfo>(text);
try
{
foreach (var table in tableInfo.tables)
{
string tbName = table.tableName;
string tbDis = table.tableDescription;
string tbType = table.tableType;
GC.Collect();
SAPbobsCOM.UserTablesMD objUserTableMD = (SAPbobsCOM.UserTablesMD)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserTables);
objUserTableMD.TableName = tbName;
objUserTableMD.TableDescription = tbDis;
switch (tbType)
{
case "Document":
objUserTableMD.TableType = SAPbobsCOM.BoUTBTableType.bott_Document;
break;
case "MasterData":
objUserTableMD.TableType = SAPbobsCOM.BoUTBTableType.bott_MasterData;
break;
case "NoObject":
objUserTableMD.TableType = SAPbobsCOM.BoUTBTableType.bott_NoObject;
break;
default:
Application.SBO_Application.MessageBox("Invalid Table Type");
break;
}
int result = objUserTableMD.Add();
//Application.SBO_Application.MessageBox(Convert.ToString(result));
if(result != 0)
{
Application.SBO_Application.MessageBox("Table Not Created" + "\n --------- \n" + oCompany.GetLastErrorDescription() );
}
else
{
Application.SBO_Application.MessageBox("Table Created");
foreach (var field in table.fields)
{
string fieldNm = field.fieldName;
string fieldType = field.fieldType;
int fieldSize = field.fieldSize;
SAPbobsCOM.UserFieldsMD objUserFieldsMD = (SAPbobsCOM.UserFieldsMD)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);
objUserFieldsMD = null;
objUserFieldsMD.TableName = tbName;
objUserFieldsMD.Name = field.fieldName;
switch (fieldType)
{
case "Numeric":
objUserFieldsMD.Type = SAPbobsCOM.BoFieldTypes.db_Numeric;
break;
case "String":
objUserFieldsMD.Type = SAPbobsCOM.BoFieldTypes.db_Alpha;
break;
case "Date":
objUserFieldsMD.Type = SAPbobsCOM.BoFieldTypes.db_Date;
break;
case "Float":
objUserFieldsMD.Type = SAPbobsCOM.BoFieldTypes.db_Float;
break;
case "Memo":
objUserFieldsMD.Type = SAPbobsCOM.BoFieldTypes.db_Memo;
break;
default:
Application.SBO_Application.MessageBox("Invalid FieldType");
break;
}
objUserFieldsMD.Size = field.fieldSize;
int fieldResult = objUserFieldsMD.Add();
if (fieldResult != 0)
{
Application.SBO_Application.MessageBox("Fields Not Created");
}
else
{
Application.SBO_Application.MessageBox("Fields Created");
}
}
// Application.SBO_Application.MessageBox(tbName + " " + tbDis + " " + tbType + " " + fieldNm + " " + fieldType + " " + fieldSize);
}
}
}
catch(Exception Create)
{
Application.SBO_Application.MessageBox(Create.ToString());
}
And This is a sample json file
{
"tables": [
{
"tableName": "SAMP1",
"tableDescription": "SampleTable 1",
"tableType": "Document",
"fields": [
{
"fieldName": "CF1",
"fieldType": "String",
"fieldSize": 100
}
]
},
{
"tableName": "SAPM2",
"tableDescription": "SampleTable 2",
"tableType": "MasterData",
"fields": [
{
"fieldName": "CF2",
"fieldType": "Numeric",
"fieldSize": 8
},
{
"fieldName": "CF3",
"fieldType": "String",
"fieldSize": 50
}
]
}
]
}
I am getting the error at the below line:
Application.SBO_Application.MessageBox("Table Not Created" + "\n --------- \n" + oCompany.GetLastErrorDescription() );
Error:
SAPbobsCOM.ICompany.GetLastErrorDescription returend "Ref Count for this object is higher then 0".