on 05-07-2015 5:31 PM
Estimados al agregar una factura con la DI API me arroja el siguiente error:
5009-item number is missing-item number is missing-especify an item number
este es mi codigo, saque el ejemplo que vienen en el SDK
SAPbobsCOM.Documents facturaPuc;
facturaPuc = (SAPbobsCOM.Documents)oDictucSA.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices);
facturaPuc.DocumentSubType = SAPbobsCOM.BoDocumentSubType.bod_InvoiceExempt;
facturaPuc.Series = 0;
facturaPuc.CardCode = (string)"16026442-C0000";
facturaPuc.PaymentGroupCode = -1;
facturaPuc.DocDate = Convert.ToDateTime("06/05/2015");
facturaPuc.DocTotal = 0;
facturaPuc.DocNum = 1233654;
facturaPuc.Series = 47;
facturaPuc.VatPercent = 0.19;
facturaPuc.Lines.ItemCode = "0001";
facturaPuc.Lines.ItemDescription = "Banana";
facturaPuc.Lines.PriceAfterVAT = 00;
facturaPuc.Lines.Quantity = 50;
facturaPuc.Lines.Currency = "Eur";
facturaPuc.Lines.DiscountPercent = 10;
if (facturaPuc.Add() != 0)
{
int eCodigo;
string errCodigo;
oDictucSA.GetLastError(out eCodigo, out errCodigo);
Console.WriteLine("error factura puc " + eCodigo +"-" +errCodigo + "\n");
}
probé cerrando session en SAP pero es igual. Por favor si alguien conoce la solución o alguna ideal, favor de compartir.
Saludos y gracias.
Mismo codigo en C#
class SAPBusinessOne
{
SAPbobsCOM.Company oCompany = new SAPbobsCOM.Company();
public SAPBusinessOne()
{
ConSAP();
}
private void ConSAP()
{
oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008;
oCompany.DbUserName = "sa";
oCompany.DbPassword = "SAP**";
oCompany.Server = "sap9";
oCompany.CompanyDB = "SBO9*****";
oCompany.UserName = "manager";
oCompany.Password = "*****";
oCompany.UseTrusted = false;
oCompany.language = BoSuppLangs.ln_Spanish_La;
if (oCompany.Connect() != 0)
{
MessageBox.Show(oCompany.GetLastErrorDescription());
}
else
{
CargaOC();
}
}
private void CargaOC()
{
SAPbobsCOM.Documents vDoc =(SAPbobsCOM.Documents)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oPurchaseOrders);
vDoc.CardCode = "ICAMSPAIQQ-P";
vDoc.DocDate = System.DateTime.Today;
vDoc.Lines.ItemCode = "1005720";
vDoc.Lines.Quantity = 1;
vDoc.Lines.Price = 20000;
vDoc.Lines.WarehouseCode = "01";
vDoc.Lines.TaxCode = "IVA";
if (vDoc.Add() != 0)
{
MessageBox.Show(oCompany.GetLastErrorDescription());
}
else
{
MessageBox.Show("OC numero " + oCompany.GetNewObjectKey().ToString() + " creada.");
}
oCompany.Disconnect();
}
}
Saludos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Estimado, no se cual será el código completo que estés usando pero realmente cargar un documento en sap no es tan complejo, a menos que tengas validaciones por transaction y estén bloqueando tu código
Importar Orden de compra
Public oCompany As SAPbobsCOM.Company
Public Sub ConnSAP()
Dim lRetCode, ErrorCode As Long
Dim ErrorMessage As String
Set oCompany = New SAPbobsCOM.Company
oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008
oCompany.DbUserName = "sa"
oCompany.DbPassword = "SAP*****"
oCompany.Server = "sap9"
oCompany.CompanyDB = "SBO_DemoCL"
oCompany.UserName = "manager"
oCompany.Password = "********"
oCompany.UseTrusted = False
oCompany.Language = ln_Spanish_La
lRetCode = oCompany.Connect()
If lRetCode <> 0 Then
MsgBox (oCompany.GetLastErrorDescription())
Else
Imp_OC
End If
End Sub
Public Sub Imp_OC()
Dim Retval As Long
Dim vDoc As SAPbobsCOM.Documents
Set vDoc = oCompany.GetBusinessObject(oPurchaseOrders)
RowC = 2
RowD = 5
If ActiveSheet.Cells(RowC, 1) <> "" Then
vDoc.CardCode = ActiveSheet.Cells(RowC, 1)
vDoc.CardName = ActiveSheet.Cells(RowC, 2)
vDoc.DocDate = ActiveSheet.Cells(RowC, 3)
vDoc.DocDueDate = ActiveSheet.Cells(RowC, 4)
vDoc.Lines.ItemCode = ActiveSheet.Cells(RowD, 1)
vDoc.Lines.Quantity = ActiveSheet.Cells(RowD, 2)
vDoc.Lines.Price = ActiveSheet.Cells(RowD, 3)
vDoc.Lines.WarehouseCode = ActiveSheet.Cells(RowD, 4)
vDoc.Lines.TaxCode = ActiveSheet.Cells(RowD, 5)
RowD = RowD + 1
Do While ActiveSheet.Cells(RowD, 1) <> ""
vDoc.Lines.Add
vDoc.Lines.ItemCode = ActiveSheet.Cells(RowD, 1)
vDoc.Lines.Quantity = ActiveSheet.Cells(RowD, 2)
vDoc.Lines.Price = ActiveSheet.Cells(RowD, 3)
vDoc.Lines.WarehouseCode = ActiveSheet.Cells(RowD, 4)
vDoc.Lines.TaxCode = ActiveSheet.Cells(RowD, 5)
RowD = RowD + 1
Loop
Retval = vDoc.Add
If Retval <> 0 Then
MsgBox (oCompany.GetLastErrorDescription())
Else
MsgBox ("Orden de compra creada con exito")
End If
Else
MsgBox ("Nada que cargar")
End If
oCompany.Disconnect
Saludos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Buenas tardes
Estimado, hay propiedades que no pueden ser enviadas
El DocNum por ejemplo, no puedes especificarlo tu, a menos que la propiedad "HandWritten" la estes seteando a tYES.
Otro dato, estas colocando DocTotal = 0, eso quiere decir que el total de tu factura es 0 sin embargo tu articulo tiene un descuento, no puedes aplicar un descuento a un valor 0, hay ciertas reglas básicas que se aplican no puedes tratar de cargar cualquier cosa
Los mismos campos que llenas en la pantalla de SAP debes llenarlo en el SDK.
Básicamente son
Proveedor
Fecha
Item
Precio
Saludos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
He probado de varias maneras y aun asi me aparece el mismo error, intente como dijiste pero tampoco funciona, ¿alguna idea?
facturaPuc.CardCode = (string)"16026442-C0000"; /********PROVEEDOR***********/
facturaPuc.DocDate = Convert.ToDateTime("06/05/2015"); /*******FECHA**********/
facturaPuc.DocTotal = 100; /************PRECIO************/
/****************************ITEM********************************/
facturaPuc.Lines.ItemCode = "0001";
facturaPuc.Lines.ItemDescription = "Banana";
facturaPuc.Lines.PriceAfterVAT = 100;
facturaPuc.Lines.Quantity = 5;
facturaPuc.Lines.Currency = "Eur";
if (facturaPuc.Add() != 0)
{
int eCodigo;
string errCodigo;
oDictucSA.GetLastError(out eCodigo, out errCodigo);
Console.WriteLine("error factura puc " + eCodigo +"-" +errCodigo + "\n");
}
perdon si es una tontera pero realmnete no tengo a quien mas requrrir. Muchas gracias.
Saludos.
Pruebalo asi (tu articulo debe existir en la sociedad)
facturaPuc.CardCode = (string)"16026442-C0000"; /********PROVEEDOR***********/
facturaPuc.DocDate = Convert.ToDateTime("06/05/2015"); /*******FECHA**********/
/****************************ITEM********************************/
facturaPuc.Lines.ItemCode = "0001";
facturaPuc.Lines.ItemDescription = "Banana";
facturaPuc.Lines.Price = 100;
facturaPuc.Lines.Quantity = 5;
facturaPuc.Lines.Currency = "Eur";
if (facturaPuc.Add() != 0)
{
int eCodigo;
string errCodigo;
oDictucSA.GetLastError(out eCodigo, out errCodigo);
Console.WriteLine("error factura puc " + eCodigo +"-" +errCodigo + "\n");
}
Saludos
User | Count |
---|---|
85 | |
7 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 | |
3 | |
2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.