Lagerbestand mit Hilfe eines BAPIs ermitteln Deutsch

From Theobald Software

Jump to: navigation, search

English Version: Retrieving Stock Quantity via BAPI


Ein so genanntes BAPI ist per Definition die Methode eines Business Objekts. Es gibt hunderte von Business Objekten in einem SAP-System, eines davon ist Material. Material repräsentiert einen einzelnen Artikel, auf den man verschiendene Methoden anwenden kann. Eine dieser Methoden ist Availability, sie ruft die Verfügbarkeit des Artikels ab, sprich den Bestand im Lager. Sie können Business Objekte und deren Methoden entweder im Business Object Repository (Transaktion BAPI) recherchieren, ansehen und ausprobieren, oder alternativ auch unter ifr.sap.com. Das folgende Beispiel wird nun das BAPI Material.Availability in einer Windows Forms Anwendung ansteuern. Wichtigste Basis ist das Steuerelement ERPConnect.R3Connection. Ziehen Sie es aus der Toolbox auf die Form. Die nachfolgende Abbildung zeigt die Form der Beispielanwendung. Die Verbindungseigenschaften (rechts im Bild) werden schon zu Design-Zeit gesetzt, dann brauchen wir uns später im Code nicht darum zu kümmern.

Enlarge

Umsetzung im Code

Im Aufruf des BAPIs sind das Werk (PLANT), die Materialnummer (MATERIAL) und die gewünschte Einheit (UNIT) zwingend zu übergeben. Der nachfolgende Code zeigt, wie aus dem R3Connection-Objekt per CreateBapi ein BAPI-Objekt erzeugt wird. Analog zu ganz normalen Funktionsbausteinen werden die Export-Parameter anhand der Benutzereingaben gefüllt und das BAPI dann ausgeführt. Die Rückgabe besteht aus einem einem Wert (AV_ATY_PLT) und einer Return-Struktur, wie bei BAPIs üblich. Die Return-Struktur enthält möglicherweise Fehlermeldungen oder andere Hinweise, aus diesem Grund wird das Element MESSAGE ebenfalls in eine Textbox geschrieben ...

[C#]

private void button1_Click(object sender, System.EventArgs e)
        {
            try 
            {
                r3Connection1.Open(false);
 
                // Create a Bapi object, fill parameters and execute
                BusinessObjectMethod f =
                    r3Connection1.CreateBapi("Material","Availability");
                f.Exports["PLANT"].ParamValue = textBox1.Text;
                f.Exports["MATERIAL"].ParamValue = textBox2.Text;
                f.Exports["UNIT"].ParamValue = textBox3.Text;
                f.Execute();
 
                // Read the import structure RETURN to provide possible Messages
                RFCStructure BapiRet = f.Imports["RETURN"].ToStructure();
                textBox5.Text = BapiRet["MESSAGE"].ToString();
 
                // Fill textbox with stock quantity
                textBox4.Text = f.Imports["AV_QTY_PLT"].ToString();
            }
            catch (ERPException e1)
            { MessageBox.Show(e1.Message); }
        }
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        Try
            r3Connection1.Open(False)
 
            ' Create a Bapi object, fill parameters and execute
            Dim f As BusinessObjectMethod = _
                     r3Connection1.CreateBapi("Material", "Availability")
            f.Exports("PLANT").ParamValue = textBox1.Text
            f.Exports("MATERIAL").ParamValue = textBox2.Text
            f.Exports("UNIT").ParamValue = textBox3.Text
            f.Execute()
 
            ' Read the import structure RETURN to provide possible Messages
            Dim BapiRet As RFCStructure = f.Imports("RETURN").ToStructure()
            textBox5.Text = BapiRet("MESSAGE").ToString()
 
            ' Fill textbox with stock quantity
            textBox4.Text = f.Imports("AV_QTY_PLT").ToString()
        Catch e1 As ERPException
            MessageBox.Show(e1.Message)
        End Try
    End Sub

Die beiden nachfolgenden Abbildungen zeigen das Programm in Aktion. Beim ersten Versuch wird eine ungültige Materialnummer eingegeben. Die RETURN-Message zeigt die Meldung. Beim zweiten Bild wird ein korrekter Lagerbestand ermittelt und ausgegeben.

DeutschEnglish
Personal tools
Xtract PPS