[GELÖST] Aufruf der Create Funktion über Page

21. Februar 2012 10:14

Hallo zusammen,

ich haben eine Page (s.Bild) erstellt und über einen NAV-WebService freigegeben.

Ich möchte jetzt über einen NAV-Client den Webservice aufrufen und einen neuen Datensatz anlegen.

Mit der u.s. XML-Datei rufe ich die Funktion "Create" auf (steht Standardmäßig über die Page zu Verfügung)

Irgendwie wird keine Datensatz angelegt und ich erhalte auch keine Fehlermeldung :?:

was kann hier der Grund sein, dass hier kein Datensatz angelegt wird?

PS: Die Page ist vom Type "Card"

bild2.png


bild1.png


Danke!
Gruß Kamuran
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von KAMKAMS am 21. Februar 2012 14:37, insgesamt 1-mal geändert.

Re: Aufruf der Create Funktion über Page

21. Februar 2012 11:08

Hallo,

hast du in deiner Webrefernz auch den Mandanten mitgegeben?

Ich persönlich arbeite mit Listen (mit einer Karte habe ich das noch nie versucht, aber sollte auch gehen:-)).

Gruß Aydin

Re: Aufruf der Create Funktion über Page

21. Februar 2012 11:57

Merhaba Aydin :-)

als erstes vielen dank für die schnelle Unterstützung.

Ja, der Mandantname wird übergeben. (s.u. Code)

Ich habe jetzt die Page auf "Liste" umgestellt. Es wird aber immer noch nichts angelegt und erhalte auch keine Fehlermelung :oops:

Danke!

Code:
// Create XML Document
CREATE(xmldoc,TRUE,TRUE);
parameters :=
  '<Soap:Envelope xmlns:Soap="http://schemas.xmlsoap.org/soap/envelope/">' +
    '<Soap:Body>' +
        '<Create xmlns="urn:microsoft-dynamics-schemas/page/testpage">' +
          '<Nr>2</Nr>'+
        '</Create>' +
    '</Soap:Body>' +
  '</Soap:Envelope>';
xmldoc.loadXML(parameters);

// Create XMLHTTP and SEND
URL := 'http://WServer:7047/DynamicsNAV/WS/' + 'test' + '/Page/testpage';
CREATE(xmlhttp, TRUE, TRUE);
xmlhttp.open('POST',URL,0);
xmlhttp.setRequestHeader('Content-type','text/xml; charset=utf-8');
xmlhttp.setRequestHeader('SOAPAction','Create');
xmlhttp.send(xmldoc);

Re: Aufruf der Create Funktion über Page

21. Februar 2012 12:29

Was heißt denn, du erhältst keine Fehlermeldung? Der Request kann offensichtlich korrekt abgesetzt werden, aber was steht denn in der Antwort des WebService?

Ich würde nach dem
Code:
XMLHttp.send(XMLDoc);

zu Debug-Zwecken mal folgenden Code hinzufügen:
Code:
MESSAGE('%1',XMLHttp.status); //Sollte 200 sein, wenn alles in Ordnung ist
XMLDoc := XMLHttp.responseXML;
XMLDoc.save('C:\temp\WS_Resp.xml');

Re: Aufruf der Create Funktion über Page

21. Februar 2012 12:43

Hallo Tim,

die Prüfung mit dem Rückgabewert habe ich in meinem Originalen Code. Ich habe es nur oben im "Code" nicht mit reingenommen.

Ich erhalte als Status = 200

Hier noch die Rückgabe XML:
Code:
<?xml version="1.0"?>
<Soap:Envelope xmlns:Soap="http://schemas.xmlsoap.org/soap/envelope/">
  <Soap:Body>
    <Create_Result xmlns="urn:microsoft-dynamics-schemas/page/testpage"/>
  </Soap:Body>
</Soap:Envelope>

Gruß
Kamuran

Re: Aufruf der Create Funktion über Page

21. Februar 2012 14:19

skamuran hat geschrieben:
Code:
parameters :=
  '<Soap:Envelope xmlns:Soap="http://schemas.xmlsoap.org/soap/envelope/">' +
    '<Soap:Body>' +
      '<Create xmlns="urn:microsoft-dynamics-schemas/page/testpage">' +
        '<Nr>2</Nr>'+
      '</Create>' +
    '</Soap:Body>' +
  '</Soap:Envelope>';

Ich denke hier fehlt die "Klammerung" des Datensatzes. Müsste in deinem Fall "testpage" sein. Versuch mal parameters wie folgt zu befüllen.
Code:
parameters :=
  '<Soap:Envelope xmlns:Soap="http://schemas.xmlsoap.org/soap/envelope/">' +
    '<Soap:Body>' +
      '<Create xmlns="urn:microsoft-dynamics-schemas/page/testpage">' +
        '<testpage>' +
          '<Nr>2</Nr>'+
        '</testpage>' +
      '</Create>' +
    '</Soap:Body>' +
  '</Soap:Envelope>';

Re: Aufruf der Create Funktion über Page

21. Februar 2012 14:35

Hallo Tim!!

ja, Du hast Recht. Ursache war die fehlende "Klammerung". Jetzt geht es.

Du hast mir sehr viel geholfen.
Vielen Vielen Dank

Liebe Grüße
Kamruan