Einen einfachen Baustein aufrufen: BAPI EMPLOYEE GETDATA English

From Theobald Software

Jump to: navigation, search

English Version: Call a simple function module: BAPI EMPLOYEE GETDATA


Der Baustein BAPI_EMPLOYEE_GETDATA ist ein BAPI für RFC-Anwendungen, der in jedem SAP-System vorhanden ist. Er empfängt als Eingabeparameter in unserem Beispiel einen Nachnamen oder den Anfangsbuchstaben des Nachnamens und gibt eine Liste an Personen in Form einer Tabelle zurück, die zu dem Suchschlüssel passen.

Der folgende Code zeigt zunächst die Anmeldung am SAP-System. Ein RFCFunction-Objekt wird dann mit Hilfe der Funktion CreateFunction() gebildet. Der Import-Parameter LASTNAME_M wird mit der Benutzereingabe gefüllt. Execute() führt den Baustein aus. Nach dem Aufruf muss dann nur noch der zurückgegebene Tabellen-Parameter PERSONAL_DATA ausgewertet werden. Das Element PERNO der Tabelle enthält die Personalnummer, des weiteren werden noch der Vorname und der Nachname ausgegeben.

Screenshot des Beispielprogramms
Enlarge
Screenshot des Beispielprogramms


[C#]

static void Main(string[] args)
        {
            R3Connection con = new R3Connection("Host", 05, "User", "Password", "DE", "800");
            con.Open(false);
 
            // Create a function object
            RFCFunction func = con.CreateFunction("BAPI_EMPLOYEE_GETDATA");
            Console.WriteLine("Please enter Lastname of Employee...");
            Console.WriteLine("(you can also use Wildcard Characters * ...)"); 
 
            // fill the export parameter
            string  EmployeeLM = Console.ReadLine();
            func.Exports["LASTNAME_M"].ParamValue = EmployeeLM;
            func.Exports["DATE"].ParamValue = ERPConnect.ConversionUtils.NetDate2SAPDate(System.DateTime.Now); 
            try
            {
                func.Execute();
            }
            catch (ERPException e)
            {
                Console.WriteLine(e.Message);
                Console.ReadLine();
                return;
            }
 
            // Output the result of the function module
            RFCTable EmployeeDataTable = func.Tables["PERSONAL_DATA"];
            if (EmployeeDataTable.RowCount > 0)
            {
                for (int i = 0; i < EmployeeDataTable.RowCount; i++)
                {
                    Console.WriteLine(
                    EmployeeDataTable.Rows[i]["PERNO"].ToString() + " " +
                    EmployeeDataTable.Rows[i]["LAST_NAME"].ToString() + " " +
                    EmployeeDataTable.Rows[i]["FIRSTNAME"].ToString());
                }
            }
            else
            {
                Console.WriteLine("No Employee found");
            }
            Console.ReadLine();
        }
    }

[VB]

Sub Main()
 
     Dim con As New R3Connection("host", 5, "User", "Password", "DE", "800")
 
        con.Open(False)
        Dim sii As String = con.Codepage()
        ' Create a function object
        Dim func = con.CreateFunction("BAPI_EMPLOYEE_GETDATA")
        Console.WriteLine("Please enter Lastname of Employee...")
        Console.WriteLine("(you can also use Wildcard Characters * ...)")
 
        ' fill the export parameter
        Dim EmployeeLM As String = Console.ReadLine()
        func.Exports("LASTNAME_M").ParamValue = EmployeeLM
        func.Exports("DATE").ParamValue = ERPConnect.ConversionUtils.NetDate2SAPDate(System.DateTime.Now)
 
        Try
            func.Execute()
        Catch e As ERPException
            Console.WriteLine(e.Message)
            Console.ReadLine()
            Return
        End Try
 
        Dim EmployeeDataTable As RFCTable = func.Tables("PERSONAL_DATA")
        If EmployeeDataTable.RowCount > 0 Then
            For i As Integer = 0 To EmployeeDataTable.RowCount - 1
                Console.WriteLine(EmployeeDataTable.Rows(i)("PERNO").ToString() + _
                                  " " + EmployeeDataTable.Rows(i)("LAST_NAME").ToString() + _
                                  " " + EmployeeDataTable.Rows(i)("FIRSTNAME").ToString())
            Next i
        Else
            Console.WriteLine("No Employee found")
        End If
        Console.ReadLine()
    End Sub
DeutschEnglish
Personal tools
Navigation
XtractQL Provider
Xtract RS