ABAP-Code dynamisch ausführen 
From Theobald Software
Die Klasse ABAPCode bietet die Möglichkeit, den Code von ABAP-Reports an SAP zu übergeben und dort on the fly auszuführen. Hieraus ergeben sich nahezu unbegrenzte Möglichkeiten.
Das folgende Beispielprogramm zeigt einen einfachen ABAP-Interpreter, der ein dynamisches SQL-Statement ausführt.
ABAPCode benötigt wie alle verwandten Client-Klassen ein gültiges R3Connection-Objekt. Mit Hilfe der Methode AddCodeLine wird eine neue Zeile ABAP-Code hinzugefügt. Ist der gewünschte Code vollständig übergeben, wir er ausgeführt (Execute). Die Ergebnismenge (also die Listausgabe) wird dann mit Hilfe von GetResultLine eingelesen und verwertet.
Sie finden das komplette Beipielprogramm unter dem Namen AbapPad im Installationsordner.
[C#]
private void button1_Click(object sender, System.EventArgs e) { ERPConnect.R3Connection con = new ERPConnect.R3Connection(); if(!con.AskUserAndOpen(true)) return; ERPConnect.Utils.ABAPCode code = new ERPConnect.Utils.ABAPCode(); code.Connection = con; foreach(string s in textBox1.Lines) code.AddCodeLine(s); if (code.Execute()) { for(int i=0; i < code.ResultLineCount; i++) textBox2.Text += code.GetResultLine(i) + "\r\n"; } else textBox2.Text = "ABAP Error: " + code.LastABAPSyntaxError; }
[VB]
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click Dim con As New ERPConnect.R3Connection If Not con.AskUserAndOpen(True) Then Exit Sub End If Dim code = New ERPConnect.Utils.ABAPCode code.Connection = con Dim s As String For Each s In textBox1.Lines code.AddCodeLine(s) Next Dim i As Integer If code.Execute() Then For i = 0 To code.ResultLineCount - 1 textBox2.Text += code.GetResultLine(i) + vbCrLf Next Else textBox2.Text = "ABAP Error: " + code.LastABAPSyntaxError End If End Sub
Die Abbildung zeigt den ABAP-Interpreter in Aktion.



