SOAP Webservice - Problem beim HinzufĂĽgen von SalesLines

Bild Microsoft Dynamics NAV 2018

SOAP Webservice - Problem beim HinzufĂĽgen von SalesLines

Beitragvon below » 2. März 2021 14:29

Hallo zusammen,

ich bin gerade dabei eine Webanwendung (PHP / SOAP) an NAV 2018 anzubinden. DafĂĽr wurde mir die Page (42) SalesOrder als Webservice zur VerfĂĽgung gestellt.
Das Auslesen der Verkaufsaufträge (Read/Read Multiple) stellt kein Problem dar. Auch das Anlegen eines Verkaufsauftrages (Create) funktioniert teilweise.

Folgender "Basiscode" per SOAP ĂĽbermittelt erzeugt eine neue SalesOrder und fĂĽllt auch die restlichen Header Felder richtig aus.
Code: Alles auswählen
'SalesOrder' => array(
                'Sell_to_Customer_No' => '102425'
            )


Folgende Anpassung wenn direkt eine Zeile mit eingetragen werden soll:
Code: Alles auswählen
'SalesOrder' => array(
                'Sell_to_Customer_No' => '102425',
                'SalesLines' => array(
                    'Sales_Order_Line' => array(
                        array(
                            'Type' => 'Item',
                            'No' => 12345,
                            'Unit_of_Measure_Code' => 'TSD',
                            'Unit_Price' => 1,
                            'Quantity' => 10,
                            'Location_Code' => 'LAGERORT'
                        )
                    )
                )
            )


Ăśbermittle ich direkt eine SalesLine beim Create erhalte ich folgende Exception:
Code: Alles auswählen
Fatal error: Uncaught SoapFault exception: [a:Microsoft.Dynamics.Nav.Types.Exceptions.NavCSideException] A transaction must be started before changes can be made to the database.


Das MerkwĂĽrdige ist: Die Exception bleibt beim folgenden Read der SalesOrder erhalten, verschwindet dann nach ein paar Minuten aber wie von allein. In NAV wird die SalesOrder inkl. SalesLine angelegt und kann auch direkt aufgerufen werden.

Generell bereitet das Ă„ndern / Anlegen der SalesLines Schwierigkeiten:

Ich habe normalerweise mit NAV nicht viel zu tun und versuche mich gerade durch die Dokumentationen und Foren zu hangeln. Vielleicht habe ich hier aber auch auf Grund der mangelnden NAV Erfahrung einen Denkfehler.

Zum HinzufĂĽgen der SalesLines nutze ich die UPDATE Funktion des Webservice SalesOrder und sende folgende Daten:

Code: Alles auswählen
'SalesOrder' => array(
                'Key' => KEY_DER_SALES_ORDER,
                'SalesLines' => array(
                    'Sales_Order_Line' => array(
                        array(
                            'Document_No' => 'AB123456',
                            'Document_Type' => 'Order',
                            'Line_No' => 110000,
                            'Type' => 'Item',
                            'No' => 99999,
                            'Unit_of_Measure_Code' => 'TSD',
                            'Unit_Price' => 1,
                            'Quantity' => 10,
                            'Location_Code' => 'LAGERPLATZ123'
                        )
                    )
                )
            )


Im Auftrag sind bereits mehrere SalesLines enthalten, die höchste Line_No ist die 100.000.

Ăśbergebe ich die Line_No 110.000 erhalte ich folgende Exception:
Code: Alles auswählen
Uncaught SoapFault exception: [a:Microsoft.Dynamics.Nav.Service.WebMetadata.ServiceBrokerException] Field Line No. is readonly!


Übergebe ich keine Line_No ändert sich die Exception in:
Code: Alles auswählen
Uncaught SoapFault exception: [a:Microsoft.Dynamics.Nav.Types.Exceptions.NavCSideDuplicateKeyException] The Sales Line already exists. Identification fields and values: Document Type='Order',Document No.='AB123456',Line No.='10000'


Es macht auch keinerlei Unterschied ob ich alle bisherigen SalesLines mit ĂĽbergebe, oder nur die Neue, die hinzugefĂĽgt werden soll. Ich bin wirklich fĂĽr jeden Tipp dankbar!
below
 
Beiträge: 2
Registriert: 2. März 2021 13:43

Re: SOAP Webservice - Problem beim HinzufĂĽgen von SalesLines

Beitragvon DanielF » 2. März 2021 15:08

Gehst du ĂĽber die Standard Page 46?
Dahingehend macht die Fehlermeldung, dass Line No read only ist sogar Sinn.

Die Daten ĂĽber Pages zu schreiben finde ich ohne dies jemals via php gemacht zu haben allerdings ein wenig abenteuerlich.

WĂĽrde jetzt entweder die Pages angepasst dublizieren und diese ansprechen oder aber die Tabellen direkt ansprechen.
Benutzeravatar
DanielF
Microsoft Partner
Microsoft Partner
 
Beiträge: 110
Registriert: 27. April 2015 16:03
Realer Name: Daniel Forster
Arbeitsort: Bodensee
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2015

Re: SOAP Webservice - Problem beim HinzufĂĽgen von SalesLines

Beitragvon below » 2. März 2021 16:36

Ob PHP oder nicht ist ja letztendlich egal, der Zugriff erfolgt ja ĂĽber die vom Webservice (SOAP / OData) bereitgestellten Funktionen.
Ich komme wie gesagt nicht aus dem Dynamics Bereich - aber warum ist die Nutzung der NAV-seitigen Webservices denn "abenteuerlich" - oder verstehe ich Dich hier falsch?
below
 
Beiträge: 2
Registriert: 2. März 2021 13:43

Re: SOAP Webservice - Problem beim HinzufĂĽgen von SalesLines

Beitragvon Raik Zobel » 2. März 2021 17:46

Benutzeravatar
Raik Zobel
 
Beiträge: 279
Registriert: 4. März 2013 13:43
Realer Name: Raik Zobel
Arbeitsort: Leipzig
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.00SP3, 2013R2, 2016


ZurĂĽck zu NAV 2018

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast