Fertigungsauftrag Rückmelden 
From Theobald Software
Das folgende Beispiel zeigt die Rückmeldung eines Fertigungsauftrags. Dies machen wir mit Hilfe des Bausteins "BAPI_PRODORDCONF_CREATE_HDR". Mit diesem BAPI können wir einen Fertigungsauftrag entweder teilweise oder komplett zurückmelden. Dies kann mit einem Flag oder automatisch erfolgen. Wenn das Flag "FIN_CONF" gesetzt ist, wird der gesamte Fertigungsauftrag zurückgemeldet. Wird es nicht gesetzt, ist die Menge im Feld "YIELD" ausschlaggebend. Liegt die Gutmenge unter der Fertigungsauftragsmenge so wird der Auftrag teilrückgemeldet. Relavante Daten für die komplette Rückmeldung eines Fertigungsauftrags sind somit die Auftragsnummer ("ORDERID"),das Buchungsdatum ("POST_GATE") und die Menge ("YIELD").
Hier ist der Code für eine Rückmeldung mit Übergabe der Menge, welche in unserem Beispiel unter der Auftragsmenge liegt.
Damit die Funktion funktioniert, muss das Verbindungsobjekt Con als Instanz-Variable der Klasse vorhanden sein.
public static string ConfirmProductionOrder(string AUFNR, string POSTG_DATE, string EXEC_FIN_DATE, string EXEC_FIN_TIME, int YIELD) { // Create a new function object RFCFunction func = Con.CreateFunction("BAPI_PRODORDCONF_CREATE_HDR"); // Add a new row to the table ATHDRLEVELS which contains the confirmations RFCStructure itemrow = func.Tables["ATHDRLEVELS"].Rows.Add(); itemrow["ORDERID"] = AUFNR; //Auftragsnummer itemrow["POSTG_DATE"] = POSTG_DATE; //Buchungsdatum itemrow["EXEC_FIN_DATE"] = EXEC_FIN_DATE; //Rückgemeldetes Endedatum der Durchführung itemrow["EXEC_FIN_TIME"] = EXEC_FIN_TIME; //Rückgemeldete Uhrzeit zum Zeitpunkt Ende Durchführen itemrow["YIELD"] = YIELD; // Aktuell rückzumeldende Gutmenge func.Execute(); //Bapi Commit wird ausgeführt. RFCFunction funcCommit = Con.CreateFunction("BAPI_TRANSACTION_COMMIT"); funcCommit.Exports["WAIT"].ParamValue = "X"; funcCommit.Execute(); RFCTable funcRet = func.Tables["DETAIL_RETURN"]; string strmessage = funcRet.Rows[0]["MESSAGE"].ToString(); return strmessage; }
Die Menge lag unter der Auftragsmenge, somit ist der Auftrag teilrückgemeldet.
Nun wollen wir den Auftrag gesamt zurückmelden. Das heißt, alle Teile, welche noch vorhanden sind, werden nun zurückgemeldet. Dies machen wir in dem wir den Flag "FIN_CONFIRM" setzen.
public static string ConfirmProductionOrder(string AUFNR, string POSTG_DATE, string EXEC_FIN_DATE, string EXEC_FIN_TIME, int YIELD) { // Create a new function object RFCFunction func = Con.CreateFunction("BAPI_PRODORDCONF_CREATE_HDR"); // Add a new row to the table ATHDRLEVELS which contains the confirmations RFCStructure itemrow = func.Tables["Athdrlevels"].Rows.Add(); itemrow["ORDERID"] = AUFNR; //Auftragsnummer itemrow["POSTG_DATE"] = POSTG_DATE; //Buchungsdatum itemrow["EXEC_FIN_DATE"] = EXEC_FIN_DATE; //Rückgemeldetes Endedatum der Durchführung itemrow["EXEC_FIN_TIME"] = EXEC_FIN_TIME; //Rückgemeldete Uhrzeit zum Zeitpunkt Ende Durchführen itemrow["FIN_CONF"] = "X"; //Flag für Automatische Gesamtrückmeldung func.Execute(); //Bapi Commit wird ausgeführt. RFCFunction funcCommit = Con.CreateFunction("BAPI_TRANSACTION_COMMIT"); funcCommit.Exports["WAIT"].ParamValue = "X"; funcCommit.Execute(); RFCTable funcRet = func.Tables["DETAIL_RETURN"]; string strmessage = funcRet.Rows[0]["MESSAGE"].ToString(); return strmessage; }
Wenn wir das Programm starten, wird der Auftrag komplett zurückgemeldet.



