Hola expertos,
Quisiera su apoyo para crear solicitudes de compras en SAP.
Yo lo inserto por XML,
pero también trabajo con C# o VB
Hola expertos,
Quisiera su apoyo para crear solicitudes de compras en SAP.
Yo lo inserto por XML,
pero también trabajo con C# o VB
Hola Jesús, no entiendo tu post, ¿podrías explicarte mejor? ¿Tu eres el que realiza esto? ¿Que tal si nos haces un tutorial?
Hola Jesus
Sino sabes SDK tiene la opción del DTW o B1if.
En caso de tener hana podrías utilizar el service layer donde puedes trabajar con servicios REST mediante la ASP.NET WEB-API.
cualquier duda especifica, con gusto!
@andresramirez Hola,
Necesito que sea por codigo del SDK ya sea C# o VB porque estoy creando un sistema Web que inserta en SAP.
Que tal @jesusdja
Te paso un ejemplo en C#, de como crear una solicitud de compra en SAP, he creado diferentes documentos pero solicitudes no había tenido necesidad, sin embargo, hice algunas pruebas y este código me funcionó.
private void btnCrearSolicitudDeCompra_Click(object sender, EventArgs e) {
Company oEmpresa = new SAPbobsCOM.Company();
try {
string baseDeDatosEMPRESA = "NombreBaseDeDatos";
oEmpresa.Server = "SERVIDOR";
oEmpresa.LicenseServer = "SERVIDOR:30000";
oEmpresa.CompanyDB = baseDeDatosEMPRESA;
oEmpresa.UserName = "usuario";
oEmpresa.Password = "password";
oEmpresa.DbUserName = "sa";
oEmpresa.DbPassword = "claveSQL";
oEmpresa.DbServerType = BoDataServerTypes.dst_MSSQL2014;
oEmpresa.language = BoSuppLangs.ln_Spanish_La;
oEmpresa.UseTrusted = false;
if (oEmpresa.Connect() != 0) {
//int errNumero = 0; string errMensaje = "";
oEmpresa.GetLastError(out int errNumero, out string errMensaje);
oEmpresa.Disconnect();
Marshal.ReleaseComObject(oEmpresa);
oEmpresa = null;
MessageBox.Show("Ha ocurrido el siguiente error al intentar conectar a la Base de Datos " + baseDeDatosEMPRESA + " en SAP\n\n" + errMensaje, tituloMSGBOX, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
// inicia transaction para asegurarse de que si NO se realicen con éxito todas las operaciones, deshaga cualquier cambio realizado hasta antes del error en caso de ocurrir
oEmpresa.StartTransaction();
// procede a crear la solicutd de compra
SAPbobsCOM.Documents solicitudCOMPRA = oEmpresa.GetBusinessObject(BoObjectTypes.oPurchaseRequest);
solicitudCOMPRA.ReqType = (int)BoMsgRcpTypes.rt_InternalUser;
solicitudCOMPRA.RequesterBranch = -2; // asignar un valor válido
solicitudCOMPRA.RequesterDepartment = -2; // asignar un valor válido
solicitudCOMPRA.DocDate = DateTime.Now;
solicitudCOMPRA.DocDueDate = DateTime.Now;
solicitudCOMPRA.TaxDate = DateTime.Now;
solicitudCOMPRA.RequriedDate = DateTime.Now.AddDays(1); // para efectos de prueba, solo adicioné un día a la fecha actual
//solicitudCOMPRA.Series = 99; // en caso de que tengas más de una serie (puede existir un combo como en SAP donde muestre la descripción y aquí plasmas su número
solicitudCOMPRA.Lines.ItemCode = "codigoProducto";
solicitudCOMPRA.Lines.LineVendor = "codigoProveedor"; // no estoy seguro, sin embargo, de acuerdo a las pruebas realizadas, si no asignas un proveedor, te asigna el de la última compra, a reserva de que lo verifiques
solicitudCOMPRA.Lines.RequiredDate = DateTime.Now.AddDays(1); // para efectos de prueba, solo adicioné un día a la fecha actual
solicitudCOMPRA.Lines.Quantity = 1;
solicitudCOMPRA.Lines.UnitPrice = 5;
solicitudCOMPRA.Lines.TaxCode = "IVAA0001";
solicitudCOMPRA.Comments = "Concepto de la Solicitud de Compra";
int resultado = solicitudCOMPRA.Add();
if (resultado != 0) {
//int errNumero = 0; string errMensaje = "";
oEmpresa.GetLastError(out int errNumero, out string errMensaje);
if (oEmpresa.InTransaction == true) {
oEmpresa.EndTransaction(BoWfTransOpt.wf_RollBack);
} // si la transacción sigue abierta, la cierra deshaciendo todos los cambios realizados hasta el momento
throw new Exception("Ha ocurrido el siguiente error, al intentar crear la Solicitud de Compra, revise por favor ...\n\n" + errMensaje);
}
// guarda en firma la información en la base de datos
oEmpresa.EndTransaction(BoWfTransOpt.wf_Commit);
MessageBox.Show("Las operaciones fueron realizadas con éxito, revise por favor ...", tituloMSGBOX, MessageBoxButtons.OK, MessageBoxIcon.Information);
if (oEmpresa.Connected) {
oEmpresa.Disconnect();
}
oEmpresa = null;
}
catch (Exception err) {
// Control de errores
MessageBox.Show(err.Message, tituloMSGBOX, MessageBoxButtons.OK, MessageBoxIcon.Warning);
if (oEmpresa.InTransaction == true) {
oEmpresa.EndTransaction(BoWfTransOpt.wf_RollBack);
} // si la transacción sigue abierta, la cierra deshaciendo todos los cambios realizados hasta el momento
if (oEmpresa.Connected) {
oEmpresa.Disconnect();
}
oEmpresa = null;
}
}
Recomendaciones:
1.- Correrlo en una Base de Datos de PRUEBAS
2.- Cuando se hace por primera vez o cuando hay cambios de versión, crear exactamente el mismo documento de forma manual y comparar las tablas (campo por campo) con el documento creado desde el proceso, con esto nos podemos dar cuenta de posibles datos que estemos omitiendo.
Espero te ayude a solucionar tu problema o al menos para darte una idea.
Saludos
SAP B1 v9.2 PL03
México
Muchisimas gracias de verdad es lo que necesitaba.
El de servicio tambien lo necesito pero de aqui mismo lo saco.
Perfecto.!!
Que bien que te fue útil @jesusdja
Solo te pido de favor no olvides marcarlo como solucionado, para que esto sirve de ayuda para otros usuarios que tengan el mismo problema. Gracias
Saludos
Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.