SAP Jobsuche bei DV-Treff
Chris1984
  • Chris1984
  • SAP Forum - Neuling Thema Starter
vor 14 Jahre
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";
        }
       
    }
Horst_kevin
vor 14 Jahre
Hi Chris,

versuch doch mal, die Menge bei den Einteilungen zu übergeben, also zusätzlich order_schedules_in und order_schedules_inx, da gibt es ein Feld req_qty.

Viel Erfolg


4.6 C

SAP_ALL ohne HR