Der folgende Abschnitt zeigt, wie Sie ein Konsolenprogramm schreiben, das ein IDoc vom Typ STATUS sendet.
Der STATUS-Nachrichtentyp wird verwendet, um den Status eines anderen ausgehenden IDocs anzupassen, z.B. wenn ein Subsystem IDocs empfängt und den Empfang durch eine Status-Anpassung quittiert. Das STATUS-IDoc enthält nur einen Datensatz und ist somit sehr einfach aufgebaut.
Hinweis: Stellen Sie sicher, dass Ihr SAP-System konfiguriert ist, IDocs zu empfangen, siehe Einrichten des Empfangs von IDocs.
Ein STATUS IDoc senden #
- Bauen Sie mit der R3Connection-Klasse eine Verbindung zum R/3 System auf.
- Fragen Sie die IDoc-Nummer des zu manipulierenden IDocs ab und lesen Sie die Eingabe aus.
- Erzeugen Sie mit der Methode
CreateIdoc
ein IDoc Objekt. “SYSTAT01” ist der entsprechende IDoc-Typ für den Nachrichtentyp STATUS. - Geben Sie Angaben zum Empfänger und Absender für den Kopfsatz des IDoc-Objekts ein.
- Fügen Sie die folgenden Daten Segment E1STATS hinzu:
- Zielstatus (STATUS)
- Datum und Uhrzeit (LOGDAT, LOGTIM)
- die zu manipulierende IDoc-Nummer (DOCNUM).
- Senden Sie das IDoc mit der Methode
Send
. - Führen Sie das Programm aus und prüfen Sie in SAP den Status des manipulierten IDocs.
using System;
using ERPConnect;
using ERPConnect.Utils;
// Set your ERPConnect license
LIC.SetLic("xxxx");
using var connection = new R3Connection(
host: "server.acme.org",
systemNumber: 00,
userName: "user",
password: "passwd",
language: "EN",
client: "001")
{
Protocol = ClientProtocol.NWRFC,
};
connection.Open(false);
Console.WriteLine("Which IDoc number would you like to manipulate?");
string IdocNo = Console.ReadLine();
Idoc i = connection.CreateIdoc("SYSTAT01","");
// Fill Message Type
i.MESTYP = "STATUS";
// Fill Information about IDoc Reciever
i.RCVPRN = "PT4_800"; // Partner number
i.RCVPRT = "LS"; // Partner type
// Fill information about IDoc sender
i.SNDPOR = "ERPCONNECT"; // Partner port
i.SNDPRN = "ERPCONNECT"; // Partner number
i.SNDPRT = "LS"; // Partner type
// Fill the right fields in the segments
i.Segments["E1STATS",0].Fields["LOGDAT"].FieldValue = "20210901";
i.Segments["E1STATS",0].Fields["LOGTIM"].FieldValue = "152301";
i.Segments["E1STATS",0].Fields["STATUS"].FieldValue = "12";
i.Segments["E1STATS",0].Fields["DOCNUM"].FieldValue = IdocNo;
i.Send();
Console.WriteLine("IDoc sent");
Console.ReadLine();
Ausgabe:
Der Status ist von 3 (an Subsystem übergeben) auf 12 (Versand OK) erhöht worden.