Beispiel Programm zum einfügen einer Zeile mit BAPI mit JCO3
Ich versuche, "einfügen" (oder) "hinzufügen eine Zeile" Bestellanforderung Verwendung von standard-BAPIS (PurchaseRequisition.CreateFromData).
Ich bin mit JCo3. Das Beispiel in JCo3 bedeutet, dass wir, sollte die Verwendung von Tabellen.appendRow() ODER Tabelle.insertRow () - Methoden. Ich versuche mit Tisch.appendRow() & Tisch.appendRows(1). Wenn ich versuche, eine Zeile einfügen, i dont get any error und die Zeile wird nicht eingefügt.
Unten ist das Programm, das ich versuche, um Sie auszuführen.
/** Im folgenden sind die inputs, die für die Ausführung des Programms /
/ Schritt 1 **/
String BAPI_NAME = "BAPI_REQUISITION_CREATE";
/** Step 2 **/
String query_input_column1 = "DOCUMENTY_TYPE";
String query_input_column1_value = "NB";
String query_input_column2 = "PREQ_NAME";
String query_input_column2_value = "Name";
String query_input_column3 = "ACCTASSCAT";
String query_input_column3_value = "U";
String query_input_column4 = "DELIV_DATE";
String query_input_column4_value = "20131101";
String query_input_column5 = "MATERIAL";
String query_input_column5_value = "DELL-RQ2013";
String query_input_column6 = "QUANITY";
int query_input_column6_value = 10100;
/** Step 3 **/
String targetTableUnderBAPI = "REQUISITION_ITEMS";
/** Step 4 **/
/** For the confirmation read the value from export parameter after insertion execution **/
String result_column1 = "NUMBER";
JCoDestination destination = null;
try {
destination = JCoDestinationManager.getDestination(DestinationManager.DESTINATION_NAME1);
JCoRepository repository = destination.getRepository();
JCoContext.begin(destination);
JCoFunction function = repository.getFunction(BAPI_NAME);
if(function == null)
throw new RuntimeException(BAPI_NAME + " not found in SAP.");
System.out.println("BAPI Name from function object: " + function.getName());
//function.getImportParameterList().setValue(query_input_column1, query_input_column1_value);
JCoTable table = function.getTableParameterList().getTable(targetTableUnderBAPI); //it is taken from the response value of metadata
//System.out.println("No of Columns: "+ table.getNumColumns());
System.out.println("Trying to execute append row");
table.appendRow();
table.setValue(query_input_column1,query_input_column1_value);
table.setValue(query_input_column2,query_input_column2_value);
table.setValue(query_input_column3,query_input_column3_value);
//table.setValue(query_input_column4,new java.util.Date(query_input_column4_value));
//übersprungen Anderen Spalten den zugehörigen code
try{
function.execute(destination);
}
catch(AbapException e){
System.out.println(e.toString());
return;
}
System.out.println("Let us check the result from export parameter");
String exportParamStructure = (String)function.getExportParameterList().getValue(result_column1); //getStructure(result_column1); //getValue(result_column1);
System.out.println("Resulting PR#: "+exportParamStructure);
} catch (JCoException e) {
e.printStackTrace();
}
finally
{
try {
JCoContext.end(destination);
} catch (JCoException e) {
e.printStackTrace();
}
}
Habe ich nicht verstanden, wie die Antwort Lesen, und ich versuche, um es zu Holen aus exportParameters!!
- Kann jemand teilen ein Stück code einfügen und
- erste Bestätigungs-Antwort (bekommen wir die PREQ_NO Antwort?)
- Ich bin das hinzufügen von Datum-Feld-Wert als "20131101", aber nicht sicher, ob das format und die Vorgehensweise ist richtig?
- wenn ich versuche, um Spalte Menge Wert, erhalte ich eine Fehlermeldung, Klagen diese Spalte ist nicht Teil des BAPIEBANC. Aber die Spalte ist sichtbar in BAPIEBANC geben.
- jede Konfiguration auf SAP-Seite überprüft werden?
- sollte ich aktiviere alle Felder in JCo-Seite? wenn ja, wie
Bitte beachten Sie, dass mein wissen über SAP ist sehr begrenzt.
Warten auf eine Experten-Antwort.
Dank.
- Hallo, Wie Sie mehrere raw-jco-Tabelle ? Über RFC
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, Sie sollten einen Blick auf die SAP JCo-Dokumentation, z.B.
http://help.sap.com/saphelp_nw04/helpdata/en/6f/1bd5c6a85b11d6b28500508b5d5211/content.htm
Bezüglich Ihrer code:
Wenn Sie es nicht mögen, wenn man mit der mehr oder weniger komplizierten und ausführlichen JCo-API, versuchen Sie es mit Hibersap, das gibt Ihnen eine viel bessere Programmierung Modell, die beim Aufruf von Funktionen in SAP ERP: http://hibersap.org.
Allerdings werden Sie noch brauchen, ein grundlegendes Verständnis wie SAP-Funktionsbausteine arbeiten technisch (wie z.B. parameter-Typen oder Datentypen) als auch auf die domain-spezifischen Modell, das liegt hinter Ihnen (in Ihrem Fall die Erstellung einer Banf). I. e. Sie müssen möglicherweise die Kommunikation mit dem SAP-Experten.
Hier Hinzugefügt habe ich 2 Arten von Platzhaltern :
insertval()
Funktion für benutzerdefinierte Modul befindet sich im sap mit Hilfe von abap-ProgrammiererIch hoffe, dieser code wird Ihnen helfen, es funktionierte für mich.