Skip to Content

Upload OjournalVoucher XML File

Hello everyone

I'm trying to upload an xml file from Ojournalvoucher with 5000 lines and it takes me over 2 hours to upload to sap. Someone knows how I can optimize my code so that this time decreases.

below the code.

using SAPbobsCOM;
using ConectoresBO.Conectores;
using System.Data.SqlClient;
using System;

namespace SAPBOConector.JournalVouchers
{
public class oJournalVouchers
{
public oJournalVouchers(SAPbobsCOM.JournalVouchers oJournalVouchers, SAPbobsCOM.Company sapCompany, ConectoresBO.Conectores.Company company, int key, int index)
{

SQLAdapter sqlAdapter = company.Conector.SQLAdapter;
SAPbobsCOM.JournalVouchers JournalVouchers = (SAPbobsCOM.JournalVouchers)sapCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oJournalVouchers);

int COUNT = 0;

SqlDataReader reader = sqlAdapter.ejecutarConsulta("SELECT COUNT('A') FROM ["
+ sapCompany.CompanyDB + "].dbo.OBTF WHERE U_BKV_UID='"
+ oJournalVouchers.JournalEntries.UserFields.Fields.Item("U_BKV_UID").Value + "'");


if (reader.Read())
{
COUNT = reader.GetInt32(0);
}
sqlAdapter.cerrarConexion();
if (COUNT == 0)
{


//Cabecera

try
{

JournalVouchers.JournalEntries.TransactionCode = oJournalVouchers.JournalEntries.TransactionCode;
JournalVouchers.JournalEntries.Memo = oJournalVouchers.JournalEntries.Memo;
JournalVouchers.JournalEntries.UserFields.Fields.Item("U_BKV_UID").Value = oJournalVouchers.JournalEntries.UserFields.Fields.Item("U_BKV_UID").Value;
//JournalVouchers.JournalEntries.Series = oJournalVouchers.JournalEntries.Series;
JournalVouchers.JournalEntries.TaxDate = oJournalVouchers.JournalEntries.TaxDate;
JournalVouchers.JournalEntries.DueDate = oJournalVouchers.JournalEntries.DueDate;
JournalVouchers.JournalEntries.ReferenceDate = oJournalVouchers.JournalEntries.ReferenceDate;
//JournalVouchers.JournalEntries.Series = oJournalVouchers.JournalEntries.Series;
//JournalVouchers.JournalEntries.DocumentType = oJournalVouchers.JournalEntries.DocumentType;

sqlAdapter.cerrarConexion();

}
catch (Exception ErrorCapt) {
string error = "Ocurrio un Error, posible causa: " + ErrorCapt.Message;

}

//Lineas
sqlAdapter.cerrarConexion();

for (int i = 0; i < oJournalVouchers.JournalEntries.Lines.Count; i++)
{
if (i != 0) JournalVouchers.JournalEntries.Lines.Add();
oJournalVouchers.JournalEntries.Lines.SetCurrentLine(i);
JournalVouchers.JournalEntries.Lines.SetCurrentLine(i);
char[] delimiterChars = { '.' };

JournalVouchers.JournalEntries.Lines.AccountCode = oJournalVouchers.JournalEntries.Lines.AccountCode;
JournalVouchers.JournalEntries.Lines.Credit = oJournalVouchers.JournalEntries.Lines.Credit;
JournalVouchers.JournalEntries.Lines.Debit = oJournalVouchers.JournalEntries.Lines.Debit;
//JournalVouchers.JournalEntries.Lines.ReferenceDate1 = oJournalVouchers.JournalEntries.Lines.ReferenceDate1;
JournalVouchers.JournalEntries.Lines.UserFields.Fields.Item("U_HBT_Tercero").Value = oJournalVouchers.JournalEntries.Lines.UserFields.Fields.Item("U_HBT_Tercero").Value;
JournalVouchers.JournalEntries.Lines.CostingCode = oJournalVouchers.JournalEntries.Lines.CostingCode;
JournalVouchers.JournalEntries.Lines.CostingCode2 = oJournalVouchers.JournalEntries.Lines.CostingCode2;
JournalVouchers.JournalEntries.Lines.CostingCode3 = oJournalVouchers.JournalEntries.Lines.CostingCode3;
JournalVouchers.JournalEntries.Lines.CostingCode4 = oJournalVouchers.JournalEntries.Lines.CostingCode4;
JournalVouchers.JournalEntries.Lines.LineMemo = oJournalVouchers.JournalEntries.Lines.LineMemo;
//JournalVouchers.JournalEntries.Lines.ShortName = oJournalVouchers.JournalEntries.Lines.ShortName;


sqlAdapter.cerrarConexion();

JournalVouchers.JournalEntries.Lines.Add();
}


JournalVouchers.Add();

String Status = "";

if (sapCompany.GetLastErrorCode() != 0)
{
Status = "Error :" + sapCompany.GetLastErrorDescription().ToString();


}
else
{

Status = "Done";


}
//sqlAdapter.ejecutarSentencia("INSERT INTO [" + sapCompany.CompanyDB + "_CONS].dbo.LOG([Key],[index],resultado,u_bkv_uid) VALUES ('" + key + "'," + index + ",'" + Status.Replace("'", "") + "','" + JournalVouchers.JournalVouchers.UserFields.Fields.Item("U_BKV_UID").Value + "')");
sqlAdapter.ejecutarSentencia("INSERT INTO " + sapCompany.CompanyDB + "_CONS.dbo.LOG([Key],[index],resultado,u_bkv_uid) VALUES ('" + key + "'," + index + ",'" + Status.Replace("'", "") + "','" + oJournalVouchers.JournalEntries.UserFields.Fields.Item("U_BKV_UID").Value + "')");
}
else
{

//sqlAdapter.ejecutarSentencia("INSERT INTO [" + sapCompany.CompanyDB + "_CONS].dbo.LOG([Key],[index],resultado,u_bkv_uid) VALUES ('" + key + "'," + index + ",'" + "Error, ya existe el documento." + "','" + JournalVouchers.JournalVouchers.UserFields.Fields.Item("U_BKV_UID").Value + "')");
sqlAdapter.ejecutarSentencia("INSERT INTO " + sapCompany.CompanyDB + "_CONS.dbo.LOG([Key],[index],resultado,u_bkv_uid) VALUES ('" + key + "'," + index + ",'" + "Error, ya existe el documento." + "','" + oJournalVouchers.JournalEntries.UserFields.Fields.Item("U_BKV_UID").Value + "')");
}
}
}
}

Regards.

Alvaro

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • Mar 22, 2017 at 12:46 AM

    Hi Alvaro,

    When you debug it, can you point out which line is taking the most time ?
    If it was the JournalVouchers.Add(), I am afraid there is not much we can do aside from trying to reindex the database.
    Otherwise you can try to create an XML file and then load this XML file rather than feeding each line into the object.

    Regards
    Edy

    Add comment
    10|10000 characters needed characters exceeded