RFC-Server mit Tabellen Deutsch

From Theobald Software

Jump to: navigation, search

English Version: RFC Server with tables


Da das Eingangsbeispiel (RFC-Server) nur die Übergabe von skalaren (einzelnen) Parametern zeigt, soll folgendes Beispiel demonstrieren, wie Tabellen zwischen SAP und .NET ausgetauscht werden können.

Das Beispiel mit dem Z_ADD-Baustein wird mit Z_ADD_2 so erweitert, dass eine Tabelle (mit Namen NUMBERS) an das .NET-Programm übergeben wird. Die Tabelle enthält die Spalte NUMB. Diese Spalte soll Nummern enthalten, die addiert werden.

Der folgende Code zeigt die Intialisierung des RFCServer-Objekts. Achten Sie insbesondere auf die Defintion der Tabelle NUMBERS, die zunächst der TABLES-Collection hinzugefügt wird. Zu der leeren Tabellen-Hülle wird dann eine Spaltendefinition ebenfalls mit Add(...) ergänzt.

static RFCServer s = new RFCServer();
 
static void Main(string[] args)
{
    s.GatewayHost = "hamlet";
    s.GatewayService = "sapgw11";
    s.ProgramID = "ERPTEST";
 
    s.IncomingCall += new RFCServer.OnIncomingCall(s_IncomingCall);
 
    RFCServerFunction f = s.RegisteredFunctions.Add("Z_ADD_2");
    f.Exports.Add("RES", RFCTYPE.INT);
 
    RFCTable numbertable = f.Tables.Add("NUMBERS");
    numbertable.Columns.Add("NUMB", 10, 0, RFCTYPE.NUM); 
 
    s.Start();
 
    Console.WriteLine("Press Enter to quit");
    Console.ReadLine();
}

Die Behandlung der Tabelle erfolgt wie gewohnt über die Objekthierarchie des RFCServerFunction-Objektes. Die Werte der einzelnen Zeilen werden addiert und zurückgegeben:

static void s_IncomingCall(RFCServer Sender, RFCServerFunction CalledFunction)
{
    Console.WriteLine("Incoming call!!");
 
    Int32 Res = 0;
 
    foreach (RFCStructure row in CalledFunction.Tables["NUMBERS"].Rows)
        Res += Convert.ToInt32(row["NUMB"]);
 
    CalledFunction.Exports["RES"].ParamValue = Res;
}

Hier noch ein Beispiel-ABAP-Code, der den Baustein in einer fremden Destination aufruft:

REPORT  zaddtest2                               .


DATA res TYPE i.
DATA numbs LIKE zaddstruc OCCURS 0 WITH HEADER LINE.

numbs-numb = '1'.
APPEND numbs.
numbs-numb = '2'.
APPEND numbs.
numbs-numb = '3'.
APPEND numbs.

CALL FUNCTION 'Z_ADD_2' DESTINATION 'ERPTEST'
  IMPORTING
    res     = res
  TABLES
    numbers = numbs.

WRITE: / 'Result: ', res.

siehe auch

RFC-Server
RFC-Server mit Struktur

DeutschEnglish
Personal tools
XtractQL Provider
Xtract RS