Buenas tardes,
Un placer compartir mi problema en esta gran comunidad de SAP aunque sinceramente me hubiese gustado que me saliera a la primera, pero son cosas que estoy seguro que a todos nos ha pasado, trabajo como Analista Programador y la empresa donde laboro, ha realizado una migración de SAP BO 9.0 a 9.3; estoy teniendo un problema al momento de realizar la actualización de los socios de negocio, no me permite realizar la transacción ya que me emite el siguiente error " [OCRD.State2] , ‘El valor enlazado 15 no existe’ ", he verificado y ya existe registros antiguos con ese valor , agradecería mucho su pronta ayuda, gracias.
adjunto codigo:
public static int ClienteActualizarFacturacion(SAPbobsCOM.Company mobjCnn, string strCodigoSuiza, string strNombre, string strNroDocumento, int intGrupo,
int intCondicionPago, string strTipoPersona, string strNombreIngles, string strTelefono1, string strTelefono2, string strCelular, string strCorreo,
string strComentario, string strTipoDocumento, bool blnSeguro, bool blnReferencia, bool blnParticulares, bool blnCompania, string strPaterno,
string strMaterno, string strNombres, string[] strArray, out string strMensaje)
{
// ByVal strArray As String
SAPbobsCOM.BusinessPartners objCliente;
long lngResultado;
string strCorrelativo = string.Empty;
string strCodigoSAP = string.Empty;
int intFila;
int intRegistro = 0;
int iResult = 0;
strMensaje = string.Empty;
try
{
SAPbobsCOM.Recordset oRecordsetCodigo = (SAPbobsCOM.Recordset)mobjCnn.GetBusinessObject(BoObjectTypes.BoRecordset);
string queryCodigo = string.Format("exec [dbo].[up_OCRD_CodigoSAP] {0}", strCodigoSuiza);
//string queryCodigo = string.Format("exec [dbo].[up_OCRD_CodigoSAP]");
oRecordsetCodigo.DoQuery(queryCodigo);
strCodigoSAP = oRecordsetCodigo.Fields.Item(0).Value.ToString();
int ntotal = strArray.Length;
int ncolumnas = 8;
int nfilas = ntotal / ncolumnas;
//intFila = Math.Ceiling((double)(UBound(strArray) + 1) / (double)8);
//intFila = Math.Ceiling((double)(UBound(strArray) + 1) / (double)8);
//strCodigoSAP = fxObtenerCodigoSAPCliente[strCodigoSuiza];
if ((strCodigoSAP ) == "NO EXISTE")
{
iResult = 2;
strMensaje = "No existe el código del SAP.";
return iResult;
}
objCliente = mobjCnn.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners);
mobjCnn.StartTransaction();
{
var withBlock = objCliente;
withBlock.PriceListNum = -1;
withBlock.CardCode = strCodigoSAP;
withBlock.CardType = SAPbobsCOM.BoCardTypes.cCustomer;
withBlock.CardName = strNombre;
withBlock.CardForeignName = strNombreIngles;
withBlock.GroupCode = intGrupo;
withBlock.PayTermsGrpCode = intCondicionPago;
withBlock.FederalTaxID = strNroDocumento;
withBlock.Currency = "##";
withBlock.UserFields.Fields.Item("U_BKP_CodSuiza").Value = strCodigoSuiza;
withBlock.UserFields.Fields.Item("U_BPP_BPTP").Value = strTipoPersona;
if ((strTelefono1 ?? "") != (string.Empty ?? ""))
withBlock.Phone1 = strTelefono1.Trim();
if ((strTelefono2 ?? "") != (string.Empty ?? ""))
withBlock.Phone2 = strTelefono2.Trim();
if ((strCelular ?? "") != (string.Empty ?? ""))
withBlock.Cellular = strCelular.Trim();
if ((strCorreo ?? "") != (string.Empty ?? ""))
withBlock.EmailAddress = strCorreo.Trim();
if ((strComentario ?? "") != (string.Empty ?? ""))
withBlock.FreeText = strComentario.Trim();
withBlock.Properties[1] = blnSeguro == true ? SAPbobsCOM.BoYesNoEnum.tYES : SAPbobsCOM.BoYesNoEnum.tNO;
withBlock.Properties[2] = blnReferencia == true ? SAPbobsCOM.BoYesNoEnum.tYES : SAPbobsCOM.BoYesNoEnum.tNO;
withBlock.Properties[3] = blnParticulares == true ? SAPbobsCOM.BoYesNoEnum.tYES : SAPbobsCOM.BoYesNoEnum.tNO;
withBlock.Properties[4] = blnCompania == true ? SAPbobsCOM.BoYesNoEnum.tYES : SAPbobsCOM.BoYesNoEnum.tNO;
if ((strTipoDocumento ?? "") != (string.Empty ?? ""))
withBlock.UserFields.Fields.Item("U_BPP_BPTD").Value = strTipoDocumento;
if ((strPaterno ?? "") != (string.Empty ?? ""))
withBlock.UserFields.Fields.Item("U_BPP_BPAP").Value = strPaterno;
if ((strMaterno ?? "") != (string.Empty ?? ""))
withBlock.UserFields.Fields.Item("U_BPP_BPAM").Value = strMaterno;
if ((strNombres ?? "") != (string.Empty ?? ""))
withBlock.UserFields.Fields.Item("U_BPP_BPNO").Value = strNombres;
//withBlock.UserFields.Fields.Item("U_BKP_TipoCuenta").Value = "001";
if (!(strArray == null))
{
intRegistro = 0;
//int nfilas = ntotal / ncolumnas;
//for (int i = 0, loopTo = nfilas; i <= loopTo; i++)
for (int i = 0; i < nfilas; i++)
//for (int i = 0, loopTo = intFila - 1; i <= loopTo; i++)
{
if ((strArray[intRegistro] ?? "") != (string.Empty ?? ""))
{
if (nfilas == 0)
//withBlock.Addresses.AddressName = (strArray[intRegistro] ?? "") == (string.Empty ?? "") ? "Dirección Fiscal" : strArray[intRegistro];
withBlock.Addresses.AddressName = (strArray[intRegistro] ) == (string.Empty) ? "Dirección Fiscal" : strArray[intRegistro];
else
withBlock.Addresses.AddressName = (strArray[intRegistro] ) == (string.Empty ) ? "Dirección " + Convert.ToString(nfilas) : strArray[intRegistro];
if ((strArray[intRegistro + 6] ) == "F")
withBlock.Addresses.AddressType = SAPbobsCOM.BoAddressType.bo_BillTo;
else if ((strArray[intRegistro + 6]) == "D")
withBlock.Addresses.AddressType = SAPbobsCOM.BoAddressType.bo_ShipTo;
// verificar este codigo
withBlock.Addresses.Street = strArray[intRegistro + 1]; // Avenida
if ((strArray[intRegistro + 6] ) != "D")
withBlock.Addresses.Block = strArray[intRegistro + 2];// Distrito
withBlock.Addresses.City = strArray[intRegistro + 3]; // Provincia
// withBlock.Addresses.State = null;// strArray[intRegistro + 4]; // Departamento
///withBlock.Addresses.Country = (strArray[intRegistro + 5] ?? "") == (string.Empty ?? "") ? "PE" : strArray[intRegistro + 5];
withBlock.Addresses.Country = (strArray[intRegistro + 5] ) == (string.Empty ) ? "PE" : strArray[intRegistro + 5];
withBlock.Addresses.ZipCode = strArray[intRegistro + 7];
// fin de verificacion
withBlock.Addresses.Add();
}
intRegistro = intRegistro + 8;
}
}
lngResultado = withBlock.Update();
if (lngResultado < 0)
{
//mobjCnn.GetLastError(mintError, mstrError);
//if (mobjCnn.InTransaction)
// mobjCnn.EndTransaction(SAPbobsCOM.BoWfTransOpt.wf_RollBack);
//return Conversions.ToString(mintError + " - ") + mstrError;
int iError;
string sErrorMensaje;
mobjCnn.GetLastError(out iError, out sErrorMensaje);
try
{
mobjCnn.EndTransaction(SAPbobsCOM.BoWfTransOpt.wf_RollBack);
}
catch { }
iResult = iError;
strMensaje = sErrorMensaje;
}
else
{
mobjCnn.EndTransaction(SAPbobsCOM.BoWfTransOpt.wf_Commit);
iResult = 1;
//if (blnDesconectar == true)
// mobjCnn.Disconnect();
strArray = null;
strMensaje = "OK";
}
}
}
catch (Exception ex)
{
//mintError = 1;
//mstrError = ex.Message;
//if (mobjCnn.InTransaction)
// mobjCnn.EndTransaction(SAPbobsCOM.BoWfTransOpt.wf_RollBack);
//return mstrError;
try
{
mobjCnn.EndTransaction(SAPbobsCOM.BoWfTransOpt.wf_RollBack);
}
catch { }
iResult = 2;
strMensaje = ex.Message;
}
return iResult;
}