Warenbewegung buchen Deutsch

From Theobald Software

Jump to: navigation, search

English Version: Post Goods Movement


In diesem Beispiel wird mit BAPI_GOODSMVT_CREATE ein Materialbeleg zu einer Warenbewegung erstellt. Der Parameter "GM_CODE" beinhaltet die Umschlüsselung zu den Transaktionscodes. Der Wert "01" wird durch SAP mit der Transaktion MB01 ersetzt. Mit dieser Transaktion wird ein Wareneingang zu einer Bestellung gebucht. Weitere Möglichkeiten wären "02", für eine Warenbewegung zu einem Auftrag (Transaktion MB31) und "05" für sonstige Wareneingänge erfassen. (Transaktion MB1C).

Die wichtigsten Kopfdaten sind das Buchungsdatum, der Benutzername und das Datum des Dokuments. In den Positionsdaten werden die Daten des Wareneingangs im Bezug zur Bestellung übergeben. Die "101" im MOVE_TYPE gibt die Bewegungsart "Wareneingang zu einer Bestellung in das Lager" an. Der dazugehörige Lagerort, in unserem Beispiel das Materiallager, wird im Parameter "STGE_LOC" übergeben. Da wir eine Warenbewegung zu einer Bestellung buchen, übergeben wir in den Parametern PO_NUMBER und PO_ITEM die Bestellnummer und die Position. In dem Parameter "MVT_IND" wird das Bewegungskennzeichen übergeben. Dieses Kennzeichen gibt an welche Art von Beleg der Bewegung zugrunde liegt. Mögliche Belege wären Bestellung oder Lieferschein.

Nach erfolgreicher Buchung des Wareneingangs erhalten wir die Warenbelegnummer und das Belegjahr als Wert zurück.

Damit die Funktion funktioniert, muss das Verbindungsobjekt Con als Instanz-Variable der Klasse vorhanden sein.

public bool WEBuchen101(string PO_Number, string PO_ITEM, string Plant, decimal Quantity)
  {
     string rMessage;
     // Fill Export Structures for the FunctionModule
     RFCFunction func = Con.CreateFunction("BAPI_GOODSMVT_CREATE");
     func.Exports["GOODSMVT_HEADER"].ToStructure()["PSTNG_DATE"] = "20070921"; //Posting Date in the Document
     func.Exports["GOODSMVT_HEADER"].ToStructure()["PR_UNAME"] = "HUGO";       //UserName
     func.Exports["GOODSMVT_HEADER"].ToStructure()["HEADER_TXT"] = "XXX";      //HeaderText
     func.Exports["GOODSMVT_HEADER"].ToStructure()["DOC_DATE"] = "20070921";   //Document Date in Document
 
     func.Exports["GOODSMVT_CODE"].ToStructure()["GM_CODE"] = "01";
 
     // Fill Table Items 
     RFCStructure itemrow = func.Tables["GOODSMVT_ITEM"].Rows.Add();
     itemrow["PLANT"] = Plant;                //Plant
     itemrow["PO_NUMBER"] = PO_Number;        //Purchase Order Number
     itemrow["PO_ITEM"] = PO_ITEM;            //Item Number of Purchasing Document  
     itemrow["ENTRY_QNT"] = Quantity;         //Quantity in Unit of Entry
     itemrow["MOVE_TYPE"] = "101";            //Movement Type
     itemrow["MVT_IND"] = "B";                //Movement Indicator
     itemrow["STGE_LOC"] = "0001";            //Storage Location
 
     // Execute Function Module
     func.Execute();
 
     RFCFunction funcCommit = Con.CreateFunction("BAPI_TRANSACTION_COMMIT");
     funcCommit.Exports["WAIT"].ParamValue = "X";
 
     string MaterialDocument = func.Imports["MATERIALDOCUMENT"].ParamValue.ToString();
     string MatDocumentYear = func.Imports["MATDOCUMENTYEAR"].ParamValue.ToString();
 
     // Check Return-Table
     if (func.Tables["RETURN"].RowCount > 0)
      {
        rMessage = func.Tables["RETURN"].Rows[0, "MESSAGE"].ToString();
        funcCommit.Execute();
        if (func.Tables["RETURN"].Rows[0, "TYPE"].ToString().Equals("E"))
          return false;
        else
          return true;
      }
     else
      {
        funcCommit.Execute();
        rMessage = "";
        return true;
      }
 }
DeutschEnglish
Personal tools
XtractQL Provider
Xtract RS