Holla,
ich habe ein Problem mit dem BAPI "BAPI_SALESORDER_CREATEFROMDAT2"; und zwar versuche ich mit JCo einen Kundenauftrag in SAP einzuspeisen. Das funktioniert auch soweit ganz gut: Die Verbindung zu SAP klappt, der Auftrag wird angelegt, ich erhalte die Auftragsnummer usw.
Wenn ich mir dann den Auftrag mit VA03 anschaue, muss ich feststellen, dass das Feld COMP_QUANT bei den Positionen irgendwie nicht übernommen wurde. Soll heissen, dass statt der 30 Stück des Produktes eine Bestellmenge von 0 Stück eingetragen wurde. Ein System.out.println() in der for-Schleife der Order hat mir ausgegeben, dass die Bestellmenge bei den Positionen in der "ArrayList<Order> orders" tatsächlich 30 ist.
Ich habe unten mal den Src eingefügt. Vielleicht kann mir ja wer helfen. :-)
Viele Grüße
public String createKa(String type, String salesOrg, String distriChain, String divi, String reqDate, String purchDate, String purchNo, String debitorNo, ArrayList<Order> orders)
{
try
{
myFunction = this.createFunction("BAPI_SALESORDER_CREATEFROMDAT2", SAPConnection);
// Partner information - Note that this is a table parameter
JCO.Table ORDER_PARTNERS = myFunction.getTableParameterList()
.getTable("ORDER_PARTNERS");
ORDER_PARTNERS.appendRow();
ORDER_PARTNERS.setValue("AG", "PARTN_ROLE");
ORDER_PARTNERS.setValue(debitorNo, "PARTN_NUMB");
// ORDER_HEADER_INX - Structure parameter
JCO.Structure order_header_inx = myFunction
.getImportParameterList().getStructure("ORDER_HEADER_INX");
order_header_inx.setValue("I", "UPDATEFLAG");
order_header_inx.setValue("X", "DOC_TYPE");
order_header_inx.setValue("X", "SALES_ORG");
order_header_inx.setValue("X", "DISTR_CHAN");
order_header_inx.setValue("X", "DIVISION");
order_header_inx.setValue("X", "PURCH_NO_C");
order_header_inx.setValue("X", "REQ_DATE_H");
order_header_inx.setValue("X", "PURCH_DATE");
// ORDER_HEADER_IN - Structure parameter
JCO.Structure order_header_in = myFunction
.getImportParameterList().getStructure("ORDER_HEADER_IN");
order_header_in.setValue(type, "DOC_TYPE");
order_header_in.setValue(salesOrg, "SALES_ORG");
order_header_in.setValue(distriChain, "DISTR_CHAN");
order_header_in.setValue(divi, "DIVISION");
order_header_in.setValue(purchNo, "PURCH_NO_C");
order_header_in.setValue(reqDate,"REQ_DATE_H");
order_header_in.setValue(purchDate,"PURCH_DATE");
// Item data - Table parameter.
JCO.Table ORDER_ITEMS_INX = myFunction.getTableParameterList()
.getTable("ORDER_ITEMS_INX");
JCO.Table ORDER_ITEMS_IN = myFunction.getTableParameterList()
.getTable("ORDER_ITEMS_IN");
for (int i = 0; i < orders.size(); i++) {
if (orders.get(i) != null) {
ORDER_ITEMS_INX.appendRow();
ORDER_ITEMS_IN.appendRow();
ORDER_ITEMS_INX.setValue((i+1)*10, "ITM_NUMBER");
ORDER_ITEMS_IN.setValue((i+1)*10, "ITM_NUMBER");
ORDER_ITEMS_INX.setValue("X", "MATERIAL");
ORDER_ITEMS_IN.setValue(orders.get(i).materialNo, "MATERIAL");
ORDER_ITEMS_INX.setValue("X", "COMP_QUANT");
ORDER_ITEMS_IN.setValue(orders.get(i).qty, "COMP_QUANT");
ORDER_ITEMS_INX.setValue("X", "UPDATEFLAG");
}
}
SAPConnection.execute(myFunction);
Function myCommitFunction = this.createFunction("BAPI_TRANSACTION_COMMIT", SAPConnection);
SAPConnection.execute(myCommitFunction);
String returnVal="";
// Return
JCO.Table jcoReturn = myFunction.getTableParameterList().getTable(
"RETURN");
for (int i = 0; i < jcoReturn.getNumRows(); i++) {
jcoReturn.setRow(i);
returnVal += jcoReturn.getField("TYPE").getValue() + " "
+ jcoReturn.getField("MESSAGE").getValue()+"\n";
}
// Sales document number
JCO.Field SalesDocumentField = myFunction.getExportParameterList()
.getField("SALESDOCUMENT");
String SalesDocumentString = SalesDocumentField.getValue()
.toString();
return SalesDocumentString;
} catch (Exception e) {
e.printStackTrace();
return "Error";
}
}