web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

No record found.

News and Announcements icon
Community site session details

Community site session details

Session Id :
Finance | Project Operations, Human Resources, ...
Suggested Answer

Update line item in salesOrder

(0) ShareShare
ReportReport
Posted on by 4
I want to update quantity line by using Software Development Kits ( SDk )  for Microsoft Dynamics GP 2018  
 
when update line that occured  an error :

 Error : Violation of PRIMARY KEY constraint 'PKAAG20000'. Cannot insert duplicate key in object 'dbo.AAG20000'. The duplicate key value is (357112).

why? and how fix error ??

used Code : 
 try
            {
                string connectionStringGP = @/Data Source=.;Initial Catalog=test ;persist security info=False;/;
                
                using (eConnectMethods eConnect = new eConnectMethods())
                {
                    
                    eConnectType eConnectTypeSalesTransaction = new eConnectType();
                    eConnectOut eConnectOut1 = new eConnectOut()
                    {
                        DOCTYPE = /Sales_Transaction/, // Specify the type of document you want to retrieve
                        OUTPUTTYPE = 2, // Specify output type: 2 for XML
                        INDEX1FROM =/CON/2300034/ , ///CON/2400006/  // Specify the start index
                        INDEX1TO =/CON/2300034/ ,// /CON/2400006/// Specify the end index
                        FORLIST = 1, // Specify 1 to retrieve a list
                    };
                    eConnectTypeSalesTransaction.RQeConnectOutType = new RQeConnectOutType[] { new RQeConnectOutType() { eConnectOut = eConnectOut1 } };
                    string xmlSopTransaction = SerializeObject(eConnectTypeSalesTransaction);
                    //Call the GetEntity method to retrieve data
                    string response = eConnect.GetEntity(connectionStringGP, xmlSopTransaction);
                    //Console.WriteLine($///r/Data retrieved First :/{response} //r/ ________________________________________________/);
                   
                    //  Deserialize the XML string into objects
                    Root root = DeserializeFromXml<Root>(response);
                    //  Update the object properties as needed
                 
                    #region Update Sales Transaction 
                    taSopHdrIvcInsert sopHdrIvc = new taSopHdrIvcInsert();
                    sopHdrIvc.SOPNUMBE = root.EConnect.SOTrans.SOPNUMBE;
                    sopHdrIvc.SOPTYPE = root.EConnect.SOTrans.SOPTYPE;
                    sopHdrIvc.DOCID = root.EConnect.SOTrans.DOCID;
                    sopHdrIvc.CUSTNMBR = root.EConnect.SOTrans.CUSTNMBR;
                    sopHdrIvc.DOCDATE = root.EConnect.SOTrans.DOCDATE;
                    sopHdrIvc.BACHNUMB = root.EConnect.SOTrans.BACHNUMB;
                    sopHdrIvc.UpdateExisting = 1;
                    taSopLineIvcInsert_ItemsTaSopLineIvcInsert sopLine = new taSopLineIvcInsert_ItemsTaSopLineIvcInsert();
                    sopLine.SOPTYPE = root.EConnect.SOTrans.Lines[0].SOPTYPE;
                    sopLine.CUSTNMBR = root.EConnect.SOTrans.CUSTNMBR;
                    sopLine.QUANTITY = 9; //9root.EConnect.SOTrans.Lines[0].QUANTITY;
                    sopLine.DOCDATE = root.EConnect.SOTrans.DOCDATE;
                    sopLine.ITEMNMBR = root.EConnect.SOTrans.Lines[0].ITEMNMBR;
                    sopLine.SOPNUMBE = root.EConnect.SOTrans.Lines[0].SOPNUMBE;
                    sopLine.LNITMSEQ = root.EConnect.SOTrans.Lines[0].LNITMSEQ;
                    sopLine.LOCNCODE = root.EConnect.SOTrans.Lines[0].LOCNCODE;
                    sopLine.UpdateExisting=1;
                   
                    taSopLineIvcInsert_ItemsTaSopLineIvcInsert[] sopLines = new taSopLineIvcInsert_ItemsTaSopLineIvcInsert[] { sopLine };
                    eConnectType updateSOPTransactionType = new eConnectType();
                    updateSOPTransactionType.SOPTransactionType = new SOPTransactionType[]
                    {
                        new SOPTransactionType()
                        {
                            taSopHdrIvcInsert = sopHdrIvc,
                            taSopLineIvcInsert_Items = sopLines,
                            
                            
                        }
                    };
                    var updatedXmlString = SerializeObject(updateSOPTransactionType);
                    #endregion
                    var updatedResponse = eConnect.UpdateTransactionEntity(connectionStringGP, updatedXmlString);
                    //var updatedResponse = eConnect.DeleteTransactionEntity(connectionStringGP, updatedXmlString);
                     string response2 = eConnect.GetEntity(connectionStringGP, xmlSopTransaction);
                    Console.WriteLine($///r/Data retrieved After :/{response2} //r/ _______________________________/);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(/Error: / + ex.Message);
            }
 

 
Categories:
  • Judy Profile Picture
    Microsoft Employee on at
    Hi, for the error message, you cannot enter a second PK that has the same value.
    You can debug the code to look at your values and how you insert them to the database.
  • Saleh Abdelrahem Profile Picture
    4 on at
    why SDK try to insert in table 'dbo.AAG20000' but I want to update line in an sales order .
    sopLine.UpdateExisting=1;
     
    this flag that known that , 1 if exist line update it , 2 if not exist line insert it 
    by using this function , 'UpdateTransactionEntity',  
     
       var updatedResponse = eConnect.UpdateTransactionEntity(connectionStringGP, updatedXmlString);

    also when try delete a line item , occured the same error  : 
     
    Error : Violation of PRIMARY KEY constraint 'PKAAG20000'. Cannot insert duplicate key in object 'dbo.AAG20000'. The duplicate key value is (357112).

     
    I don't understand , how fix this error ?
  • Suggested answer
    Lisa at AonC.com Profile Picture
    1,164 Super User 2026 Season 1 on at
  • Saleh Abdelrahem Profile Picture
    4 on at
    I know this to handle ,table by sql query update .

    but I want to handle this error by using SDK .
     
    how do this?
     
    help

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Winners!

Congratulations to our community stars!

Women in Power Builds Momentum

Expanding mentorship, skilling, and AI innovation

Congratulations to the July Top 10 Community Leaders

These are the community rock stars!

Leaderboard > Finance | Project Operations, Human Resources, AX, GP, SL

#1
Martin Dráb Profile Picture

Martin Dráb 430 Most Valuable Professional

#2
CU10121822-0 Profile Picture

CU10121822-0 368

#3
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 364 Super User 2026 Season 2

Last 30 days Overall leaderboard

Product updates

Dynamics 365 release plans