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 #

  1. Bauen Sie mit der R3Connection-Klasse eine Verbindung zum R/3 System auf.
  2. Fragen Sie die IDoc-Nummer des zu manipulierenden IDocs ab und lesen Sie die Eingabe aus.
  3. Erzeugen Sie mit der Methode CreateIdoc ein IDoc Objekt. “SYSTAT01” ist der entsprechende IDoc-Typ für den Nachrichtentyp STATUS.
  4. Geben Sie Angaben zum Empfänger und Absender für den Kopfsatz des IDoc-Objekts ein.
  5. Fügen Sie die folgenden Daten Segment E1STATS hinzu:
    • Zielstatus (STATUS)
    • Datum und Uhrzeit (LOGDAT, LOGTIM)
    • die zu manipulierende IDoc-Nummer (DOCNUM).
  6. Senden Sie das IDoc mit der Methode Send.
  7. 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.
SAP-Send-IDoc-001