ABAP-Code dynamisch ausführen Deutsch

From Theobald Software

Jump to: navigation, search

English Version: ABAPCode class


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.

Image:ABAPPad.jpg

DeutschEnglish
Personal tools
Xtract PPS