cancel
Showing results for 
Search instead for 
Did you mean: 

5009-item number is missing- al crear factura

jorgedonoso2
Explorer
0 Kudos

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.

Accepted Solutions (1)

Accepted Solutions (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

jorgedonoso2
Explorer
0 Kudos

Muchas gracias por la ayuda . existía una validación en el transaction notification.

Saludos

Answers (2)

Answers (2)

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

jorgedonoso2
Explorer
0 Kudos

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.

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

jorgedonoso2
Explorer
0 Kudos

El mismo error, no se me ocurre que podrá ser. Alguien que sepa favor compartir conocimiento.

¿Puede ser por que SAP tiene una session abierta?

Gracias Felipe por tu tiempo.

Saludos.